Tugas PBO Pertemuan 13

Nathanael Valen Susilo
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 Animal menambahkan method baru yaitu move.

    Abstract Class Plant
    

    Abstract class Plant menambahkan method baru yaitu photosynthesize.

    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 location berfungsi untuk menyimpan nilai koordinat yang digunakan objek pada field.


    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

Postingan populer dari blog ini

Final Project PBO (Sudoku Game)

Tugas PBO Pertemuan 11

Tugas PBO Pertemuan 5