Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions src/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions src/main/java/Circus/Asset.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package Circus;

public interface Asset {
default int getValue(){
return 20;
}
int getValue();

}
65 changes: 53 additions & 12 deletions src/main/java/Circus/Circus.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
package Circus;

import Circus.animal.*;
import Circus.stuff.*;
import Circus.animal.Animal;
import Circus.animal.Duck;
import Circus.animal.Parrot;
import Circus.stuff.Cannon;
import Circus.stuff.Equipment;
import Circus.animal.Tiger;
import Circus.stuff.Cage;
import Circus.stuff.Ladder;

import java.util.ArrayList;
import java.util.Arrays;

public class Circus {
private static Animal[] animals = {
new Duck(),
new Parrot()
new Duck("Drake"),
new Parrot("Polly")
};
private static Equipment[] equipments = {
new Ladder(50),
Expand All @@ -26,21 +35,53 @@ private static int calculateValue(Asset[] assets) {
for (Asset a : assets) {
if (a.getValue() <= 5) {
System.out.println("Ignoring low value item: " + a.getValue());
} else {
total += a.getValue();
System.out.println("Adding item value: " + a.getValue());
// some
// more
// code
// here ...
continue;
}
total += a.getValue();
System.out.println("Adding item value: " + a.getValue());
}
return total;
}

public static void main(String[] args) {

// makeAnimalsTalk();
// System.out.println("Total value of equipments " + calculateValue(equipments));
// System.out.println("Total value of animals " + calculateValue(animals));

ArrayList<Animal> animalArrayList = new ArrayList<>(Arrays.asList(animals));
animalArrayList.add(new Duck("Duckling"));
Parrot parrot = new Parrot("Parrot");
animalArrayList.add(parrot);
System.out.println(animalArrayList.size());
animalArrayList.sort(Animal.compareByName);
for (Animal a : animalArrayList) {
System.out.println(a.name);
}
System.out.println(animalArrayList.indexOf(parrot));

makeAnimalsTalk();
System.out.println("Total value of equipments " + calculateValue(equipments));
System.out.println("Total value of equipments " + calculateValue(animals));
System.out.println("Total value of animals " + calculateValue(animals));
Cage<Duck> duckCage = new Cage<>();
Duck duck = new Duck("Ducky");
duckCage.lockUp(duck);
Parrot parot = new Parrot("Parroty");
Cage<Parrot> parrotCage = new Cage<>();
parrotCage.lockUp(parot);

Tiger tiger = new Tiger("Tigress");
Cage<Tiger> tigerCage = new Cage<>();
tigerCage.lockUp(tiger);

ArrayList<Cage> cages = new ArrayList<>();
cages.add(duckCage);
cages.add(parrotCage);
cages.add(tigerCage);

for (Cage c : cages) {
c.release();
}

}
}
22 changes: 12 additions & 10 deletions src/main/java/Circus/Trainer.java
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
package Circus;

import Circus.animal.*;
import Circus.animal.Animal;
import Circus.animal.Bird;
import Circus.animal.Duck;

public class Trainer {
public static void main(String[] args) {
Duck d = new Duck();
Duck d = new Duck("Donald");
getToSpeak(d);

Bird b = (Bird)d; // upcasting
Bird b = (Bird) d; // upcasting
getToSpeak(b);

Animal a = (Animal)b; // upcasting
Animal a = (Animal) b; // upcasting
getToSpeak(a);

Duck d2 = (Duck) a; // downcasting
train(new Duck());
// train(new Circus.animal.Parrot());
Animal a2 = new Animal();
Bird b2 = new Bird();
train(new Duck("Daisy"));
// train(new circus.animal.Parrot());
}

private static void getToSpeak(Animal animal) {
System.out.println(animal.speak());
}

private static void train(Bird bird) {
Duck d = (Duck) bird;
d.swim();
if (bird instanceof Duck) {
Duck d = (Duck) bird;
d.swim();
}
}
}
27 changes: 15 additions & 12 deletions src/main/java/Circus/animal/Animal.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package Circus.animal;

import Circus.*;

public class Animal implements Asset{

public String speak(){
return null;
}

@Override
public int getValue() {
return 20;
}
import Circus.Asset;

import java.util.Comparator;

public abstract class Animal implements Asset {
public String name;

public abstract String speak();

public static Comparator<Animal> compareByName = new Comparator<Animal>() {
@Override
public int compare(Animal a1, Animal a2) {
return a1.name.toLowerCase().compareTo(a2.name.toLowerCase());
}
};
}
2 changes: 1 addition & 1 deletion src/main/java/Circus/animal/Bird.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package Circus.animal;

public class Bird extends Animal {
public abstract class Bird extends Animal {
public void fly() {
System.out.println("Whee ...");
}
Expand Down
13 changes: 11 additions & 2 deletions src/main/java/Circus/animal/Duck.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,24 @@
public class Duck extends Bird {
@Override
public String speak() {
return "Quack Quack";
return toString() + " Quack Quack";
}

@Override
public String toString() {
return "I'm a Circus.animal.Duck";
return "I'm " + name + ". I am a Duck!";
}

public void swim() {
System.out.println("I'm swimming...");
}

@Override
public int getValue() {
return 10;
}

public Duck(String name) {
this.name = name;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package circus.animal;
package Circus.animal;

public class Elephant extends Animal {
@Override
Expand All @@ -20,4 +20,4 @@ public Elephant(String name) {
this.name = name;
}

}
}
13 changes: 11 additions & 2 deletions src/main/java/Circus/animal/Parrot.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,20 @@
public class Parrot extends Bird {
@Override
public String speak() {
return "Polly wants a cracker";
return name + " wants a cracker";
}

@Override
public String toString() {
return "I'm a parrot";
return "My name is " + name + ". I am a Parrot!";
}

@Override
public int getValue() {
return 20;
}

public Parrot(String name) {
this.name = name;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package circus.animal;
package Circus.animal;

public class Tiger extends Animal {
@Override
Expand All @@ -19,4 +19,4 @@ public String speak() {
public Tiger(String name) {
this.name = name;
}
}
}
16 changes: 16 additions & 0 deletions src/main/java/Circus/stuff/Cage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package Circus.stuff;

// Cage
public class Cage<T> {
private T t;

public void lockUp(T t) {
this.t = t;
System.out.println("In the cage: " + t);
}

public T release() {
System.out.println(t + " out of cage");
return t;
}
}
2 changes: 1 addition & 1 deletion src/main/java/Circus/stuff/Cannon.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public Cannon(int purchasePrice) {
public int getValue() {
return purchasePrice / 3;
}
}
}
4 changes: 2 additions & 2 deletions src/main/java/Circus/stuff/Equipment.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package Circus.stuff;

import Circus.*;
import Circus.Asset;

public abstract class Equipment implements Asset{
public abstract class Equipment implements Asset {
protected int purchasePrice;

public Equipment(int purchasePrice) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/Circus/stuff/Ladder.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public Ladder(int purchasePrice) {
public int getValue() {
return purchasePrice / 2;
}
}
}
3 changes: 3 additions & 0 deletions src/main/java/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: Circus.Circus

5 changes: 0 additions & 5 deletions src/main/java/circus/Asset.java

This file was deleted.

Loading