Wednesday, November 27, 2024

Tugas Pertemuan 13

Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/Abstract%20Class

Tugas Implementasi Abstraksi Kelas

1. Tuliskan implementasi dari program kecil Abstract Class Mahluk Hidup yang diwariskan kepada manusai, hewan, dan tumbuhan.

Berikut adalah Class Diagram dari program:


Berikut adalah Class MahlukHidup:


Class MahlukHidup memiliki beberapa method yang akan di Override oleh subclass lainnya, seperti breathe dan grow. Class ini akan menjadi dasar dari seluruh subclass lain.

Berikut adalah Subclass Manusia:


Subclass Manusia memiliki method tambahan, yaitu speak.

Berikut adalah Subclass Programmer:


Subclass Programmer melakukan Override pada method dari MahlukHidup dan juga Manusia untuk menghasilkan output uniknya.

Berikut adalah Subclass Doctor:


Subclass Doctor melakukan Override pada method dari MahlukHidup dan juga Manusia untuk menghasilkan output uniknya.

Berikut adalah Subclass Hewan:


Subclass Manusia memiliki method tambahan, yaitu move.

Berikut adalah Subclass Anjing:


Subclass Anjing melakukan Override pada method dari MahlukHidup dan juga Hewan untuk menghasilkan output uniknya.

Berikut adalah Subclass Burung:


Subclass Burung melakukan Override pada method dari MahlukHidup dan juga Hewan untuk menghasilkan output uniknya.

Berikut adalah Subclass Tumbuhan:


Subclass Tumbuhan memiliki method tambahan, yaitu photosynthesize.

Berikut adalah Subclass TumbuhanBerbunga:


Subclass TumbuhanBerbunga melakukan Override pada method dari MahlukHidup dan juga Tumbuhan untuk menghasilkan output uniknya.

Berikut adalah Subclass TumbuhanTidakBerbunga:


Subclass TumbuhanTidakBerbunga melakukan Override pada method dari MahlukHidup dan juga Tumbuhan untuk menghasilkan output uniknya.

Berikut adalah Class Main


Class ini akan membuat instance-instance baru dari masing-masing Subclass dan menjalankan seluruh method pada Subclass tersebut.

Berikut adalah hasil implementasi menggunakan Class Main:


   2.  Pelajari dan baca simulasi Foxes and Rabbit yang ada di buku. Kemudian buat program perubahan dari struktur class umum menjadi bentuk Abstract Class.

Berikut adalah Class Diagram dari program:


Berikut adalah Class Animal:




Class ini akan menjadi dasar untuk Subclass Rabbit dan Subclass Fox yang akan memiliki perilakunya masing-masing.

Berikut adalah Subclass Rabbit:


Subclass Rabbit berperilaku bergerak secara acak. Perilaku acak ini akan diimplementasikan di Class Field.

Berikut adalah Subclass Fox:



Subclass Fox berperilaku dengan memeriksa location di sekitarnya untuk mangsa (rabbit). Bila ada, maka serigala akan 'memakannya' dan mengubah variabel "isAlive" Rabbit yang dimakannya menjadi FALSE. Bila Fox tidak menemukan mangsa, maka ia akan bergerak secara acak.

Berikut adalah Class Field:



Class Field bertindak sebagai 'lapangan' yang dapat dijelajahi para hewan (fox dan rabbit). Dalam class ini, terdapat fungsi untuk menempatkan hewan pada sebuah lokasi, menghapus object dari sebuah lokasi, mengembalikan informasi object pada suatu lokasi, dan mencari lokasi yang kosong. Fungsi freeAdjacentLocation ini akan mengembalikan lokasi yang kosong yang ditemukannya secara acak.

Berikut adalah Class Location:


Berikut adalah Class Simulator yang akan membuat field dan memasukkan object ke dalamnya:




Berikut adalah contoh output dari method simulate dari Class Simulator:





Wednesday, November 20, 2024

Tugas Pertemuan 12

Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/Airplane%20Ticket%20Reservation

Tugas Pembuatan Sistem 'Airplane Ticket Reservation'

Berikut adalah Class Diagram dari program:




Program memiliki sebuah Superclass yang merupakan dasar dari seluruh jenis tiket (Economy, Business, dan FirstClass) bernama Ticket. Class ini memiliki beberapa fungsi dasar seperti mengambil value dari variabel-variabel nya, seperti fare, baggage, dan destination.

Selain itu, Class ini memiliki fungsi yang akan menampilkan 'template' untuk informasi tiket yang telah direservasi dan juga fungsi yang menghitung harga akhir tiket. 


Semua jenis tiket memiliki Class nya masing-masing, yaitu:

Class Economy:

Class ini memiliki harga yang lebih murah 10% dari harga yang dimasukkan, memiliki batas berat bawaan sesuai dengan yang dimasukkan, dan tidak memiliki layanan tambahan. Pada class ini, terdapat dua 'Override' yang mengganti fungsi bawaan dari Class Ticket.


Class Business:

Class ini memiliki harga yang lebih mahal 25% dari harga yang dimasukkan, memiliki batas berat bawaan 5 kg lebih besar dari yang dimasukkan, dan memiliki layanan tambahan berupa makanan yang akan dihidangkan di pesawat. Pada class ini, terdapat dua 'Override' yang mengganti fungsi bawaan dari Class Ticket.


Class FirstClass:

Class ini memiliki harga yang lebih mahal 50% dari harga yang dimasukkan, memiliki batas berat bawaan 10 kg lebih besar dari yang dimasukkan, dan memiliki layanan tambahan berupa makanan yang akan dihidangkan di pesawat serta akses untuk lounge saat menunggu di bandara. Pada class ini, terdapat dua 'Override' yang mengganti fungsi bawaan dari Class Ticket.


Class Main adalah Class yang menyontohkan reservasi tiket dari jenis Economy, Business, dan First Class, lalu menunjukkan detailnya menggunakan fungsi displayInfo() yang telah di 'Override' masing-masing Class jenis tiket. 


Berikut adalah output dari Class Main:



Wednesday, November 13, 2024

Tugas Pertemuan 11

 Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/Rental%20Management

Tugas Pembuatan Sistem 'Rental Management'

Berikut adalah Class Diagram dari program:




Berikut adalah semua Class serta Method yang digunakannya:


Class Vehicle


Class ini merupakan class yang akan diambil oleh subclass kendaraan lain. Class ini dapat menampung merk, model, tahun pembuatan, serta availability dari sebuah kendaraan. Availability bekerja sebagai penanda status peminjaman kendaraan tersebut.

Class Car


Class ini adalah subclass dari Class Vehicle untuk kendaraan mobil. Class ini hanya memiliki tambahan berupa jumlah roda.

Class Motorcycle


Class ini adalah subclass dari Class Vehicle untuk kendaraan motor. Class ini hanya memiliki tambahan berupa jumlah roda.

Class Bike


Class ini adalah subclass dari Class Vehicle untuk kendaraan sepeda. Class ini hanya memiliki tambahan berupa tipe sepeda.

Class Renter


Class ini akan menyimpan informasi dari sebuah penyewa, yaitu nama dan kendaraan yang disimpannya. Selain itu, class ini memiliki boolean renting yang menunjukkan bila penyewa sedang menyewa atau tidak.

Class Rental



Class inilah yang menyediakan sebagian besar fungsi utama dari sistem rental. Yaitu menambahkan kendaraan, menambahkan penyewa, menunjukkan kendaraan, menunjukkan penyewa, mengambil data kendaraan, dan mengembalikkan kendaraan.

Class App






Class ini merupakan class yang menggunakan keseluruhan dari sistem dan menampilkan sebuah interface pada pengguna. Pengguna dapat menggunakan sistem melalu menu yang ditampilkan oleh class ini. Class ini memiliki berbagai kegunaan, yaitu menampilkan UI, mengambil input, dan memerintahkan Class Rental sesuai dengan kebutuhan.


Berikut adalah hasil penggunaan Class App:


Pengguna menambahkan mobil kedalam sistem. Dapat dilihat bahwa data mobil dapat diambil oleh sistem.


Pengguna menambahkan penyewa yang meminjam mobil yang telah dimasukkan ke sistem sebelumnya. Data mobil sudah tidak bisa dilihat karena telah dipinjam.


Data penyewa dapat ditampilkan.