ETS PBO

Nama: Aryaka Leorgi Eprideka

NRP: 5025231117

Kelas: PBO G


Soal ETS PBO:


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



3. click kanan di class dan pilih insert money terlebih dahulu sebagai contoh aku masukkan RP12.000
4. setelah itu click kanan issue ticket untuk mendapatkan tiketnya

5. jika ingin melihat sisa saldo yang di machine maka click get balanced dan jika ingin melihat berapa jam durasi ticketnya click gettimepurchase






4. Buatlah Desain kelas untuk aplikasi FoodOrder yang menyimpan data pemesanan makanan di sebuah restoran. Setiap pesanan memiliki atribut menultems (daftar menu), total Price, dan isPaid. Implementasikan perilaku berikut: (Gunakan library java util, arraylist)


a. Gambarkan Class Diagramnya


b. Implementasikan kodenya


source code: github

a. Class Diageram
b. Implementasi kode

1. click kanan main dan pilih orderfood()
2. ketik angka sesuai fungsi yang ingin digunakan
                  

link video demo youtube: https://youtu.be/0kIUSX9mmRc









Komentar

Postingan populer dari blog ini

Tugas Pertemuan 2 PPB

Tugas Pertemuan 3 PPB

Tugas Pertemuan 1 PPB