Nama : Nadin Nabil Hafizh Ayyasy
NRP : 5025231061
GIT : https://github.com/Happpizh/PBO/tree/main/5025231061_Tugas13
Makhluk Hidup
Penjelasan Kode
Hewan.java
Kode ini mendefinisikan kelas Hewan yang juga merupakan turunan dari kelas MakhlukHidup. Kelas Hewan memiliki dua atribut: kakiEmpat dan kakiDua, yang diinisialisasi melalui konstruktor. Metode berdiri() mencetak dua pesan, satu untuk sapi yang berdiri dengan empat kaki (kakiEmpat), dan satu lagi untuk burung yang berdiri dengan dua kaki (kakiDua)
Manusia.java
Kode di atas mendefinisikan kelas Manusia yang merupakan turunan dari kelas MakhlukHidup. Kelas ini memiliki atribut duaKaki yang diinisialisasi melalui konstruktor, serta metode berdiri() yang mencetak pesan tentang bagaimana manusia berdiri dengan nilai atribut duaKaki.
Tumbuhan.java
Kode ini mendefinisikan kelas Tumbuhan yang merupakan turunan dari kelas MakhlukHidup. Kelas ini memiliki atribut Akar yang diinisialisasi melalui konstruktor. Metode berdiri() mencetak pesan tentang bagaimana tumbuhan berdiri atau tumbuh dengan menggunakan akar (Akar).
MakhlukHidup.java
Kode ini mendefinisikan kelas abstrak MakhlukHidup yang memiliki metode abstrak berdiri() yang harus diimplementasikan oleh kelas turunannya, serta metode konkret oksigen() yang mencetak informasi tentang kebutuhan dasar makhluk hidup, yaitu makanan, oksigen, dan air. Kelas ini tidak dapat langsung dibuat objeknya karena memiliki metode abstrak.
MainMakhlukHidup.java
Kode ini mendefinisikan kelas MainMakhlukHidup dengan metode cekMakhlukHidup() yang menerima objek bertipe MakhlukHidup sebagai parameter. Metode ini memanggil metode berdiri() dan oksigen() dari objek yang diberikan. Pada metode main(), objek MainMakhlukHidup dibuat, lalu cekMakhlukHidup() dipanggil untuk masing-masing kelas turunan (Manusia, Hewan, dan Tumbuhan), sehingga setiap objek yang dipassing menampilkan cara berdiri serta kebutuhan dasar makhluk hidup yang dimilikinya.
Cara Menjalankan
1. Pastikan Struktur program sudah benar
2. Klik kanan class "MainMakhlukHidup"
3. Lalu klik "void main(String[] args)"
4. Maka akan muncul output seperti di atas
Foxes and Rabbit
Penjelasan Kode
Rabbit.java
Kode ini mendefinisikan kelas Rabbit yang merupakan turunan dari kelas Animal. Konstruktor Rabbit menerima parameter field dan location untuk menginisialisasi objek. Metode act() mengatur perilaku kelinci: jika masih hidup, ia mencari lokasi baru yang kosong di sekitar lokasinya saat ini menggunakan metode freeAdjacentLocation(). Jika lokasi baru ditemukan, kelinci berpindah ke lokasi tersebut menggunakan setLocation(); jika tidak, kelinci dianggap mati dengan memanggil setDead(). Metode ini juga menerima daftar newAnimals, yang kemungkinan digunakan untuk mencatat hewan baru.
Fox.java
Kode ini mendefinisikan kelas Fox, yang merupakan turunan dari kelas Animal. Konstruktor Fox menginisialisasi objek dengan parameter field dan location. Metode act() menentukan perilaku rubah: jika masih hidup, rubah akan mencari makanan menggunakan metode findFood(), yang memeriksa lokasi di sekitarnya untuk menemukan objek Rabbit. Jika ada, rubah memakan kelinci (membuatnya mati) dan berpindah ke lokasi kelinci tersebut. Jika tidak ada makanan, rubah mencari lokasi kosong untuk bergerak. Jika tidak ada lokasi yang tersedia, rubah dianggap mati. Pesan tentang perpindahan atau kematian rubah juga dicetak ke konsol.
Location.java
Kode ini mendefinisikan kelas Location, yang merepresentasikan posisi dalam bentuk koordinat baris (row) dan kolom (col). Konstruktor Location menginisialisasi objek dengan nilai baris dan kolom. Kelas ini menyediakan metode getter getRow() dan getCol() untuk mengakses nilai koordinat tersebut. Kelas ini kemungkinan digunakan untuk menentukan lokasi objek dalam sebuah bidang atau grid.
Filed.java
Kode ini mendefinisikan kelas Field, yang merepresentasikan grid atau bidang dua dimensi tempat objek-objek seperti hewan atau benda lain dapat ditempatkan. Array dua dimensi field digunakan untuk menyimpan objek berdasarkan koordinatnya. Kelas ini memiliki beberapa metode:
1. clear() untuk mengosongkan lokasi tertentu.
2. place() untuk menempatkan objek di lokasi tertentu.
3. getObjectAt() untuk mendapatkan objek di lokasi tertentu.
4. freeAdjacentLocation() untuk mencari lokasi kosong di sekitar lokasi tertentu.
5. adjacentLocations() untuk mendapatkan daftar lokasi yang berdekatan dengan lokasi tertentu (logika perlu ditambahkan).
6. getDepth() dan getWidth() untuk mendapatkan dimensi grid, yaitu jumlah baris dan kolom.
Animal.java
Kode ini mendefinisikan kelas abstrak Animal, yang merepresentasikan hewan dalam simulasi berbasis grid. Kelas ini memiliki atribut age (umur), alive (status hidup/mati), field (bidang tempat hewan berada), dan location (posisi hewan). Metode penting yang disediakan meliputi:
1. isAlive(): Mengecek apakah hewan masih hidup.
2. setDead(): Mengatur hewan sebagai mati, mengosongkan lokasinya di bidang, dan membebaskan referensi field dan location.
3. getLocation() dan getField(): Mengakses lokasi dan bidang tempat hewan berada.
4. setLocation(): Memindahkan hewan ke lokasi baru di bidang, sambil menghapus lokasi lama.
5. act(): Metode abstrak untuk menentukan perilaku spesifik setiap jenis hewan, yang harus diimplementasikan di kelas turunannya.
Simulator.java
Kode ini mendefinisikan kelas Simulator, yang bertanggung jawab untuk menjalankan simulasi interaksi hewan seperti rubah dan kelinci dalam bidang grid. Kelas ini memiliki atribut field (grid tempat simulasi berlangsung) dan animals (daftar hewan yang disimulasikan). Berikut adalah fungsi utama:
1. Konstruktor: Menginisialisasi bidang dengan ukuran tertentu dan memanggil metode populate() untuk menambahkan rubah dan kelinci ke dalam grid secara acak.
2. simulate(int steps): Menjalankan simulasi dalam sejumlah langkah. Pada setiap langkah, semua hewan menjalankan metode act(), memperbarui status mereka, dan menambahkan hewan baru ke daftar jika ada. Status simulasi seperti jumlah hewan 3. ditampilkan pada setiap langkah.
4. populate(): Mengisi bidang dengan sejumlah rubah dan kelinci, menentukan posisi mereka secara acak, dan menempatkan mereka di grid.
5. getRandomLocation(): Menghasilkan lokasi acak di dalam grid, memastikan bahwa lokasi tersebut kosong sebelum digunakan.
Cara Menjalankan
1. Pastikan struktur program benar
2. Klik kanan class "Simulator"
3. Lalu klik "new simulator"
4. Lalu inputkan sesuai kenginan contoh seperti di atas
5. Lalu Program akan mengoutputkan seperti di atas
Comments
Post a Comment