Tugas PBO Pertemuan 13
Nathanael Valen Susilo
Abstract class Human menambahkan method baru yaitu speak, sementara untuk konstruktornya sama dengan parentnya makanya digunakan super(name).
Abstract class Plant menambahkan method baru yaitu photosynthesize.
Class Bird menambahkan method sing dan melakukan override pada method yang sudah didefinisikan pada abstract class LivingBeing dan Animal.
Class FloweringPlant menambahkan method bloom dan melakukan override pada method yang sudah didefinisikan pada abstract class LivingBeing dan Plant.
Class main disini digunakan dengan membuat instance pada masing-masing subclass dan kemudian dicoba untuk memanggil semua method yang tersedia. Kita bisa melihat ada perbedaan pada saat pemanggilan method yang baru didefisinikan di subclass contohnya pada method code di kelas Programmer. Pada saat memanggil method tersebut kita harus memberi tahu program (casting) bahwa method yang dipanggil didefinisikan pada class Programmer.
Pada Class Animal, sudah terdapat beberapa method yang akan sama-sama digunakan oleh subclass Fox dan Rabbit, tetapi ada satu method tambahan yaitu act yang mana akan mengatur pada bagaimana object akan bergerak di field.
Class Rabbit melakukan override pada abstract method act yaitu dengan menambahkan fungsi untuk menentukan pergerakan rabbit dalam field.
5025231099
Penjelasasn Implementasi Abstract Class
1. Implementasi Program "Makhluk Hidup"
Di program ini, saya coba menggunakan abstract class pada LivingBeing, lalu subclassnya: Human, Animal, Plant. Selain itu, saya coba menambahkan masing-masing 1 subclass lagi yaitu Programmer, Bird, dan FloweringPlant. Singkatnya program ini merupakan salah satu contoh implementasi dari abstract class, dimana parent class akan dapat mendefinisikan beberapa atribute dan method, yang mana mungkin saja ada yang kosong (hanya berupa definisi tanpa ada logik penggunaanya). Umumnya abstract class ini digunakan dengan penulisan kembali method yang sudah didefinisikan sebelumnya, kemudian di-override pada child class.
Abstract Class LivingBeing
Pada abstract class LivingBeing, terdapat atribut name dan 2 abstract method yaitu breathe dan grow.
Abstract Class Human
Abstract class Human menambahkan method baru yaitu speak, sementara untuk konstruktornya sama dengan parentnya makanya digunakan super(name).
Abstract Class Animal
Abstract Class Plant
Class Programmer
Class Programmer disini masih menggunakan konstruktor yang sama dengan parentnya, tetapi ada perubahan pada mehod yaitu dilakukan override supaya sesuai dengan sifat kelasnya. Selain itu, ada penamabahan method code.
Class Bird
Class Bird menambahkan method sing dan melakukan override pada method yang sudah didefinisikan pada abstract class LivingBeing dan Animal.
Class FloweringPlant
Class FloweringPlant menambahkan method bloom dan melakukan override pada method yang sudah didefinisikan pada abstract class LivingBeing dan Plant.
Class Main untuk Testing
Class main disini digunakan dengan membuat instance pada masing-masing subclass dan kemudian dicoba untuk memanggil semua method yang tersedia. Kita bisa melihat ada perbedaan pada saat pemanggilan method yang baru didefisinikan di subclass contohnya pada method code di kelas Programmer. Pada saat memanggil method tersebut kita harus memberi tahu program (casting) bahwa method yang dipanggil didefinisikan pada class Programmer.
Hasil Output :
2. Implementasi Abstract Class pada Simulasi Sederhana "Fox and Rabbit"
Program Overview :
Program berupa simulasi sederhana dengan mengenerate sebuah field berukuran x,y kemudian meletakkan populasi rabbit atau fox secara random untuk setiap lokasi dalam field.
Pada tahapan simulasi :
- Setiap hewan akan melakukan sebuah action yang mana akan dilakukan secara berurutan.
- Rabbit akan bergerak ke area yang kosong dengan prioritas : kiri, kanan, atas, bawah.
- Jika Fox pada saat tahap simulasi tersebut memiliki adjacent dengan rabbit, maka rabbit tersebut akan mati, dan value dari hungerLevel akan diset 0.
- Jika Fox tidak bisa memburu rabbit selama 3 tahap simulasi, maka fox akan mati.
Abstract Class Animal
Pada Class Animal, sudah terdapat beberapa method yang akan sama-sama digunakan oleh subclass Fox dan Rabbit, tetapi ada satu method tambahan yaitu act yang mana akan mengatur pada bagaimana object akan bergerak di field.
Class Rabbit
Class Rabbit melakukan override pada abstract method act yaitu dengan menambahkan fungsi untuk menentukan pergerakan rabbit dalam field.
Class Fox
Class Fox menimpa method act yaitu dengan menambahkan fungsi untuk melakukan hunt. Fox akan mengecek semua lokasi yang adjacent dan jika misalnya ada rabbit, maka rabbit akan mati, dan hungerLevel dari fox akan diset ke 0. Jika fox tidak, maka hungerlevel fox akan diincrement dan jika lebih dari batas, maka fox akan mati.
Class Location
Class Field
Secara singkat, class Field akan menyimpan data berupa ukuran field x * y, dan hewan apa yang ada pada lokasi x,y. Ada beberapa method yang tersedia seperti mengubah dan mengambil data hewan yang ada pada suatu titik, mengecek adjacent dari satu titik, dan juga melakukan print terhadap kondisi field yang ada.
Class Simulation + Main
Class Simulation ini sesuai namanya akan berfungsi untuk mensimulasikan program, simulasi pertama akan dilakukan dengan membuat field dengan ukuran yang ditetapkan, membuat arraylist berisi hewan yang ada dalam field, menempatkan hewan secara acak pada setiap koordinat titik yang ada pada field. Jika sudah dilakukan setup maka, simulasi akan dijalankan secara bertahap, yaitu dengan setiap hewan yang ada pada arraylist dilakukan method actnya.
Contohnya pada testing yang saya lakukan yaitu dengan field ukuran 10x10 dan 5 tahao simulasi.
Hasil Testing :
Komentar
Posting Komentar