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
Posting Komentar