package utstech.parent;
public abstract class AbstractDeveloper {
protected String genreGame = "RPG";
public abstract String getDeveloperInfo
();
}
package utstech.parent;
public class Developer extends AbstractDeveloper {
private String[] membersName = {"Muhajir", "Rifki lutfiansyah", "Rendy Satria", "Qalwani", "Gibran"};
protected short numOfMembers;
protected double memberPerformance;
public Developer() {
System.out.println("Ini lah Karya terbaru Kami");
}
public Developer(short inputNumOfMembers, double inputMemberPerformance) {
this.numOfMembers = inputNumOfMembers;
this.memberPerformance = inputMemberPerformance;
}
private double getPerformance() {
return memberPerformance;
}
public void setPerformance(int input) {
this.memberPerformance = (double) input;
}
protected void developerInfo() {
System.out.println("Projek yang akan kami buat merupakan genre " + genreGame);
System.out.println("Tim kami terdiri dari " + numOfMembers + " orang");
System.out.println("\t\t\t\t\t terdiri dari");
for (String member : membersName) {
System.out.println("\t\t" + member);
}
System.out.println();
}
@Override
public String getDeveloperInfo() {
return "Developer info: " + genreGame + "
, Members: " + numOfMembers;
}
}
package utstech.parent;
public class Game extends Developer {
private String gameTitle;
protected double ratingGame;
protected short numberOfBuyer;
private final double gameCost = 0.03;
protected boolean profit;
public Game(short numOfMembers, double memberPerformance, String inputGameTitle, short inputNumberOfBuyer) {
super(numOfMembers, memberPerformance);
this.gameTitle = inputGameTitle;
this.numberOfBuyer = inputNumberOfBuyer;
}
public double getRating() {
if (numberOfBuyer > 8000) {
ratingGame = 5;
} else if (numberOfBuyer > 4000) {
ratingGame = 4;
} else if (numberOfBuyer > 3000) {
ratingGame = 3;
} else if (numberOfBuyer > 1000) {
ratingGame = 2;
} else {
ratingGame = 1;
}
return ratingGame;
}
public void setGameTitle(String inputTitle) {
this.gameTitle = inputTitle;
}
public boolean isProfit() {
double total = (double) numberOfBuyer * gameCost;
profit = total > 80;
return profit;
}
public void gameInfo() {
super.developerInfo();
System.out.println("Game = " + gameTitle);
System.out.println("Dengan rating = " + getRating());
}
@Override
public String getDeveloperInfo() {
return super.getD
eveloperInfo() + ", Game: " + gameTitle;
}
}
package utstech.parent;
public class Game extends Developer {
private String gameTitle;
protected double ratingGame;
protected short numberOfBuyer;
private final double gameCost = 0.03;
protected boolean profit;
public Game(short numOfMembers, double memberPerformance, String inputGameTitle, short inputNumberOfBuyer) {
super(numOfMembers, memberPerformance);
this.gameTitle = inputGameTitle;
this.numberOfBuyer = inputNumberOfBuyer;
}
public double getRating() {
if (numberOfBuyer > 8000) {
ratingGame = 5;
} else if (numberOfBuyer > 4000) {
ratingGame = 4;
} else if (numberOfBuyer > 3000) {
ratingGame = 3;
} else if (numberOfBuyer > 1000) {
ratingGame = 2;
} else {
ratingGame = 1;
}
return ratingGame;
}
public void setGameTitle(String inputTitle) {
this.gameTitle = inputTitle;
}
public boolean isProfit() {
double total = (double) numberOfBuyer * gameCost;
profit = total > 80;
return profit;
}
public void gameInfo() {
super.developerInfo();
System.out.println("Game = " + gameTitle);
System.out.println("Dengan rating = " + getRating());
}
@Override
public String getDeveloperInfo() {
return super.getD
eveloperInfo() + ", Game: " + gameTitle;
}
}
package utstech.child;
import utstech.parent.Game;
public class GamePlatform extends Game implements GameInterface {
private String namePlatform;
private double userExperience;
public GamePlatform(short numOfMembers, double memberPerformance, String gameTitle, short numberOfBuyer, String inputGamePlatform, double inputExperience) {
super(numOfMembers, memberPerformance, gameTitle, numberOfBuyer);
this.namePlatform = inputGamePlatform;
this.userExperience = inputExperience;
}
@Override
public void platformInfo() {
super.gameInfo();
System.out.println("Dapat dimainkan dengan platform " + namePlatform);
if (userExperience >= 4 && userExperience <= 5) {
System.out.println("Game ini sangat bagus");
} else if (userExperience >= 2.5) {
System.out.println("Game ini cukup baik");
} else {
System.out.println("Game tidak bagus");
}
}
@Override
public void showMessage(String message) {
System.out.println(message);
}
@Override
public String getGameInfo() {
return "Game Platform: " + namePlatform + ", User Experience: " + userExperience;
}
@Override
public double calculateCost(double baseCost) {
return baseCost + 50;
}
}
package utstech.child;
import utstech.parent.Game;
public class MovieAdaption extends Game implements GameInterface {
private String actor;
private short memberOfStaff;
private double ratingMovie;
private double userExperience;
public MovieAdaption(short numOfMembers, double memberPerformance, String gameTitle, short numberOfBuyer, String inputActor, short inputMemberOfStaff, double inputRatingMovie) {
super(numOfMembers, memberPerformance, gameTitle, numberOfBuyer);
this.actor = inputActor;
this.memberOfStaff = inputMemberOfStaff;
this.ratingMovie = inputRatingMovie;
}
@Override
public void movieInfo() {
super.gameInfo();
System.out.println("Actor: " + actor + ", Staff Members: " + memberOfStaff);
if (userExperience >= 4 && userExperience <= 5) {
System.out.println("Game ini sangat bagus");
} else if (userExperience >= 2.5) {
System.out.println("Game ini cukup baik");
} else {
System.out.println("Game tidak bagus");
}
}
@Override
public void showMessage(String message) {
System.out.println(message);
}
@Override
public String getGameInfo() {
return "Movie Adaption: " + actor + ", Rating Movie: " + ratingMovie;
}
@Override
public double calculateCost(double baseCost
) {
return baseCost + 30;
}
}
package utstech.child;
import utstech.parent.Game;
public class MovieAdaption extends Game implements GameInterface {
private String actor;
private short memberOfStaff;
private double ratingMovie;
private double userExperience;
public MovieAdaption(short numOfMembers, double memberPerformance, String gameTitle, short numberOfBuyer, String inputActor, short inputMemberOfStaff, double inputRatingMovie) {
super(numOfMembers, memberPerformance, gameTitle, numberOfBuyer);
this.actor = inputActor;
this.memberOfStaff = inputMemberOfStaff;
this.ratingMovie = inputRatingMovie;
}
@Override
public void movieInfo() {
super.gameInfo();
System.out.println("Actor: " + actor + ", Staff Members: " + memberOfStaff);
if (userExperience >= 4 && userExperience <= 5) {
System.out.println("Game ini sangat bagus");
} else if (userExperience >= 2.5) {
System.out.println("Game ini cukup baik");
} else {
System.out.println("Game tidak bagus");
}
}
@Override
public void showMessage(String message) {
System.out.println(message);
}
@Override
public String getGameInfo() {
return "Movie Adaption: " + actor + ", Rating Movie: " + ratingMovie;
}
@Override
public double calculateCost(double baseCost
) {
return baseCost + 30;
}
}
package utstech.child;
public interface GameInterface {
void showMessage(String message);
String getGameInfo();
double calculateCost(double baseCos
t);
}
import utstech.child.GamePlatform;
import utstech.child.MovieAdaption;
import utstech.parent.Developer;
import utstech.parent.Game;
import java.util.ArrayList;
import java.util.List;
public class App {
public static void main(String[] args) {
// Create objects from subclasses
GamePlatform gamePlatform = new GamePlatform((short) 5, 8.5, "GameTitle1", (short) 5000, "PC", 4.5);
MovieAdaption movieAdaption = new MovieAdaption((short) 5, 8.5, "GameTitle2", (short) 3000, "Actor1", (short) 10, 4.8);
gamePlatform.platformInfo();
movieAdaption.movieInfo();
// Collection of superclass objects
List<Developer> developers = new ArrayList<>();
developers.add(new Developer((short) 5, 8.5));
developers.add(new Game((short) 5, 8.5, "GameTitle3", (short) 2000));
for (Developer developer : developers) {
System.out.println(developer.getDeveloperInf
o());
}
}
}