Implemeted base classes; Refactored animals; Finished main.
This commit is contained in:
parent
145a49ce7a
commit
bd21c2ad30
18 changed files with 221 additions and 184 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -66,3 +66,5 @@ fabric.properties
|
|||
.idea/caches/build_file_checksums.ser.direnv
|
||||
|
||||
.direnv/
|
||||
|
||||
*.class
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,37 +2,65 @@ package com.ing.zoo;
|
|||
|
||||
import java.util.Scanner;
|
||||
|
||||
import com.ing.zoo.animals.*;
|
||||
import com.ing.zoo.base.*;
|
||||
|
||||
public class Zoo {
|
||||
public static void main(String[] args)
|
||||
{
|
||||
String[] commands = new String[4];
|
||||
commands[0] = "hello";
|
||||
commands[1] = "give leaves";
|
||||
commands[2] = "give meat";
|
||||
commands[3] = "perform trick";
|
||||
|
||||
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";
|
||||
Animal[] animals = {
|
||||
new Lion("henk"),
|
||||
new Hippo("elsa"),
|
||||
new Pig("dora"),
|
||||
new Tiger("wally"),
|
||||
new Zebra("marty")
|
||||
};
|
||||
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.print("Voer uw command in: ");
|
||||
System.out.print("Enter your command: ");
|
||||
|
||||
String input = scanner.nextLine();
|
||||
if(input.equals(commands[0] + " henk"))
|
||||
{
|
||||
henk.sayHello();
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("Unknown command: " + input);
|
||||
String input = scanner.nextLine().trim();
|
||||
String[] splittedInput = input.split("\\s+");
|
||||
|
||||
scanner.close(); // NOTE: You don't do this in the template for some reason; It's a resource leak.
|
||||
|
||||
if (splittedInput.length == 0) {
|
||||
System.out.println("Please provide an command.");
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
10
src/com/ing/zoo/animals/Hippo.java
Normal file
10
src/com/ing/zoo/animals/Hippo.java
Normal 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");
|
||||
}
|
||||
}
|
||||
10
src/com/ing/zoo/animals/Lion.java
Normal file
10
src/com/ing/zoo/animals/Lion.java
Normal 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");
|
||||
}
|
||||
}
|
||||
30
src/com/ing/zoo/animals/Pig.java
Normal file
30
src/com/ing/zoo/animals/Pig.java
Normal 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);
|
||||
}
|
||||
}
|
||||
31
src/com/ing/zoo/animals/Tiger.java
Normal file
31
src/com/ing/zoo/animals/Tiger.java
Normal 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);
|
||||
}
|
||||
}
|
||||
10
src/com/ing/zoo/animals/Zebra.java
Normal file
10
src/com/ing/zoo/animals/Zebra.java
Normal 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");
|
||||
}
|
||||
}
|
||||
16
src/com/ing/zoo/base/Animal.java
Normal file
16
src/com/ing/zoo/base/Animal.java
Normal 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(){}
|
||||
}
|
||||
14
src/com/ing/zoo/base/Carnivore.java
Normal file
14
src/com/ing/zoo/base/Carnivore.java
Normal 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);
|
||||
}
|
||||
}
|
||||
5
src/com/ing/zoo/base/CarnivoreBehavior.java
Normal file
5
src/com/ing/zoo/base/CarnivoreBehavior.java
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
package com.ing.zoo.base;
|
||||
|
||||
public interface CarnivoreBehavior {
|
||||
public void eatMeat();
|
||||
}
|
||||
13
src/com/ing/zoo/base/Herbivore.java
Normal file
13
src/com/ing/zoo/base/Herbivore.java
Normal 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);
|
||||
}
|
||||
}
|
||||
5
src/com/ing/zoo/base/HerbivoreBehavior.java
Normal file
5
src/com/ing/zoo/base/HerbivoreBehavior.java
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
package com.ing.zoo.base;
|
||||
|
||||
public interface HerbivoreBehavior {
|
||||
public void eatLeaves();
|
||||
}
|
||||
23
src/com/ing/zoo/base/Omnivore.java
Normal file
23
src/com/ing/zoo/base/Omnivore.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in a new issue