public class Flower extends java.lang.Object implements java.io.Serializable, java.lang.Comparable<Flower>
Diese Klasse repraesentiert eine Blume. Eine Blume wird immer durch die drei umliegenden Position
en
definiert.
Eine Blume kann nach der Erzeugung nicht mehr veraendert werden. Die Reihenfolge, in der die drei Positionen beim
Erzeugen an den Konstruktor uebergeben werden hat keine Auswirkung darauf, welche der drei Positionen bei einem
Aufruf von getFirst()
, getSecond()
bzw. getThird()
zurueckgeliefert wird. Intern werden
die Positionen umsortiert, damit zwei Blumen mit identischen Positionen, die jedoch mit vertauschter Reihenfolge der
Positionen erzeugt wurden, dennoch einfach vergleichbar sind.
Die Methode parseFlower(String)
kann einen String
in ein Flower-Objekt umwandeln, wenn das Format
gueltig ist.
Die Funktion hashCode()
liefert fuer alle gueltigen Blumen einen eindeutigen Hash-Wert zurueck. Spezielle
Datenstrukturen wie zum Beispiel ein HashSet
koennen sich das zu Nutze machen. Eine Blume ist weiterhin mit
anderen Blumen ueber das Comparable
-Interface vergleichbar, um eine sinnvolle Sortierung zu ermoeglichen.
Modifier and Type | Field and Description |
---|---|
static int |
COMBINATIONS
Anzahl an moeglichen Positionen
|
private Position[] |
positions
Positionen der Blume
|
private static long |
serialVersionUID
Serialisierungskonstante
|
Constructor and Description |
---|
Flower(Position first,
Position second,
Position third)
Erzeuge eine neue Blume unter Angabe der drei umliegenden Positionen.
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Flower flower) |
boolean |
equals(java.lang.Object o) |
Position |
getFirst()
Gib die erste Position der Blume zurueck.
|
Position |
getSecond()
Gib die zweite Position der Blume zurueck.
|
Position |
getThird()
Gib die dritte Position der Blume zurueck.
|
int |
hashCode() |
static Flower |
parseFlower(java.lang.String string)
Wandle einen uebergebenen
String in eine Blume um. |
private void |
setFirst(Position first)
Setze die erste Position der Blume.
|
private void |
setSecond(Position second)
Setze die zweite Position der Blume.
|
private void |
setThird(Position third)
Setze die dritte Position der Blume.
|
java.lang.String |
toString() |
private void |
updateOrder()
Sortiere die Positionen der Blume.
|
public static final int COMBINATIONS
private static final long serialVersionUID
private Position[] positions
public Flower(Position first, Position second, Position third)
first
- erste Positionsecond
- zweite Positionthird
- dritte Positionjava.lang.IllegalArgumentException
- falls eine der Positionen null
istpublic static Flower parseFlower(java.lang.String string)
String
in eine Blume um. Das Format ist: {(Pos1.column,Pos1.row),(Pos2.column,Pos2.row), (Pos3.column,Pos3.row)}
string
- umzuwandelnder StringFlower
-ObjektFlowerFormatException
- falls kein gueltiger String uebergeben wird oder das Format ungueltig istprivate void updateOrder()
public Position getFirst()
private void setFirst(Position first)
first
- erste Positionjava.lang.IllegalArgumentException
- falls die Position null
istpublic Position getSecond()
private void setSecond(Position second)
second
- zweite Positionjava.lang.IllegalArgumentException
- falls die Position null
istpublic Position getThird()
private void setThird(Position third)
third
- dritte Positionjava.lang.IllegalArgumentException
- falls die Position null
istpublic int hashCode()
hashCode
in class java.lang.Object
public int compareTo(Flower flower)
compareTo
in interface java.lang.Comparable<Flower>
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object