From bb2827693791b194d12f3dff96be5ab7c07732ec Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Thu, 23 Apr 2015 21:46:44 +0300 Subject: [PATCH] Created creature hierarchy. --- .../java/com/iluwatar/AbstractCreature.java | 41 +++++++++++++++++++ .../src/main/java/com/iluwatar/Color.java | 17 ++++++++ .../src/main/java/com/iluwatar/Creature.java | 12 ++++++ .../src/main/java/com/iluwatar/Dragon.java | 8 ++++ .../src/main/java/com/iluwatar/Goblin.java | 8 ++++ .../src/main/java/com/iluwatar/Movement.java | 17 ++++++++ .../src/main/java/com/iluwatar/Octopus.java | 8 ++++ .../src/main/java/com/iluwatar/Size.java | 22 ++++++++++ 8 files changed, 133 insertions(+) create mode 100644 specification/src/main/java/com/iluwatar/AbstractCreature.java create mode 100644 specification/src/main/java/com/iluwatar/Color.java create mode 100644 specification/src/main/java/com/iluwatar/Creature.java create mode 100644 specification/src/main/java/com/iluwatar/Dragon.java create mode 100644 specification/src/main/java/com/iluwatar/Goblin.java create mode 100644 specification/src/main/java/com/iluwatar/Movement.java create mode 100644 specification/src/main/java/com/iluwatar/Octopus.java create mode 100644 specification/src/main/java/com/iluwatar/Size.java diff --git a/specification/src/main/java/com/iluwatar/AbstractCreature.java b/specification/src/main/java/com/iluwatar/AbstractCreature.java new file mode 100644 index 000000000..304c99cbc --- /dev/null +++ b/specification/src/main/java/com/iluwatar/AbstractCreature.java @@ -0,0 +1,41 @@ +package com.iluwatar; + +public abstract class AbstractCreature implements Creature { + + private String name; + private Size size; + private Movement movement; + private Color color; + + public AbstractCreature(String name, Size size, Movement movement, Color color) { + this.name = name; + this.size = size; + this.movement = movement; + this.color = color; + } + + @Override + public String toString() { + return String.format("%s [size=%s, movement=%s, color=%s]", name, size, movement, color); + } + + @Override + public String getName() { + return name; + } + + @Override + public Size getSize() { + return size; + } + + @Override + public Movement getMovement() { + return movement; + } + + @Override + public Color getColor() { + return color; + } +} diff --git a/specification/src/main/java/com/iluwatar/Color.java b/specification/src/main/java/com/iluwatar/Color.java new file mode 100644 index 000000000..8f07d7d1e --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Color.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +public enum Color { + + DARK("dark"), LIGHT("light"), GREEN("green"), RED("red"); + + private String title; + + Color(String title) { + this.title = title; + } + + @Override + public String toString() { + return title; + } +} diff --git a/specification/src/main/java/com/iluwatar/Creature.java b/specification/src/main/java/com/iluwatar/Creature.java new file mode 100644 index 000000000..3bb330891 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Creature.java @@ -0,0 +1,12 @@ +package com.iluwatar; + +public interface Creature { + + String getName(); + + Size getSize(); + + Movement getMovement(); + + Color getColor(); +} diff --git a/specification/src/main/java/com/iluwatar/Dragon.java b/specification/src/main/java/com/iluwatar/Dragon.java new file mode 100644 index 000000000..c8bc841c6 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Dragon.java @@ -0,0 +1,8 @@ +package com.iluwatar; + +public class Dragon extends AbstractCreature { + + public Dragon() { + super("Dragon", Size.LARGE, Movement.FLYING, Color.RED); + } +} diff --git a/specification/src/main/java/com/iluwatar/Goblin.java b/specification/src/main/java/com/iluwatar/Goblin.java new file mode 100644 index 000000000..6d9948667 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Goblin.java @@ -0,0 +1,8 @@ +package com.iluwatar; + +public class Goblin extends AbstractCreature { + + public Goblin() { + super("Goblin", Size.SMALL, Movement.WALKING, Color.GREEN); + } +} diff --git a/specification/src/main/java/com/iluwatar/Movement.java b/specification/src/main/java/com/iluwatar/Movement.java new file mode 100644 index 000000000..8086b4ae9 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Movement.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +public enum Movement { + + WALKING("walking"), SWIMMING("swimming"), FLYING("flying"); + + private String title; + + Movement(String title) { + this.title = title; + } + + @Override + public String toString() { + return title; + } +} diff --git a/specification/src/main/java/com/iluwatar/Octopus.java b/specification/src/main/java/com/iluwatar/Octopus.java new file mode 100644 index 000000000..818dcf785 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Octopus.java @@ -0,0 +1,8 @@ +package com.iluwatar; + +public class Octopus extends AbstractCreature { + + public Octopus() { + super("Octopus", Size.NORMAL, Movement.SWIMMING, Color.DARK); + } +} diff --git a/specification/src/main/java/com/iluwatar/Size.java b/specification/src/main/java/com/iluwatar/Size.java new file mode 100644 index 000000000..1045b3fd0 --- /dev/null +++ b/specification/src/main/java/com/iluwatar/Size.java @@ -0,0 +1,22 @@ +package com.iluwatar; + +/** + * + * Enumeration for creature size. + * + */ +public enum Size { + + SMALL("small"), NORMAL("normal"), LARGE("large"); + + private String title; + + Size(String title) { + this.title = title; + } + + @Override + public String toString() { + return title; + } +}