Nama: Muhammad Risyad Himawan Putra
NRP: 5025231205
Kelas: Pemrograman Berbasis Obyek (G)
ETS
1. Apa yang dimaksud dengan inheritance/perwarisan dalam OOP? Berikan contoh penerapan pewarisan dengan menunjukkan hubungan antara kelas induk dan kelas turunan.
Inheritance atau pewarisan merupakan pilar fundamental OOP di java di mana suatu class diperbolehkan untuk mewariskan fitur-fitur (atribut dan metode) dari class yang lainnya. Ini memungkinkan kita untuk menggunakan ulang metode dan atribut dari class lainnya sehingga mempromosikan penggunaan ulang kode. Contoh penerapan inheritance:
Class WeaponInventory mewarisi atribut itemName dan itemCount dari kelas induk Inventory sehingga kita dapat membuat objek WeaponInventory dan menggunakan atribut dan method yang didefinisikan di Inventory.
2. Apakah fungsi konstruktor dalam sebuah kelas atau obyek? Buatlah kelas Book yang memiliki dua atribut, yaitu judul, penulisan tahun terbit, nama penerbit, kategori buku. Tambahkan konstruktor untuk menginisialisasi atribut tersebut dan tambahkan metode printDetails() untuk mencetak detail buku.
Sebuah konstruktor di Java berfungsi untuk menginisialisasi objek yang telah dibuat dari class. Konstruktor bisa digunakan untuk memberikan nilai awalan dari atribut sebuah objek. Berikut implementasinya di java.
class Book {private String judul;private int tahunTerbit;private String namaPenerbit;private String kategori;public Book(String judul, int tahunTerbit, String namaPenerbit, String kategori) {this.judul = judul;this.tahunTerbit = tahunTerbit;this.namaPenerbit = namaPenerbit;this.kategori = kategori;}public void printDetails() {System.out.println("Judul Buku: " + judul);System.out.println("Tahun Terbit: " + tahunTerbit);System.out.println("Penerbit: " + namaPenerbit);System.out.println("Kategori: " + kategori);}}public class Main {public static void main(String[] args) {Book buku1 = new Book("BlueJ Introduction", 2012, "Waterloo", "Teknologi");Book buku2 = new Book("10 Resep Wajib saat Lebaran", 2018, "Gramedia", "Masakan");buku1.printDetails();System.out.println();buku2.printDetails();}}
3. Studi kasus Parking Ticket Machine
Buatlah kelas bernama Parking Ticket Machine yang mensimulasikan mesin tiket parkir dengan fitur berikut:
Atribut:
- balance (jumlah nominal uang yang dimasukkan / di tap oleh pengguna).
- ticket Price (harga tiket parkir per jam, misalnya Rp5.000).
- ticketTime (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.
4. Buatlah Desain kelas untuk aplikasi FoodOrder yang menyimpan data pemesanan makanan di sebuah restoran. Setiap pesanan memiliki atribut menultems (daftar menu), totalPrice, dan isPaid. Implementasikan perilaku berikut: (Gunakan library java util, arraylist)
a. Gambarkan Class Diagramnya
b. Implementasikan kodenya
Main.java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);FoodOrder order = new FoodOrder();MenuItem[] menuItems = {new MenuItem("Nasi Ayam Geprek", 15000),new MenuItem("Nasi Ayam Bakar", 30000),new MenuItem("Nasi Ayam Goreng", 27000),new MenuItem("Es Teh Manis", 4000),new MenuItem("Es Jeruk", 6000)};System.out.println("\n+++ Selamat Datang di Warung Ayam! +++\n");System.out.println("----Daftar Menu----");for (int i = 0; i < menuItems.length; i++) {System.out.println((i + 1) + ". " + menuItems[i].getName() + " - Rp" + menuItems[i].getPrice());}while (true) {System.out.print("Pilih nomor menu (0 untuk selesai): ");int choice = scanner.nextInt();if (choice == 0) {break;} else if (choice > 0 && choice <= menuItems.length) {MenuItem selectedItem = menuItems[choice - 1];order.addMenuItem(selectedItem);System.out.println("Anda telah menambahkan " + selectedItem.getName() + " ke pesanan Anda.");} else {System.out.println("Pilihan tidak valid.");}}scanner.nextLine(); // Tambahkan ini untuk membersihkan sisa newline gara gara nextInt tadi.order.displayOrder();while (true) {System.out.print("\nApakah pesanan sudah sesuai? (bayar/batal): ");String choice = scanner.nextLine();if (choice.equals("bayar")) {order.markAsPaid();break;} else if (choice.equals("batal")) {System.out.println("Pesanan dibatalkan.");break;} else {System.out.println("Pilihan tidak valid. Coba lagi.");}}scanner.close();}}
FoodOrder.java
import java.util.ArrayList;public class FoodOrder {private ArrayList<MenuItem> menuItems;private int totalPrice;private boolean isPaid;public FoodOrder() {menuItems = new ArrayList<>();totalPrice = 0;isPaid = false;}public void addMenuItem(MenuItem item) {menuItems.add(item);totalPrice += item.getPrice();}public void displayOrder() {System.out.println("----Pesanan Anda----");for (MenuItem item : menuItems) {System.out.println(item.getName() + " - Rp" + item.getPrice());}System.out.println("Total Harga: Rp" + totalPrice);}public void markAsPaid() {isPaid = true;System.out.println("Pesanan telah dibayar.");}public boolean isPaid() {return isPaid;}public int getTotalPrice() {return totalPrice;}}
MenuItem.java
public class MenuItem {private String name;private int price;public MenuItem(String name, int price) {this.name = name;this.price = price;}public String getName() {return name;}public int getPrice() {return price;}}
Class ini yang menginisialisasi atribut atribut lalu mereturn sesuai data atribut tersebut (constructor).
No comments:
Post a Comment