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:

  1. Abstract Class MakhlukHidup:

    • MakhlukHidup memiliki:
      • 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 class digunakan untuk membuat blueprint dari suatu konsep yang tidak lengkap (tidak semua metode memiliki implementasi).
  2. Subclass (Manusia, Hewan, Tumbuhan):

    • Masing-masing subclass mewarisi MakhlukHidup dan wajib mengimplementasikan bernafas() sesuai dengan karakteristiknya.
    • Pola ini memungkinkan setiap subclass memiliki implementasi yang berbeda untuk metode abstrak.
  3. Main Class:

    • Objek dari subclass dibuat melalui referensi abstract class (MakhlukHidup), yang menunjukkan kemampuan polimorfisme.
    • Polimorfisme memungkinkan metode bernafas() dan makan() dipanggil dengan cara yang sama untuk semua subclass, tetapi hasilnya berbeda sesuai implementasi masing-masing subclass.

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:

  1. Abstract Class Animal:

    • Animal adalah kelas abstrak yang merepresentasikan sifat umum dari semua hewan dalam ekosistem.
    • Metode abstrak act() didefinisikan tanpa implementasi, sehingga subclass akan menyesuaikan perilaku masing-masing.
  2. Subclass (Rabbit dan Fox):

    • Rabbit dan Fox mewarisi Animal dan menyediakan implementasi spesifik untuk metode act().
      • Rabbit: Memiliki perilaku melompat-lompat.
      • Fox: Memiliki perilaku berburu kelinci.
    • Pola ini menunjukkan bagaimana subclass bisa memberikan implementasi unik untuk metode yang sama.
  3. 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.

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

Postingan populer dari blog ini

Pemrograman Berorientasi Objek A - ETS

Tugas Pertemuan 3 - 5025231186

Tugas Pertemuan 4 - 5025231186