Nama : Safa Mashita
NRP : 5025241022
Pertemuan 13 - Abstract Class
Kegunaan:Menjadi kelas dasar (abstract class) yang mendefinisikan perilaku umum semua makhluk hidup seperti bernapas dan tumbuh.
Atribut:
nama: menyimpan nama dari makhluk hidup (misalnya “Rafi”, “Serigala”, atau “Melati”).
Method:
MakhlukHidup(String nama): konstruktor untuk memberi nama pada objek ketika dibuat.-
bernapas(): method abstrak yang wajib diimplementasikan oleh semua subclass. -
tumbuh(): method abstrak yang juga wajib diimplementasikan oleh subclass.
Hubungan:
Menjadi superclass (kelas induk) bagi:
-
Manusia -
Hewan -
Tumbuhan
Semua kelas turunan harus mengimplementasikan methodbernapas()dantumbuh()sesuai perilaku masing-masing.
Kegunaan:Mewakili makhluk hidup jenis manusia yang memiliki kemampuan bernapas, tumbuh, dan berpikir.
Atribut:
nama: diwarisi dariMakhlukHidup, menyimpan nama manusia.
Method:
Manusia(String nama): konstruktor untuk membuat objek manusia dengan nama tertentu.-
bernapas(): menampilkan cara manusia bernapas. -
tumbuh(): menampilkan proses manusia tumbuh menjadi dewasa. -
berpikir(): menampilkan kemampuan manusia untuk berpikir atau merenung.
Hubungan:
Merupakan subclass dari MakhlukHidup.
Mewarisi atribut nama serta mengimplementasikan method bernapas() dan tumbuh() dari superclass-nya.
Kegunaan:Mewakili makhluk hidup jenis hewan yang bisa bernapas, tumbuh, dan bergerak untuk bertahan hidup.
Atribut:
nama: diwarisi dariMakhlukHidup, menyimpan nama hewan.
Method:
Hewan(String nama): konstruktor untuk memberi nama hewan saat objek dibuat.-
bernapas(): menampilkan aktivitas bernapas hewan. -
tumbuh(): menampilkan proses pertumbuhan hewan. -
berburu(): menggambarkan perilaku hewan dalam berburu atau bergerak aktif.
Hubungan:
Merupakan subclass dari MakhlukHidup.
Mengimplementasikan method abstrak dari superclass dan menambahkan perilaku spesifik berburu().
Kegunaan:
Mewakili makhluk hidup jenis tumbuhan yang bisa bernapas, tumbuh, dan melakukan fotosintesis.
Atribut:
nama: diwarisi dariMakhlukHidup, menyimpan nama tumbuhan.
Method:
Tumbuhan(String nama): konstruktor untuk memberi nama tumbuhan.-
bernapas(): menampilkan proses tumbuhan bernapas. -
tumbuh(): menampilkan proses tumbuhan berkembang menuju cahaya matahari. -
berfotosintesis(): menunjukkan aktivitas khas tumbuhan dalam menghasilkan energi.
Hubungan:
Merupakan subclass dari MakhlukHidup.
Mengimplementasikan method abstrak dan menambahkan method unik berfotosintesis().
Kegunaan:Menjadi kelas utama (driver class) yang berfungsi untuk menjalankan program dan menguji hubungan antar kelas.
Atribut:
Tidak memiliki atribut khusus.
Method:
main(String[] args): method utama yang membuat objek dariManusia,Hewan, danTumbuhan, lalu memanggil method masing-masing untuk menampilkan perilaku.
Hubungan:
Berperan sebagai pengguna (client) dari semua kelas turunan MakhlukHidup.
Tidak mewarisi apa pun, tetapi membuat objek dari ketiga subclass dan mengakses fungsinya.
2. Pelajari dan baca simulasi Foxes and Rabbit yang ada di buku. Kemudian buat program perubahan dari struktur class umum menjadi bentuk Abstract Class.
Kegunaan:Menjadi kelas abstrak dasar untuk semua jenis hewan dalam simulasi (seperti Rabbit dan Fox). Kelas ini mengatur perilaku umum seperti umur, status hidup, lokasi, dan mekanisme reproduksi.
Atribut:
age: menyimpan umur hewan.-
alive: menunjukkan apakah hewan masih hidup (true) atau sudah mati (false). -
location: posisi hewan di area simulasi. -
field: area tempat hewan berada (objek dari classField). -
rand: objekRandomuntuk menghasilkan nilai acak (misalnya umur awal, kemungkinan berkembang biak).
Method:
Animal(boolean randomAge, Field field, Location location): konstruktor untuk inisialisasi hewan baru.-
getAge(): mengembalikan umur hewan. -
isAlive(): memeriksa apakah hewan masih hidup. -
getLocation(): mengembalikan lokasi saat ini. -
setLocation(Location newLocation): memindahkan hewan ke lokasi baru. -
setDead(): menandai hewan mati dan menghapus dari field. -
canBreed(): menentukan apakah hewan sudah cukup umur untuk berkembang biak. -
incrementAge(): menambah umur dan mematikan hewan bila melewati umur maksimum. -
giveBirth(List<Animal> newAnimals): menghasilkan anak baru jika memenuhi syarat. -
breed(): menghitung jumlah anak berdasarkan probabilitas dan ukuran maksimum litter. -
printLocation(Location location): menampilkan lokasi dalam format koordinat. -
act(List<Animal> newAnimals): method abstrak untuk perilaku tiap hewan di setiap langkah simulasi. -
getMaxAge(),getBreedingAge(),getBreedingProbability(),getMaxLitterSize(),createYoung(): method abstrak yang harus diimplementasikan subclass.
Hubungan:
Superclass dari Rabbit dan Fox.
Berelasi dengan Field dan Location untuk mengatur posisi dan lingkungan hewan.
Kegunaan:Mewakili hewan jenis kelinci yang hidup di dalam simulasi.
Kelas ini mengatur perilaku kelinci seperti bergerak, tumbuh, mati, dan berkembang biak.
Atribut:
Mewarisi semua atribut dari
Animal(age,alive,field,location, dll).
Method:
Rabbit(boolean randomAge, Field field, Location location): konstruktor untuk membuat kelinci baru.-
act(List<Animal> newAnimals): menentukan tindakan kelinci di setiap langkah (bertambah umur, melahirkan, pindah tempat, atau mati). -
setDead(): menandai kelinci mati dan membersihkan dari field. -
setLocation(Location newLocation): memindahkan posisi kelinci. -
getMaxAge(): umur maksimum kelinci (5 langkah). -
getBreedingAge(): umur minimum agar bisa berkembang biak (1 langkah). -
getBreedingProbability(): peluang berkembang biak (12%). -
getMaxLitterSize(): jumlah maksimum anak per kelahiran (4 ekor). -
createYoung(): membuat objekRabbitbaru di lokasi tertentu.
Hubungan:
Subclass dari Animal.
Berinteraksi dengan Field untuk mencari lokasi kosong dan dengan Simulator untuk direkam per langkah.
Kegunaan:Menjadi representasi peta atau area tempat semua hewan berada.
Mengatur penempatan, penghapusan, dan pencarian posisi kosong di dalam grid.
Atribut:
Object[][] field: matriks dua dimensi yang menyimpan semua objek (hewan) dalam simulasi.
Method:
Field(int row, int col): membuat field baru dengan ukuran tertentu.-
clear(Location location): menghapus isi suatu lokasi. -
place(Object object, Location location): menempatkan objek di lokasi tertentu. -
clearAll(): menghapus seluruh isi field. -
getObjectAt(Location location): mengambil objek di posisi tertentu. -
getAllFreeAdjacentLocations(Location location): mencari semua lokasi kosong di sekitar. -
getFreeAdjacentLocations(Location location): mengambil satu lokasi kosong di sekitar. -
adjacentLocations(Location location): mengembalikan daftar lokasi yang berdekatan. -
getRow(),getCol(): mengembalikan jumlah baris dan kolom field.
Hubungan:
Berelasi dengan Animal, Fox, dan Rabbit karena semua hewan hidup di dalam Field.
Digunakan juga oleh Simulator untuk menampilkan posisi hewan di peta.
Kegunaan:Mewakili koordinat posisi (baris dan kolom) di dalam Field.
Digunakan untuk menentukan dan memanipulasi lokasi hewan.
Atribut:
row: posisi baris.-
col: posisi kolom.
Method:
Location(int row, int col): konstruktor untuk membuat posisi baru.-
getRow(): mengembalikan nilai baris. -
getCol(): mengembalikan nilai kolom.
Hubungan:
Digunakan oleh Field, Animal, Rabbit, dan Fox untuk menentukan posisi di dalam simulasi.
Kegunaan:Mengatur keseluruhan proses simulasi.
Mengontrol langkah-langkah waktu, pergerakan hewan, kelahiran, kematian, dan tampilan peta.
Atribut:
List<Animal> animals: daftar semua hewan aktif di dalam simulasi.-
Field field: peta simulasi tempat hewan hidup. -
int step: menghitung langkah simulasi saat ini. -
SimulatorView view: objek tampilan yang menampilkan kondisi field di setiap langkah.
Method:
Simulator(int row, int col): konstruktor, membuat simulasi dengan ukuran peta tertentu.-
simulate(int maxSteps): menjalankan simulasi selama jumlah langkah tertentu. -
reset(): mengatur ulang simulasi dan mengisi peta kembali dengan hewan baru. -
simulateOneStep(): menjalankan satu langkah simulasi (setiap hewan bertindak sekali). -
populate(): menambahkan hewan awal ke dalam peta secara acak.
Hubungan:
Field, Animal, Fox, Rabbit, dan SimulatorView.Memiliki asosiasi langsung dengan semua kelas lain dalam sistem.
6. Class Location
Kegunaan:Mewakili koordinat posisi (baris dan kolom) di dalam Field.
Digunakan untuk menentukan dan memanipulasi lokasi hewan.
Atribut:
row: posisi baris.col: posisi kolom.
Method:
Location(int row, int col): konstruktor untuk membuat posisi baru.getRow(): mengembalikan nilai baris.getCol(): mengembalikan nilai kolom.
Hubungan:
Digunakan oleh Field, Animal, Rabbit, dan Fox untuk menentukan posisi di dalam simulasi.
7. Class SimulatorView
Kegunaan:Menampilkan kondisi Field ke layar dalam bentuk teks.
Menandai setiap jenis hewan dengan karakter tertentu (misal 'R' untuk kelinci, 'F' untuk rubah).
Atribut:
row,col: ukuran peta simulasi.-
Map<Class<?>, Character> fieldView: peta karakter tampilan untuk setiap jenis hewan.
Method:
SimulatorView(int row, int col): konstruktor untuk membuat tampilan peta.-
setView(Class<?> animalClass, Character viewChar): menentukan karakter simbol untuk setiap hewan. -
showField(int step, Field field): mencetak keadaan peta di setiap langkah simulasi.
Hubungan:
Simulator (dipanggil oleh Simulator setiap langkah).Juga menggunakan
Field dan Location untuk menampilkan isi peta.Kegunaan:Sebagai entry point (titik awal) dari program.
Menjalankan simulasi dengan membuat objek Simulator dan menjalankan metode simulate().
Atribut:
Tidak memiliki atribut.
Method:
main(String[] args): method utama untuk menjalankan program.
Hubungan:
Simulator, yang kemudian mengatur seluruh alur simulasi.
Tidak ada komentar:
Posting Komentar