Abstract Class pada Makhluk hidup dan Simulasi Foxes and Rabbit

Raden Kurniawan Agung Fitrianto | 5025241104 | PBO A2 | Pertemuan 13
 
1. Tuliskan implementasi dari program kecil Abstract Class Makhluk hidup yang diwariskan kepada manusia, hewan, dan tumbuhan.



LivingBeing Class
Kelas LivingBeing merupakan kelas abstrak yang mendefinisikan sifat dasar semua makhluk hidup. Kelas ini memiliki field nama, metode getName(), breathe(), dan metode abstract grow().
 
 
 
Human Class
Kelas Human memperluas kelas abstrak LivingBeing dengan menambah metode abstract speak().
 
 
 
Animal Class
Mirip dengan Kelas Human, kelas ini memperluas LivingBeing dengan menambah metode abstract move().
 
 
 
Plant Class
Kelas ini menambah metode abstract photosynthesize().
 
 
 
Programmer Class
Kelas Programmer merupakan implementasi dari kelas Human. Kelas ini melakukan Override metode abstract sebelumnya yaitu grow() dan speak().
 
     
 
 
Doctor Class
Kelas ini mirip dengan kelas Programmer, perbedaan terletak pada isi dari metodenya.
 
 
 
Bird Class
Kelas ini merupakan implementasi dari kelas Animal. Mirip dengan kelas Programmer dan Doctor, kelas ini melakukan Override pada metode abstract super class-nya yaitu grow() dan move().
 
 
 
Dog Class
Kelas ini mirip dengan kelas Bird. Namun, berbeda pada isi dari metodenya

    
 
 
NonFloweringPlant Class
Kelas ini merupakan implementasi dari kelas abstrak yaitu Plant. Kelas NonFloweringPlant melakukan Override pada metode grow() dan photosynthesize().

    
 
 
FloweringPlant Class
Kelas ini mirip dengan kelas NonFloweringPlant, tetapi berbeda pada isi dari metode grow() dan photosynthesize().
 
 
 
Main Class
Kelas Main menjalankan aplikasi dengan membuat objek-objek baru dan memanggil metode-metode yang ada.

Output program



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

Animal Class
Kelas Animal adalah kelas abstrak yang merepresentasikan hewan yang ada pada simulasi ini. Pada kelas ini terdapat rand yaitu objek Random yang digunakan untuk menghasilkan angka acak. Objek ini digunakan untuk menentukan umur acak dan probabilitas reproduksi. Metode incrementAge() menambah umur hewan dan mematikan hewan jika umurnya melebihi maxAge. Metode Breed() mengembalikan jumlah anak yang dilahirkan secara acak antara 1 dan maxLitterSize. Metode setLocation() mengatur lokasi hewan dalam simulasi. Ada dua versi: satu menggunakan koordinat row dan col, dan yang lain menggunakan objek Location. Terakhir, metode act() adalah metode abstrak yang merepresentasikan tindakan yang dilakukan oleh para hewan dan akan diimplementasikan oleh sub-class di bawahnya. 
 
 

Fox Class
Kelas Fox adalah implementasi dari kelas Animal. Pada kelas ini terdapat konstanta yang dideklarasikan di awal kode. Kelas ini mewarisi metode yang ada pada kelas Animal. Selain itu, kelas ini memiliki beberapa metode baru yakni incrementHunger() yang mensimulasikan rasa lapar rubah dengan menurunkan foodLevel yang dimiliki. Kemudian, metode findFood mencari makanan (kelinci) di lokasi sekitar rubah. Jika menemukan kelinci yang hidup, kelinci tersebut akan dimakan, dan tingkat kebutuhan makanan rubah akan diisi ulang. Metode ini mengembalikan lokasi kelinci yang dimakannya. Terakhir, metode act() diimplementasikan pada kelas ini sebagai simulasi tindakan rubah dalam satu langkah simulasi yakni: Menambah umur dan tingkat kebutuhan makanan, bereproduksi jika masih hidup, mencari makanan (kelinci) di lokasi sekitarnya, pindah ke lokasi baru jika menemukan makanan atau lokasi kosong dan mati jika tidak menemukan makanan atau lokasi kosong.
 


Rabbit Class
Kelas Rabbit adalah implementasi dari kelas Animal. Kelas Rabbit mewakili kelinci pada simulasi ini. Implementasi metode act() pada kelas ini adalah sebagai berikut: menambah umur, bereproduksi jika masih hidup, mencari lokasi kosong di sekitarnya untuk pindah, pindah ke lokasi baru jika menemukan lokasi kosong, mati jika tidak menemukan lokasi kosong.



Location Class
Kelas Location mewakili suatu posisi atau grid dalam simulasi. Kelas ini memiliki beberapa metode di antaranya adalah metode equals() yang mengembalikan boolean apakah objek lain merupakan sebuah instance dari Location dan memiliki row dan column yang sama. Selain itu, ada metode hashCode() yang mengembalikan kode hash untuk objek Location. Kode hash ini digunakan untuk memastikan bahwa objek dengan nilai row dan col yang sama memiliki kode hash yang sama.
 

 
Field Class
Kelas Field mewakili bidang yang ada pada simulasi ini. data depth adalah jumlah baris, width adalah jumlah kolom, dan field adalah array 2 dimensi. Metode clear() menghapus semua objek dari grid, mengatur semua elemen grid menjadi null. Metode place() menempatkan objek hewan di lokasi tertentu dalam grid. Ada dua versi: satu menggunakan koordinat row dan col, dan yang lain menggunakan objek Location. Metode getObjectAt mengembalikan objek yang ada di lokasi tertentu. metode randomAdjacentLocation() mengembalikan lokasi tetangga acak dari lokasi yang diberikan. Metode freeAdjacentLocation mencari lokasi tetangga kosong dari lokasi yang diberikan. Terakhir, metode adjacentLocation mengembalikan terator untuk lokasi-lokasi tetangga dari lokasi yang diberikan.
 
 

Counter Class
Kelas Counter digunakan pada kelas FieldStats untuk menghitung populasi hewan atau objek yang ada pada simulasi. Kelas ini memiliki field name untuk nama objek dan count untuk jumlah populasinya.
 

 
FieldStats Class
Kelas FieldStats digunakan untuk mengelola dan menampilkan statistik populasi hewan dalam simulasi. Data populasi hewan dimasukkan ke dalam HashMap counters. Selain itu, countsValid adalah boolean yang menunjukkan apakah data yang ada terkini atau tidak. Metode getPopulationDetails() mengembalikan String detail populasi hewan. Metode reset() mengatur countsValid menjadi false dan mereset hitungan semua hewan dalam counters. Metode incrementCount() menambah hitungan untuk kelas hewan tertentu. Jika kelas hewan belum ada dalam counters, objek Counter baru dibuat dan ditambahkan ke counters. Metode countFinished mengindikasi bahwa perhitungan hewan sudah selesai. Metode isViable() mengembalikan boolean apakah masih ada hewan yang hidup di simulasi, jika tidak maka simulasi akan dihentikan. Metode generateCount() menghitung populasi berdasarkan objek atau jenis hewannya.
 

 
SimulatorView Class
Kelas SimulatorView adalah kelas yang berfungsi untuk menciptakan tampilan dari program simulasi ini. Tampilan program ini terdiri dari 4 bagian yakni label jumlah step pada bagian utara / atas yang diatur oleh metode showStatus(). Selanjutnya, ada bagian fieldView yang diatur oleh kelas privat FieldView dan terletak pada bagian tengah tampilan. Kelas FieldView bekerja dengan menggambar kotak-kotak berwarna yang merepresentasikan objek yang ada pada suatu lokasi. Warna biru adalah objek Fox dan warna kuning adalah objek Rabbit. Kelas ini dipanggil pada metode showStatus(). Terakhir, adalah label populasi dan tombol step yang keduanya terletak pada bagian selatan / bawah tampilan. Label populasi diatur oleh metode showStatus() dan tombol step berfungsi untuk menambah satu step pada simulasi yang bekerja dengan memanggil metode simulateOneStep() pada kelas Simulator.
 
 
 
Simulator Class
Kelas Simulator adalah kelas yang menjalankan simulasi pada program ini. Kelas ini menyimpan list karakter, list hewan baru, bidang simulasi, jumlah step,  dan tampilan simulasi. metode runLongSimulation() memanggil metode simulate() dengan argumen 1 untuk memulai simulasi. Metode simulate memanggil metode simulateOneStep() sebanyak argumen numSteps yang didapatnya. Metode reset digunakan untuk mereset simulasi.

Metode simulateOneStep() menjalankan satu langkah simulasi. Metode ini akan menambah langkah simulasi, mengiterasi semua hewan dan memanggil metode act() untuk setiap hewan yang hidup, menambahkan hewan baru ke daftar characters, menukar field dengan updatedField untuk melakukan pembaruan, mengosongkan updatedField, dan memperbarui tampilan dengan memanggil metode showStatus() pada kelas SimulatorView.

Metode populate() mengisi bidang dengan hewan baru berdasarkan probabilitas pembuatan. Caranya dengan mengiterasi melalui semua lokasi dalam bidang dan menempatkan rubah atau kelinci dengan probabilitas tertentu. Hewan baru akan dimasukkan ke daftar characters. Terakhir, mengacak daftar characters untuk memastikan distribusi acak.
 


Principal Class
Kelas Principal adalah kelas yang menjalankan program ini dengan menciptakan objek simulator dan menjalan simulator.
 
Output Program

Comments

Popular posts from this blog

Tugas Meningkatkan Skill Typewriter

Aplikasi Sistem Pengambilan Mata Kuliah

ETS PBO A2 Membuat Vending Coffee Machine