Tugas Pertemuan 13 - 5025231186
Agym Kamil Ramadhan
5025231186
Abstract Class
1. Abstract Class Makhluk Hidup
// Abstract Class MakhlukHidup
abstract class MakhlukHidup {
// Abstract method
public abstract void bernafas();
// Non-abstract method
public void makan() {
System.out.println("Makhluk hidup membutuhkan makanan.");
}
}
// Subclass Manusia
class Manusia extends MakhlukHidup {
@Override
public void bernafas() {
System.out.println("Manusia bernafas menggunakan paru-paru.");
}
}
// Subclass Hewan
class Hewan extends MakhlukHidup {
@Override
public void bernafas() {
System.out.println("Hewan bernafas dengan paru-paru atau insang.");
}
}
// Subclass Tumbuhan
class Tumbuhan extends MakhlukHidup {
@Override
public void bernafas() {
System.out.println("Tumbuhan bernafas melalui stomata.");
}
}
// Main Class
public class Main {
public static void main(String[] args) {
MakhlukHidup manusia = new Manusia();
manusia.bernafas();
manusia.makan();
MakhlukHidup hewan = new Hewan();
hewan.bernafas();
hewan.makan();
MakhlukHidup tumbuhan = new Tumbuhan();
tumbuhan.bernafas();
tumbuhan.makan();
}
}
Tujuan:
Latihan ini bertujuan untuk memahami konsep dasar dari abstract class dan pewarisan (inheritance) dalam OOP. Anda membuat sebuah abstract class yang mendefinisikan perilaku umum untuk semua jenis makhluk hidup, kemudian subclass (Manusia, Hewan, dan Tumbuhan) memperluasnya dan mengimplementasikan metode abstraknya.
Penjelasan Implementasi:
Abstract Class
MakhlukHidup:MakhlukHidupmemiliki:- Abstract method
bernafas(), yang harus diimplementasikan oleh semua subclass. - Non-abstract method
makan(), yang langsung dapat digunakan oleh semua subclass tanpa perlu implementasi ulang.
- Abstract method
- Abstract class digunakan untuk membuat blueprint dari suatu konsep yang tidak lengkap (tidak semua metode memiliki implementasi).
Subclass (
Manusia,Hewan,Tumbuhan):- Masing-masing subclass mewarisi
MakhlukHidupdan wajib mengimplementasikanbernafas()sesuai dengan karakteristiknya. - Pola ini memungkinkan setiap subclass memiliki implementasi yang berbeda untuk metode abstrak.
- Masing-masing subclass mewarisi
Main Class:
- Objek dari subclass dibuat melalui referensi abstract class (
MakhlukHidup), yang menunjukkan kemampuan polimorfisme. - Polimorfisme memungkinkan metode
bernafas()danmakan()dipanggil dengan cara yang sama untuk semua subclass, tetapi hasilnya berbeda sesuai implementasi masing-masing subclass.
- Objek dari subclass dibuat melalui referensi abstract class (
Manfaat Konsep:
- Membantu memisahkan konsep umum dan spesifik.
- Mendukung fleksibilitas melalui polimorfisme.
- Mengurangi pengulangan kode dengan mendefinisikan perilaku umum di kelas induk.
2. Foxes and Rabbit
import java.util.ArrayList;
import java.util.List;
// Abstract class for all animals
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void act();
public String getName() {
return name;
}
}
// Rabbit class extending Animal
class Rabbit extends Animal {
public Rabbit(String name) {
super(name);
}
@Override
public void act() {
System.out.println(name + " is hopping around.");
}
}
// Fox class extending Animal
class Fox extends Animal {
public Fox(String name) {
super(name);
}
@Override
public void act() {
System.out.println(name + " is hunting for rabbits.");
}
}
// Main class for simulation
public class Main {
public static void main(String[] args) {
List<Animal> animals = new ArrayList<>();
// Adding animals
animals.add(new Rabbit("Rabbit 1"));
animals.add(new Rabbit("Rabbit 2"));
animals.add(new Fox("Fox 1"));
// Simulating the ecosystem
for (Animal animal : animals) {
animal.act();
}
}
}
Tujuan:
Latihan ini berfokus pada abstraksi dan polimorfisme untuk membuat simulasi sederhana ekosistem yang terdiri dari hewan-hewan dengan perilaku yang berbeda.
Penjelasan Implementasi:
Abstract Class
Animal:Animaladalah kelas abstrak yang merepresentasikan sifat umum dari semua hewan dalam ekosistem.- Metode abstrak
act()didefinisikan tanpa implementasi, sehingga subclass akan menyesuaikan perilaku masing-masing.
Subclass (
RabbitdanFox):RabbitdanFoxmewarisiAnimaldan menyediakan implementasi spesifik untuk metodeact().- Rabbit: Memiliki perilaku melompat-lompat.
- Fox: Memiliki perilaku berburu kelinci.
- Pola ini menunjukkan bagaimana subclass bisa memberikan implementasi unik untuk metode yang sama.
Main Class:
- Daftar objek hewan (
List<Animal>) dibuat, dan setiap hewan dimasukkan ke dalam daftar. - Polimorfisme memungkinkan pemanggilan metode
act()tanpa harus peduli jenis subclass-nya. - Saat metode
act()dipanggil, setiap hewan menunjukkan perilaku spesifiknya.
- Daftar objek hewan (
Manfaat Konsep:
- Penyederhanaan Hierarki: Dengan membuat kelas induk abstrak, struktur program menjadi lebih modular dan rapi.
- Polimorfisme: Memungkinkan satu referensi (
Animal) digunakan untuk semua jenis hewan tanpa memerlukan tipe eksplisit. - Fleksibilitas: Menambahkan hewan baru (subclass) cukup dengan mengimplementasikan metode
act()tanpa mengubah kode kelas lain.
Komentar
Posting Komentar