Game.java
import java.time.LocalDate;
publicclass Game {
Stringname;
LocalDatereleaseDate;
public Game(Stringname, LocalDatereleaseDate) {
super();
this.name =name;
this.releaseDate =releaseDate;
}
public String getName() {
returnname;
}
publicvoid setName(Stringname) {
this.name =name;
}
public LocalDate getReleaseDate() {
returnreleaseDate;
}
publicvoid setReleaseDate(LocalDatereleaseDate) {
this.releaseDate =releaseDate;
}
@Override
public String toString() {
return"Game [name=" +name +", releaseDate=" +releaseDate +"]";
}
}
ConsoleGame.XXXX
XXXXXX java.XXXX.XXXXXXXXX;
XXXXXXXXXXX ConsoleGameXXXXXXX Game{
StringXXXXXXXXXXX;
public ConsoleGame(StringXXXX, XXXXXXXXXXXXXXXXXXXX, StringXXXXXXXXXXX) {
XXXXX(name,XXXXXXXXXXX);
XXXX.consoleName =consoleName;
}
XXXXXX XXXXXX getConsoleName() {
XXXXXXXXXXXXXXXXX;
}
publicXXXX XXXXXXXXXXXXXX(StringconsoleName) {
this.XXXXXXXXXXX =XXXXXXXXXXX;
}
@XXXXXXXX
XXXXXX String toString() {
return"Console XXXX: Name: " +this.getName() +"Release XXXX: "+this.getReleaseDate()+"XXXXX: "+consoleName;
}
}
MobileGame.XXXX
import XXXX.XXXX.XXXXXXXXX;
publicXXXXX MobileGameXXXXXXX Game{
StringXXXXXXXXXXXXXXX;
@XXXXXXXX
public XXXXXX XXXXXXXX() {
return"Mobile game: XXXX: " +XXXX.XXXXXXX() +"Release XXXX: "+this.getReleaseDate()+"Store: "+XXXXXXXXXXXXXXX;
}
XXXXXX XXXXXX getOperatingSystem() {
returnoperatingSystem;
}
XXXXXXXXXX setOperatingSystem(XXXXXXXXXXXXXXXXXXXXX) {
XXXX.XXXXXXXXXXXXXXX =operatingSystem;
}
public XXXXXXXXXX(XXXXXXXXXX, XXXXXXXXXreleaseDate, StringXXXXXXXXXXXXXXX) {
XXXXX(name,releaseDate);
XXXX.XXXXXXXXXXXXXXX =operatingSystem;
}
}
PCGame.java
XXXXXX java.time.LocalDate;
publicclass XXXXXXXXXXXXX Game {
Stringstore;
@XXXXXXXX
XXXXXX String XXXXXXXX() {
XXXXXX"XX game: XXXX: " +XXXX.XXXXXXX() +" XXXXXXX XXXX: "+XXXX.XXXXXXXXXXXXXX()+"Store: "+store;
}
public String XXXXXXXX() {
XXXXXXXXXXX;
}
XXXXXXvoid XXXXXXXX(StringXXXXX) {
XXXX.XXXXX =store;
}
XXXXXX XXXXXX(XXXXXXXXXX, XXXXXXXXXXXXXXXXXXXX, StringXXXXX) {
super(name,releaseDate);
this.store =XXXXX;
}
}
Player.XXXX
XXXXXX java.XXXX.ArrayList;
XXXXXX XXXX.XXXX.XXXXXXX;
import java.XXXX.XXXXXXXXXX;
import java.XXXX.XXXX;
XXXXXX XXXX.XXXX.Map;
XXXXXX XXXXX XXXXXX {
XXXXXX XXXX;
XXXX&XX;Game&XX; favGames = XXX XXXXXXXXXX&XX;XXXX>();
XXXXXX Player(String XXXX, XXXX<XXXX&XX; favGames) {
XXXXX();
this.name = name;
this.favGames = favGames;
}
public XXXXXX XXXXXXX() {
return XXXX;
}
XXXXXX XXXX XXXXXXX(XXXXXX name) {
this.name = XXXX;
}
XXXXXX XXXX&XX;Game> XXXXXXXXXXX() {
return XXXXXXXX;
}
public XXXX setFavGames(List<Game> favGames) {
XXXX.XXXXXXXX = favGames;
}
@XXXXXXXX
XXXXXX XXXXXX XXXXXXXX() {
XXXXXX "Player [XXXX=" + name + ", XXXXXXXX=" + XXXXXXXX + "]";
}
/*
* A method XX modify XXX XXXXXXXXX system XXXX XX a XXXXXXXX mobile game XXXX
*/
XXXXXX XXXX modifyOperatingSystem(XXXXXX name, XXXXXX XX) {
if (this.XXXXXXXX != XXXX &XXX;& !XXXX.XXXXXXXX.XXXXXXX()) {
for (Game game : XXXX.favGames) {
if (game.XXXXXXX().XXXXXX(XXXX)) {
((XXXXXXXXXX) game).setOperatingSystem(os);
}
}
}
}
/*
* A method to find and return the total XXXXXX of XXXXX XX each XXXXXXXX (XX,
* XXXXXXX and XXXXXX games).
*/
public XXX&XX;String, XXXXXXX&XX; XXXXXXXXXX() {
XXX&XX;String, XXXXXXX> XXXXX = XXX HashMap&XX;XXXXXX, XXXXXXX&XX;();
count.XXX("PCGame", X);
count.XXX("MobileGame", 0);
count.XXX("ConsoleGame", 0);
if (favGames != null &&XXX; !this.XXXXXXXX.XXXXXXX()) {
XXX (Game XXXX : this.XXXXXXXX) {
if (game XXXXXXXXXX PCGame) {
int c = count.get("XXXXXX") + 1;
XXXXX.XXX("XXXXXX", c);
} XXXX if (game instanceof XXXXXXXXXX) {
XXX c = count.get("MobileGame") + 1;
count.XXX("XXXXXXXXXX", c);
} else XX (XXXX instanceof ConsoleGame) {
XXX c = XXXXX.get("ConsoleGame") + 1;
count.XXX("XXXXXXXXXXX", c);
}
}
}
return XXXXX;
}
/*
* A method to reload a XXXXXXX game XX a XXXXXXXX XXXX as PC game which is
* downloadable from a XXXXXXX digital XXXXX in the list XX games. (
*/
public void XXXXXXXXXXXX(XXXXXX XXXX, String downloadStore) {
XX (XXXX.XXXXXXXX != XXXX && !this.XXXXXXXX.XXXXXXX()) {
XXX (int i = 0; i &XX; XXXX.favGames.size(); i++) {
XX (XXXX.XXXXXXXX.get(i).XXXXXXX().equals(XXXX)) {
if (this.favGames.get(i) XXXXXXXXXX ConsoleGame) {
ConsoleGame cGame = (XXXXXXXXXXX) this.XXXXXXXX.XXX(i);
this.favGames.XXXXXX(i);
this.XXXXXXXX.add(XXX XXXXXX(XXXXX.XXXXXXX(), cGame.XXXXXXXXXXXXXX(), XXXXXXXXXXXXX));
}
}
}
}
}
}
XXXXXXXXX.java
import XXXX.time.XXXXXXXXX;
XXXXXX XXXX.XXXX.ArrayList;
import java.XXXX.LinkedList;
XXXXXX XXXX.util.XXXX;
import XXXX.XXXX.Map;
XXXXXX XXXXX TestClass {
public static XXXX main(String[] args) {
List&XX;Game&XX; XXXXX=new LinkedList&XX;>();
games.add(XXX PCGame("XXXXXXX Strike",LocalDate.parse("2003-XX-XX"),"Steam"));
XXXXX.add(XXX XXXXXXXXXXX("XXXXXXXX",LocalDate.XXXXX("XXXX-XX-25"),"XXX"));
games.add(new XXXXXXXXXXX("XXXXXXXXX",XXXXXXXXX.XXXXX("2016-XX-24"),"PS4"));
XXXXX.add(XXX XXXXXX("XXXX Of Duty XX",LocalDate.XXXXX("XXXX-XX-25"),"Blizzard"));
XXXXX.add(new XXXXXXXXXX("BupG",XXXXXXXXX.XXXXX("2017-XX-23"),"XXXXXXX"));
XXXXX.add(new XXXXXX("Minecraft",LocalDate.XXXXX("XXXX-XX-XX"),"Microsoft"));
List<Player&XX; XXXXXXX=XXX ArrayList<Player>();
players.add(new XXXXXX("XXX",XXXXX));
List<XXXX&XX; games1=XXX XXXXXXXXXX&XX;&XX;();
games1.add(new XXXXXXXXXX("XXXXX of XXXXX",LocalDate.parse("2012-XX-02"),"IOS"));
games1.add(XXX XXXXXXXXXX("XXXXX XXXXX",LocalDate.XXXXX("XXXX-04-01"),"Android"));
XXXXXX.add(new XXXXXXXXXX("XXXXXX XXXX",XXXXXXXXX.parse("XXXX-05-08"),"Android"));
players.add(new XXXXXX("XXXX",games1));
List<XXXX> XXXXXX=new LinkedList<&XX;();
games2.add(XXX XXXXXXXXXXX("XXXX XX Duty XX",XXXXXXXXX.XXXXX("XXXX-XX-25"),"Steam"));
games2.add(new XXXXXXXXXX("XXXX",XXXXXXXXX.parse("XXXX-03-23"),"Android"));
games2.add(new XXXXXX("XXXXXXXX XXXX",LocalDate.parse("2013-XX-13"),"Microsoft"));
XXXXXXX.add(new XXXXXX("Sami",XXXXXX));
/*
* XXXXX and XXXX a XXXXXX to XXXXX a full report XXXXXXX a XXXX XX XXXXXXX XXX XXX details XX
their XXXXXXXX games
*/
XXXXXXXX(XXXXXXX);
/*
* XXXXX XXX XXXX a method to XXXXX XXX each player, the total XXXXXX of games of each
category
*/
printPlayerDetails(players);
/*
* Ali started to XXXX XXXXXXXXX XX PC and XXXXXXX XXXXX the XXXXXXX to XXXX it. Call your
XXXXXX in Question X XX XXXXXX XXX XXXX of XXXXXXXX games XX XXXXXXXX. XX-XXXXX Overwatch
as PC XXXX.
*/
XXXXXXX.get(0).XXXXXXXXXXXX("Overwatch", "XXXXX");
/*
* Dragon city XX available XX XXX XXXXXXX, Rami switched to XXXX XXXX game on his XXX
XXXXXX. Update XXX XXXX XX the XXXXXXXXX system in his list using XXXX XXXXXX in Question
3
*/
XXXXXXX.XXX(X).modifyOperatingSystem("Dragon City", "IOS");
XXXXXXXX(XXXXXXX);
}
static XXXX XXXXXXXXXXXXXXXXXX(XXXX&XX;Player> XXXXXXX) {
XXX(Player XXXXXX:players) {
System.out.println("XXXXXX XX GameConsole Game XXXXXX XXXX");
XXX&XX;String,XXXXXXX> XXXX=player.XXXXXXXXXX();
System.out.XXXXXXX(player.getName()+""+XXXX.get("PCGame")+""+data.XXX("XXXXXXXXXXX")+""+XXXX.get("XXXXXXXXXX"));
XXXXXX.out.XXXXXXX();
}
}
XXXXXX void printAll(List&XX;Player> players) {
for(XXXXXX XXXXXX:players) {
System.out.println("Player: "+player.XXXXXXX());
for(XXXX XXXX:player.XXXXXXXXXXX()) {
System.out.println(game.XXXXXXXX());
}
XXXXXX.out.println();
}
}
}
OUTPUT
Images Not Shown
XXXXXX: XXX
XX game: XXXX: Counter Strike XXXXXXX Date: 2003-XX-12Store: XXXXX
Console XXXX: XXXX: XXXXXXXXXXXXXXX Date: XXXX-XX-XXXXXXX: PS4
XXXXXXX game: XXXX: OverwatchRelease XXXX: XXXX-XX-24Store: XXX
XX game: Name: Call XX XXXX MW XXXXXXX Date: XXXX-10-XXXXXXX: XXXXXXXX
XXXXXX game: Name: BupGRelease XXXX: 2017-XX-23Store: Android
PC game: XXXX: XXXXXXXXX Release Date: XXXX-XX-XXXXXXX: Microsoft
XXXXXX: Rami
Mobile game: Name: XXXXX XX XXXXXXXXXXXX Date: XXXX-08-XXXXXXX: XXX
XXXXXX XXXX: XXXX: XXXXX XXXXXXXXXXXX XXXX: XXXX-XX-XXXXXXX: XXXXXXX
Mobile XXXX: Name: XXXXXX CityRelease XXXX: 2012-05-XXXXXXX: Android
Player: Sami
XXXXXXX XXXX: XXXX: XXXX XX Duty MWRelease XXXX: XXXX-XX-XXXXXXX: XXXXX
XXXXXX game: XXXX: BupGRelease Date: 2017-XX-XXXXXXX: Android
XX game: XXXX: XXXXXXXX XXXX Release Date: XXXX-08-XXXXXXX: Microsoft
Player XX GameConsole Game XXXXXX XXXX
XXXXXX
XXXXXX XX XXXXXXXXXXX XXXX Mobile Game
XXXXXXX
Player XX GameConsole XXXX Mobile XXXX
Sami111
XXXXXX: XXX
XX XXXX: XXXX: Counter Strike XXXXXXX XXXX: 2003-09-12Store: Steam
XXXXXXX XXXX: XXXX: XXXXXXXXXXXXXXX Date: XXXX-07-XXXXXXX: PS4
PC game: Name: XXXX XX XXXX XX XXXXXXX Date: 2019-10-XXXXXXX: XXXXXXXX
XXXXXX game: XXXX: BupGRelease Date: XXXX-03-23Store: XXXXXXX
PC game: XXXX: XXXXXXXXX XXXXXXX XXXX: 2009-XX-XXXXXXX: XXXXXXXXX
PC XXXX: Name: XXXXXXXXX Release XXXX: 2016-XX-XXXXXXX: Steam
XXXXXX: Rami
Mobile XXXX: XXXX: Clash of XXXXXXXXXXXX XXXX: XXXX-XX-XXXXXXX: IOS
XXXXXX XXXX: Name: XXXXX RoyalRelease XXXX: 2016-XX-01Store: XXXXXXX
Mobile XXXX: Name: XXXXXX XXXXXXXXXXX XXXX: 2012-XX-08Store: IOS
XXXXXX: Sami
XXXXXXX game: XXXX: XXXX XX Duty XXXXXXXXX Date: XXXX-XX-25Store: Steam
XXXXXX XXXX: XXXX: BupGRelease XXXX: XXXX-03-23Store: Android
XX game: XXXX: Geometry Dash Release Date: 2013-08-13Store: Microsoft
">