Pertemuan 12 OOP - Latihan Polymorphism Plane Ticket
Nama : Kadek Fajar Pramartha Yasodana
NRP : 5025231185
Kelas : PBO A
Latihan Polymorphism Plane Ticket
Pada latihan polymorphism ini saya membuat satu superclass Ticket yang nantinya akan di inherit pada class lainnya seperti EconomyTicket, BusinessTicket, FirstClassTicket. Ticket akan memiliki base price yang akan didapatkan melalui metode calculateFare. Nantinya child class akan mengoverride fungsi itu untuk memberikan diskon atau tambahan harga sesuai dari base price.
Source Code : GitHub
Diagram Class
Ticket.java
import java.util.ArrayList;
import java.util.List;
public abstract class Ticket {
private float baseFarePrice = 100;
protected int bagageLimit = 2;
protected List<String> otherFacilities = new ArrayList<>();
protected String destination;
public Ticket(String destination)
{
this.destination = destination;
}
public float calculateFare()
{
return baseFarePrice;
}
protected abstract String getHeader();
public String getInformation()
{
String info = getHeader();
info += "\nDestination: " + destination;
info += "\nPrice: " + calculateFare() + "$";
info += "\nBagage Limit: " + bagageLimit + "kg";
if(otherFacilities.size() > 0)
{
info += "\nOther Facilities:";
for(int i = 0; i < otherFacilities.size(); i++)
{
info += "\n" + (i + 1) + ". " + otherFacilities.get(i);
}
}
return info;
}
public static String makeHeader(String header)
{
return "-------------------------------[" + header + "]-------------------------------";
}
}
import java.util.List;
public abstract class Ticket {
private float baseFarePrice = 100;
protected int bagageLimit = 2;
protected List<String> otherFacilities = new ArrayList<>();
protected String destination;
public Ticket(String destination)
{
this.destination = destination;
}
public float calculateFare()
{
return baseFarePrice;
}
protected abstract String getHeader();
public String getInformation()
{
String info = getHeader();
info += "\nDestination: " + destination;
info += "\nPrice: " + calculateFare() + "$";
info += "\nBagage Limit: " + bagageLimit + "kg";
if(otherFacilities.size() > 0)
{
info += "\nOther Facilities:";
for(int i = 0; i < otherFacilities.size(); i++)
{
info += "\n" + (i + 1) + ". " + otherFacilities.get(i);
}
}
return info;
}
public static String makeHeader(String header)
{
return "-------------------------------[" + header + "]-------------------------------";
}
}
EconomyTicket.java
public class EconomyTicket extends Ticket {
public EconomyTicket(String destination)
{
super(destination);
}
@Override
public float calculateFare() {
return super.calculateFare() * 0.9f;
}
@Override
protected String getHeader() {
return makeHeader("Economy");
}
}
public EconomyTicket(String destination)
{
super(destination);
}
@Override
public float calculateFare() {
return super.calculateFare() * 0.9f;
}
@Override
protected String getHeader() {
return makeHeader("Economy");
}
}
BusinessTicket.java
public class BusinessTicket extends Ticket {
public BusinessTicket(String destination)
{
super(destination);
bagageLimit += 3;
otherFacilities.add("Leather seats");
otherFacilities.add("Full course meal");
}
@Override
public float calculateFare() {
return super.calculateFare() * 1.25f;
}
@Override
protected String getHeader() {
return makeHeader("Business");
}
}
public BusinessTicket(String destination)
{
super(destination);
bagageLimit += 3;
otherFacilities.add("Leather seats");
otherFacilities.add("Full course meal");
}
@Override
public float calculateFare() {
return super.calculateFare() * 1.25f;
}
@Override
protected String getHeader() {
return makeHeader("Business");
}
}
FirstClassTicket.java
public class FirstClassTicket extends Ticket {
public FirstClassTicket(String destination)
{
super(destination);
bagageLimit += 4;
otherFacilities.add("Single bedroom");
otherFacilities.add("Luxury full course meal");
otherFacilities.add("Noise reduction walls");
otherFacilities.add("Free champagne");
otherFacilities.add("In bedroom bathroom facility");
}
@Override
public float calculateFare() {
return super.calculateFare() * 1.5f;
}
@Override
protected String getHeader() {
return makeHeader("First Class");
}
}
public FirstClassTicket(String destination)
{
super(destination);
bagageLimit += 4;
otherFacilities.add("Single bedroom");
otherFacilities.add("Luxury full course meal");
otherFacilities.add("Noise reduction walls");
otherFacilities.add("Free champagne");
otherFacilities.add("In bedroom bathroom facility");
}
@Override
public float calculateFare() {
return super.calculateFare() * 1.5f;
}
@Override
protected String getHeader() {
return makeHeader("First Class");
}
}
Main.java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
EconomyTicket economyTicket = new EconomyTicket("Bali");
System.out.println(economyTicket.getInformation());
System.out.println();
BusinessTicket businessTicket = new BusinessTicket("Bali");
System.out.println(businessTicket.getInformation());
System.out.println();
FirstClassTicket firstClassTicket = new FirstClassTicket("Bali");
System.out.println(firstClassTicket.getInformation());
System.out.println();
}
}
public class Main {
public static void main(String[] args) {
EconomyTicket economyTicket = new EconomyTicket("Bali");
System.out.println(economyTicket.getInformation());
System.out.println();
BusinessTicket businessTicket = new BusinessTicket("Bali");
System.out.println(businessTicket.getInformation());
System.out.println();
FirstClassTicket firstClassTicket = new FirstClassTicket("Bali");
System.out.println(firstClassTicket.getInformation());
System.out.println();
}
}
Output
Comments
Post a Comment