Tugas Pertemuan 13 PBO

Nama  : Moh. Rizky Rahmadian Makkani

NRP    : 5025231035

Kelas : PBO A

Tugas Pertemuan 13 : PBO

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

Code LivingBeing.java :
public abstract class LivingBeing {
private String name;
public LivingBeing(String name) {
this.name = name;
}
public String getName() {
return name;
}

public abstract void breathe();
public abstract void grow();
}
Code Human.java :
public class Human extends LivingBeing {
public Human(String name) {
super(name);
}

@Override
public void grow() {
System.out.println(getName() + " membutuhkan asupan nutrisi yang lengkap dan tercukupi untuk tumbuh.");
}

@Override
public void breathe() {
System.out.println(getName() + " bernafas dengan menghirup oksigen.");
}
public void speak() {
System.out.println(getName() + " sedang berbicara dengan teman di sebelahnya.");
}
}
Code Animal.java
public class Animal extends LivingBeing {
public Animal(String name) {
super(name);
}
@Override
public void grow() {
System.out.println(getName() + " berburu hewan-hewan kecil disekitarnya untuk bertahan hidup.");
}
@Override
public void breathe() {
System.out.println(getName() + " bernafas dengan menghirup oksigen.");
}
public void move() {
System.out.println(getName() + " berlari dengan ke-empat kakinya.");
}

}
Code Plant.java :
public class Plant extends LivingBeing {
public Plant(String name) {
super(name);
}
@Override
public void grow() {
System.out.println(getName() + " berkembang biak melalui penyerbukan pada bunganya.");
}

@Override
public void breathe() {
System.out.println(getName() + " bernafas dengan menghirup karbon dioksida pada siang hari dan menghirup oksigen pada malam hari.");
}
public void photosynthesize() {
System.out.println(getName() + " melakukan fotosintesis untuk mendapatkan makanan.");
}

}
Code Main.java
public class Main {
public static void main(String[] args) {
// Humans
Human human = new Human("Agus");
human.breathe();
human.grow();
human.speak();
System.out.print("\n");
// Animals
Animal animal = new Animal("Kucing");
animal.breathe();
animal.grow();
animal.move();
System.out.print("\n");
// Plants
Plant plant = new Plant("Mawar");
plant.breathe();
plant.grow();
plant.photosynthesize();
System.out.print("\n");
}
}
Output :



2. Pelajari dan baca simulasi Foxes and Rabbit yang ada di buku. Kemudian buat program perubahan dari struktur class umum menjadi bentuk Abstract Class.
Code Animal.java :
import java.util.Random;

public abstract class Animal {
protected int x, y; // Koordinat posisi hewan
protected Random random = new Random(); // Generator angka acak

public Animal(int x, int y) {
this.x = x;
this.y = y;
}

public abstract void move(int gridSize);

public abstract String toString();
}
Code Fox.java :
public class Fox extends Animal {
public Fox(int x, int y) {
super(x, y);
}

@Override
public void move(int gridSize) {
// Pilih gerakan acak: 0 = bawah, 1 = atas, 2 = kanan, 3 = kiri
int direction = random.nextInt(4);
switch (direction) {
case 0 -> x = Math.min(x + 1, gridSize - 1); // Gerak ke bawah
case 1 -> x = Math.max(x - 1, 0); // Gerak ke atas
case 2 -> y = Math.min(y + 1, gridSize - 1); // Gerak ke kanan
case 3 -> y = Math.max(y - 1, 0); // Gerak ke kiri
}
}

@Override
public String toString() {
return "F";
}
}
Code Rabbit.java
public class Rabbit extends Animal {
public Rabbit(int x, int y) {
super(x, y);
}

@Override
public void move(int gridSize) {
// Pilih gerakan acak: 0 = bawah, 1 = atas, 2 = kanan, 3 = kiri
int direction = random.nextInt(4);
switch (direction) {
case 0 -> x = Math.min(x + 1, gridSize - 1); // Gerak ke bawah
case 1 -> x = Math.max(x - 1, 0); // Gerak ke atas
case 2 -> y = Math.min(y + 1, gridSize - 1); // Gerak ke kanan
case 3 -> y = Math.max(y - 1, 0); // Gerak ke kiri
}
}

@Override
public String toString() {
return "R";
}
}
Code FoxesAndRabbitsSimulations.java :
import java.util.ArrayList;
import java.util.List;

public class FoxesAndRabbitsSimulation {
private static final int GRID_SIZE = 5; // Ukuran grid
private static final int NUM_RABBITS = 3; // Jumlah kelinci
private static final int NUM_FOXES = 3; // Jumlah rubah
private List<Animal> animals = new ArrayList<>();

public void initialize() {
// Tambahkan kelinci
animals.add(new Rabbit(0, 0));
animals.add(new Rabbit(1, 1));
animals.add(new Rabbit(2, 2));

// Tambahkan rubah
animals.add(new Fox(3, 3));
animals.add(new Fox(4, 4));
animals.add(new Fox(0, 4));
}

public void simulate(int steps) {
for (int step = 1; step <= steps; step++) {
System.out.println("Step: " + step);
String[][] grid = new String[GRID_SIZE][GRID_SIZE];

// Kosongkan grid
for (int i = 0; i < GRID_SIZE; i++) {
for (int j = 0; j < GRID_SIZE; j++) {
grid[i][j] = ".";
}
}

// Gerakkan hewan secara acak
for (Animal animal : animals) {
animal.move(GRID_SIZE);
grid[animal.x][animal.y] = animal.toString();
}

// Cetak grid
for (int i = 0; i < GRID_SIZE; i++) {
for (int j = 0; j < GRID_SIZE; j++) {
System.out.print(grid[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
}

public static void main(String[] args) {
FoxesAndRabbitsSimulation simulation = new FoxesAndRabbitsSimulation();
simulation.initialize();
simulation.simulate(5); // Jalankan 5 langkah simulasi
}
}
Output :

Komentar

Postingan populer dari blog ini

Tugas 2 PBO : Konsep OOP

Tugas Pertemuan 14 PBO

Tugas Pertemuan 10 PBO