Implemeted base classes; Refactored animals; Finished main.

This commit is contained in:
Jurn Wubben 2025-07-29 13:05:45 +02:00
parent 145a49ce7a
commit bd21c2ad30
18 changed files with 221 additions and 184 deletions

2
.gitignore vendored
View file

@ -66,3 +66,5 @@ fabric.properties
.idea/caches/build_file_checksums.ser.direnv .idea/caches/build_file_checksums.ser.direnv
.direnv/ .direnv/
*.class

View file

@ -1,23 +0,0 @@
package com.ing.zoo;
public class Hippo {
public String name;
public String helloText;
public String eatText;
public Hippo()
{
}
public void sayHello()
{
helloText = "splash";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch lovely";
System.out.println(eatText);
}
}

View file

@ -1,23 +0,0 @@
package com.ing.zoo;
public class Lion {
public String name;
public String helloText;
public String eatText;
public Lion()
{
}
public void sayHello()
{
helloText = "roooaoaaaaar";
System.out.println(helloText);
}
public void eatMeat()
{
eatText = "nomnomnom thx mate";
System.out.println(eatText);
}
}

View file

@ -1,47 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Pig {
public String name;
public String helloText;
public String eatText;
public String trick;
public Pig()
{
}
public void sayHello()
{
helloText = "splash";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch oink";
System.out.println(eatText);
}
public void eatMeat()
{
eatText = "nomnomnom oink thx";
System.out.println(eatText);
}
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "rolls in the mud";
}
else
{
trick = "runs in circles";
}
System.out.println(trick);
}
}

View file

@ -1,41 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Tiger {
public String name;
public String helloText;
public String eatText;
public String trick;
public Tiger()
{
}
public void sayHello()
{
helloText = "rraaarww";
System.out.println(helloText);
}
public void eatMeat()
{
eatText = "nomnomnom oink wubalubadubdub";
System.out.println(eatText);
}
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "jumps in tree";
}
else
{
trick = "scratches ears";
}
System.out.println(trick);
}
}

View file

@ -1,26 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Zebra {
public String name;
public String helloText;
public String eatText;
public String trick;
public Zebra()
{
}
public void sayHello()
{
helloText = "zebra zebra";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch zank yee bra";
System.out.println(eatText);
}
}

View file

@ -2,37 +2,65 @@ package com.ing.zoo;
import java.util.Scanner; import java.util.Scanner;
import com.ing.zoo.animals.*;
import com.ing.zoo.base.*;
public class Zoo { public class Zoo {
public static void main(String[] args) public static void main(String[] args)
{ {
String[] commands = new String[4]; Animal[] animals = {
commands[0] = "hello"; new Lion("henk"),
commands[1] = "give leaves"; new Hippo("elsa"),
commands[2] = "give meat"; new Pig("dora"),
commands[3] = "perform trick"; new Tiger("wally"),
new Zebra("marty")
Lion henk = new Lion(); };
henk.name = "henk";
Hippo elsa = new Hippo();
elsa.name = "elsa";
Pig dora = new Pig();
dora.name = "dora";
Tiger wally = new Tiger();
wally.name = "wally";
Zebra marty = new Zebra();
marty.name = "marty";
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
System.out.print("Voer uw command in: "); System.out.print("Enter your command: ");
String input = scanner.nextLine(); String input = scanner.nextLine().trim();
if(input.equals(commands[0] + " henk")) String[] splittedInput = input.split("\\s+");
{
henk.sayHello(); scanner.close(); // NOTE: You don't do this in the template for some reason; It's a resource leak.
}
else if (splittedInput.length == 0) {
{ System.out.println("Please provide an command.");
System.out.println("Unknown command: " + input); return;
} }
if (splittedInput[0].equals("hello")) {
for (Animal animal : animals) {
if (splittedInput.length > 1 && animal.name.equals(splittedInput[1]))
animal.sayHello();
else if (splittedInput.length == 1) animal.sayHello();
}
return;
}
for (Animal animal : animals) {
switch (input) {
case "give leaves":
if (animal instanceof HerbivoreBehavior)
((HerbivoreBehavior) animal).eatLeaves();
break;
case "give meat":
if (animal instanceof CarnivoreBehavior)
((CarnivoreBehavior) animal).eatMeat();
break;
case "perform trick":
animal.performTrick();
break;
default:
System.err.println("Invalid command: " + input);
return;
};
}
return;
} }
} }

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Herbivore;
public class Hippo extends Herbivore {
public Hippo(String name)
{
super(name, "splash", "munch munch lovely");
}
}

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Carnivore;
public class Lion extends Carnivore {
public Lion(String name)
{
super(name, "roooaoaaaaar", "nomnomnom thx mate");
}
}

View file

@ -0,0 +1,30 @@
package com.ing.zoo.animals;
import java.util.Random;
import com.ing.zoo.base.Omnivore;
public class Pig extends Omnivore {
public String trick;
public Pig(String name)
{
super(name, "splash", "munch munch oink", "nomnomnom oink thx");
}
@Override
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "rolls in the mud";
}
else
{
trick = "runs in circles";
}
System.out.println(trick);
}
}

View file

@ -0,0 +1,31 @@
package com.ing.zoo.animals;
import java.util.Random;
import com.ing.zoo.base.Carnivore;
public class Tiger extends Carnivore {
public String trick;
public Tiger(String name)
{
super(name, "rraaarww", "nomnomnom oink wubalubadubdub");
}
@Override
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "jumps in tree";
}
else
{
trick = "scratches ears";
}
System.out.println(trick);
}
}

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Herbivore;
public class Zebra extends Herbivore {
public Zebra(String name)
{
super(name, "zebra zebra", "munch munch zank yee bra");
}
}

View file

@ -0,0 +1,16 @@
package com.ing.zoo.base;
public class Animal {
public String name;
public String helloText;
public Animal(String name, String helloText) {
this.name = name;
this.helloText = helloText;
}
public void sayHello() {
System.out.println(this.helloText);
}
public void performTrick(){}
}

View file

@ -0,0 +1,14 @@
package com.ing.zoo.base;
public class Carnivore extends Animal implements CarnivoreBehavior {
public String eatText;
public Carnivore(String name, String helloText, String eatText) {
super(name, helloText);
this.eatText = eatText;
}
public void eatMeat() {
System.out.println(eatText);
}
}

View file

@ -0,0 +1,5 @@
package com.ing.zoo.base;
public interface CarnivoreBehavior {
public void eatMeat();
}

View file

@ -0,0 +1,13 @@
package com.ing.zoo.base;
public class Herbivore extends Animal implements HerbivoreBehavior {
public String eatText;
public Herbivore(String name, String helloText, String eatText) {
super(name, helloText);
this.eatText = eatText;
}
public void eatLeaves() {
System.out.println(eatText);
}
}

View file

@ -0,0 +1,5 @@
package com.ing.zoo.base;
public interface HerbivoreBehavior {
public void eatLeaves();
}

View file

@ -0,0 +1,23 @@
package com.ing.zoo.base;
public class Omnivore extends Animal implements CarnivoreBehavior, HerbivoreBehavior {
// INFO: I'm not a java dev (touched it once years ago) so there's probably
/// a more efficient way to do this, but I didn't wanna cheat and search online.
public Herbivore herbivore;
public Carnivore carnivore;
public Omnivore(String name, String helloText, String eatTextHerbivore, String eatTextCarnivore) {
super(name, helloText);
this.herbivore = new Herbivore(name, helloText, eatTextHerbivore);
this.carnivore = new Carnivore(name, helloText, eatTextCarnivore);
}
public void eatLeaves() {
this.herbivore.eatLeaves();
}
public void eatMeat() {
this.carnivore.eatMeat();
}
}