1. Apa yang dimaksud dengan inheritance/pewarisan dalam OOP? Berikan contoh penerapan pewarisan dengan menunjukkan hubungan antara kelas induk dan kelas turunan.
Inheritance atau pewarisan adalah mekanisme dimana suatu class dapat mewarisi suatu properti ke class lain sebagai contoh:
class TicketMachine {
public int price;
public TicketMachine(int cost) {
if (cost > 0) {
price = cost;
} else {
price = 100;
System.out.println("Invalid price! Price set to default: 100 cents.");
}
}
public int getPrice() {
return price;
}
}
class BusTicketMachine extends TicketMachine {
public String route;
public BusTicketMachine(int cost, String route) {
super(cost);
this.route = route;
}
public void displayTicketInfo() {
System.out.println("Bus Ticket");
System.out.println("Route: " + route);
System.out.println("Price: " + getPrice() + " cents");
}
}
class TrainTicketMachine extends TicketMachine {
public String destination;
public TrainTicketMachine(int cost, String destination) {
super(cost);
this.destination = destination;
}
public void displayTicketInfo() {
System.out.println("Train Ticket");
System.out.println("Destination: " + destination);
System.out.println("Price: " + getPrice() + " cents");
}
}
public class Main {
public static void main(String[] args) {
BusTicketMachine busTicket = new BusTicketMachine(200, "Downtown");
busTicket.displayTicketInfo();
System.out.println();
TrainTicketMachine trainTicket = new TrainTicketMachine(500, "Central Station");
trainTicket.displayTicketInfo();
}
}
Disini aku mengambil contoh dari ticket machine disini ticket machine sekarang memiliki warisan ke TrainTicketMachine mewarisi atribut dan metode dari TicketMachine. Dan juga menambahkan atribut khusus untuk Turunannya seperti disini ditambahkan destination untuk TrainTicketMachine.
2. Apakah fungsi konstruktor dalam sebuah kelas atau obyek? Buatlah kelas Book yang memiliki dua atribut, yaitu judul, penulis, tahun terbit, nama penerbit, kategori buku. Tambahkan konstruktor untuk menginisialisasi atribut tersebut dan tambahkan metode
printDetails() untuk mencetak detail buku
Fungsi konstruktor dalam sebuah kelas atau objek adalah ketika sebuah objek dari kelas tersebut dibuat maka akan menetapkan nilai awal atribut objek.
public class Book {
private String judul;
private String penulis;
private int tahunTerbit;
private String penerbit;
private String kategori;
// bagian konstruktornya
public Book(String judul, String penulis, int tahunTerbit, String penerbit, String kategori) {
this.judul = judul;
this.penulis = penulis;
this.tahunTerbit = tahunTerbit;
this.penerbit = penerbit;
this.kategori = kategori;
}
public void printDetails() {
System.out.println("Judul: " + judul);
System.out.println("Penulis: " + penulis);
System.out.println("Tahun Terbit: " + tahunTerbit);
System.out.println("Penerbit: " + penerbit);
System.out.println("Kategori: " + kategori);
}
public static void main(String[] args) {
Book buku1 = new Book("Pemrograman Java", "John Doe", 2020, "Penerbit XYZ", "Teknologi");
buku1.printDetails();
}
}
3. Buatlah kelas bemama Parking TicketMachine yang mensimulasikan mesin tiket parkir dengan fitur berikut:
• Atribut:
balance (jumlah nominal uang yang dimasukkan/di tap oleh pengifuna).
ticketPrice (harga tiket parkir per jam, misalnya Rp5.000).
ticket Time (jumlah waktu parkir yang dibeli dalam jam).
• Metode:
• insertMoney(int amount): Menambahkan uang yang dimasukkan.
• issueTicket(): Mengeluarkan tiket berdasarkan uang yang dimasukkan (jika saldo cukup) dan mengatur waktu parkir sesuai dengan saldo.
• getTimePurchased(): Mengembalikan jumlah jam parkir yang telah dibeli.
source code: github
public class ParkingTicketMachine {
private int balance;
private int ticketPrice;
private int ticketTime;
public ParkingTicketMachine(int ticketPrice) {
this.ticketPrice = ticketPrice;
this.balance = 0;
this.ticketTime = 0;
}
public void insertMoney(int amount) {
if (amount > 0) {
balance += amount;
System.out.println("Uang berhasil ditambahkan: Rp" + amount);
} else {
System.out.println("Masukkan jumlah uang yang valid.");
}
}
public void issueTicket() {
if (balance >= ticketPrice) {
ticketTime = balance / ticketPrice;
balance = balance % ticketPrice;
System.out.println("Tiket berhasil dikeluarkan untuk " + ticketTime + " jam parkir.");
} else {
System.out.println("Saldo tidak cukup untuk membeli tiket. Tambahkan lebih banyak uang.");
}
}
public int getTimePurchased() {
return ticketTime;
}
public int getBalance() {
return balance;
}
}
cara kerja:
1. click kanan ParkingTicketMachine dan pilih yang new ParkingTicketMachine.
2. masukkan harga yang dinginkan sebagai contoh di soal yaitu Rp5.000
Komentar
Posting Komentar