Latihan Implementasi Abstraksi Kelas
Nama : Rafaela Shyra Ashma' Ramadhani
NRP : 5025231217
Kelas : Pemrograman Berorientasi Objek - G
Tugas Pertemuan ke-13
MakhlukHidup
):bernafas()
dan makan()
adalah metode abstrak yang wajib diimplementasikan oleh kelas turunan.tumbuh()
adalah metode konkret yang dapat digunakan langsung oleh semua kelas turunan tanpa perlu diubah.Manusia
, Hewan
, dan Tumbuhan
):MakhlukHidup
dengan cara mereka masing-masing.tumbuh()
dapat dipanggil langsung tanpa harus diubah.Main
:MakhlukHidup
).1. Kelas Animal
Kelas Animal adalah kelas abstrak yang digunakan sebagai dasar untuk kedua kelas Fox dan Rabbit. Kelas ini menyimpan informasi dasar tentang hewan, seperti apakah hewan tersebut masih hidup, lokasi mereka di dalam Field, dan menyediakan metode untuk bergerak dan bertindak dalam simulasi.
Anggota Kelas:
alive
: Variabel boolean yang menunjukkan apakah hewan tersebut hidup atau mati.field
: Menyimpan referensi ke Field, yang adalah tempat simulasi tempat hewan bergerak.location
: Lokasi hewan di dalam field (objek Location).isAlive()
: Mengembalikan status apakah hewan masih hidup.setDead()
: Menandakan bahwa hewan tersebut mati.setLocation(Location newLocation)
: Memindahkan hewan ke lokasi baru dalam field.act(List<Animal> newAnimals)
: Metode abstrak yang mengharuskan subclass untuk mengimplementasikan perilaku hewan, baik Fox atau Rabbit.
2. Kelas Fox
Kelas Fox adalah subclass dari Animal yang mewakili predator dalam simulasi. Fox bergerak di grid untuk mencari Rabbit atau lokasi kosong, dan akan memakan Rabbit yang ada di lokasinya.
Anggota Kelas:
act(List<Animal> newAnimals)
:- Jika Fox hidup, ia akan mencari lokasi kosong di sekitar atau mencari Rabbit di posisi yang sama.
- Jika ada Rabbit di lokasi yang sama, Fox memakannya dan Rabbit mati.
- Jika tidak ada Rabbit, Fox mencari lokasi kosong untuk bergerak.
- Jika tidak bisa bergerak (misalnya, semua lokasi sekitar terisi), Fox mati.
3. Kelas Rabbit
Kelas Rabbit juga merupakan subclass dari Animal yang mewakili mangsa dalam simulasi. Rabbit bergerak untuk mencari tempat kosong, dan jika ia bertemu dengan Fox, ia akan mati (simulasi predator-prey).
Anggota Kelas:
act(List<Animal> newAnimals)
:- Jika Rabbit hidup, ia mencari lokasi kosong di sekitarnya dan bergerak ke sana.
- Jika tidak bisa bergerak, maka Rabbit mati.
4. Kelas Field
Kelas Field menyimpan grid dua dimensi yang menjadi tempat bergeraknya semua hewan (Fox dan Rabbit). Ini adalah representasi dari ruang simulasi tempat pergerakan hewan terjadi.
Anggota Kelas:
field
: Matriks dua dimensi yang menyimpan objek Animal di setiap lokasi (jika ada).getDepth()
: Mengembalikan jumlah baris dalam field.getWidth()
: Mengembalikan jumlah kolom dalam field.clear()
: Menghapus semua objek dalam field.place(Object animal, Location location)
: Menempatkan hewan di lokasi tertentu.getObjectAt(Location location)
: Mengambil objek hewan di lokasi tertentu.clear(Location location)
: Menghapus hewan dari lokasi tertentu.freeAdjacentLocation(Location location)
: Mencari lokasi kosong di sekitar lokasi tertentu untuk pergerakan hewan.adjacentLocations(Location location)
: Menyusun daftar lokasi sekitar yang bisa dipilih oleh hewan untuk bergerak.
5. Kelas Location
Kelas Location digunakan untuk mewakili posisi dua dimensi dalam grid Field. Ini menyimpan informasi tentang baris dan kolom di dalam field tempat hewan berada.
Anggota Kelas:
row
: Baris dari lokasi.col
: Kolom dari lokasi.getRow()
: Mengembalikan nilai baris lokasi.getCol()
: Mengembalikan nilai kolom lokasi.
6. Kelas FieldStats
Kelas FieldStats digunakan untuk menghitung dan mencetak statistik mengenai jumlah Fox dan Rabbit yang ada di dalam field pada setiap langkah simulasi.
Anggota Kelas:
foxCount
: Variabel untuk menghitung jumlah Fox.rabbitCount
: Variabel untuk menghitung jumlah Rabbit.resetCounts()
: Mereset hitungan jumlah Fox dan Rabbit.incrementCount(Class animalClass)
: Meningkatkan hitungan sesuai dengan jenis hewan (Fox atau Rabbit).printStatistics(Field field)
: Mencetak statistik jumlah Fox dan Rabbit yang ada dalam field.
7. Kelas Simulator
Kelas Simulator mengelola keseluruhan simulasi, termasuk populasi Fox dan Rabbit, langkah-langkah simulasi, serta menampilkan status field di setiap langkah.
Anggota Kelas:
animals
: Daftar semua hewan (Fox dan Rabbit) dalam simulasi.field
: Field tempat hewan bergerak.stats
: Statistik yang menghitung jumlah Fox dan Rabbit.simulate(int steps)
: Menjalankan simulasi selama sejumlah langkah yang diberikan.simulateOneStep()
: Melakukan tindakan untuk setiap hewan pada langkah simulasi tertentu.printField()
: Mencetak kondisi field (posisi semua hewan) pada langkah simulasi tertentu.populate()
: Mengisi field secara acak dengan Fox dan Rabbit.
8. Alur Simulasi
- Simulator memulai simulasi dan mengisi Field dengan Fox dan Rabbit secara acak.
- Pada setiap langkah simulasi, Fox dan Rabbit akan bergerak atau bertindak sesuai dengan perilaku yang sudah didefinisikan:
- Fox akan mencoba mencari Rabbit untuk dimakan, atau mencari lokasi kosong untuk bergerak.
- Rabbit akan mencoba bergerak ke lokasi kosong.
- FieldStats mencatat jumlah Fox dan Rabbit yang ada di dalam field dan mencetak statistiknya.
- Simulasi berlanjut hingga langkah yang ditentukan, dan kondisi field akan dicetak di setiap langkah.
Komentar
Posting Komentar