Latihan Implementasi Abstraksi Kelas

Nama : Rafaela Shyra Ashma' Ramadhani

NRP : 5025231217

Kelas : Pemrograman Berorientasi Objek - G

Tugas Pertemuan ke-13


1. Tuliskan implementasi dari program kecil Abstract Class Makhluk hidup yang diwariskan kepada manusia, hewan, dan tumbuhan

2. Pelajari dan baca simulasi Foxes and Rabbit yang ada di buku. Kemudian buat program perubahan dari struktur class umum menjadi bentuk Abstract Class.
 
Jawaban :
 
1. Kode : GitHub
 
Penjelasan : 
Kelas Abstrak (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.
 
Kelas Turunan (Manusia, Hewan, dan Tumbuhan):
Ketiga kelas ini mengimplementasikan metode abstrak dari MakhlukHidup dengan cara mereka masing-masing.
Metode tumbuh() dapat dipanggil langsung tanpa harus diubah.
 
Kelas Main:
Kelas ini bertugas untuk menjalankan program.
Membuat objek dari masing-masing kelas turunan menggunakan referensi ke kelas induk (MakhlukHidup).
Memanggil metode yang diimplementasikan di setiap kelas turunan.
 
Diagram Class :
 
Output :  
 
2. Kode : GitHub 
 
Penjelasan :

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

  1. Simulator memulai simulasi dan mengisi Field dengan Fox dan Rabbit secara acak.
  2. 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.
  3. FieldStats mencatat jumlah Fox dan Rabbit yang ada di dalam field dan mencetak statistiknya.
  4. Simulasi berlanjut hingga langkah yang ditentukan, dan kondisi field akan dicetak di setiap langkah.
 
Diagram Class :
 
Output :  
Simulator 10 x 10 dengan 3 steps






 

Komentar

Postingan populer dari blog ini

Web Pendaftaran Siswa Baru - CRUD dengan PHP dan MySQL

Final Project PBO - G

Tech Support System Menggunakan Java