Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Eine Zuweisung ist dann möglich ist, falls die neue Klasse (links) weiter oben im selben Ast wie die bereits existierende Klasse (rechts) ist.
D d = new D();
C c = d;
//E e = d;
Pascal Schärli 06.11.2020
Beim Casten kommt es also nicht darauf an, was Java denkt, dass das Objekt ist, sondern als was es erstellt wurde. Solange alle nötigen Informationen vorhanden sind, ist ein Cast möglich.
B b = new D();
C c = (C) b;
//E e = (E) b;
package u6a3;
/**
* abstract class for geometric objects
*/
public abstract class GeometricObject implements Comparable {
public abstract int area();
public boolean smallerThan(Comparable rhs) {
GeometricObject other = (GeometricObject) rhs;
return this.area() < other.area();
}
}
Pascal Schärli 06.11.2020
private GenericList insertSorted(GenericList list, Object value) {
if (list == null) return new GenericList(value, null);
Comparable lhs = (Comparable) value;
Comparable rhs = (Comparable) list.value;
if (lhs.smallerThan(rhs)) return new GenericList(value, list);
list.next = insertSorted(list.next, value);
return list;
}
public GenericList sort(GenericList list) {
if (list == null) return null;
return insertSorted(sort(list.next), list.value);
}
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
ArrayList myList = new ArrayList();
myList.add(42);
myList.add(“I <3 Info II”);
int i = (Integer)myList.get(0);
String s = (String)myList.get(1);
Eine ArrayList kann beliebige Typen speichern:
Pascal Schärli 06.11.2020
ArrayList<Integer> myList = new ArrayList<Integer>();
myList.add(42);
int i = myList.get(0);
myList.add(“Hello World”);
Man kann einer ArrayList sagen, dass sie nur einen bestimmten Typ speichern darf:
Compile-Error
Pascal Schärli 06.11.2020
public class Tree<T> {
private T value;
Tree right;
Tree left;
public Tree(T value) {
right = null;
left = null;
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T v) {
value = v;
}
}
Tree<Integer> tree1 = new Tree<Integer>(5);
tree1.right = new Tree<Integer>(3);
tree1.left = new Tree<Integer>(6);
Tree<String> tree2 = new Tree<String>("root");
tree2.right = new Tree<String>("left");
tree2.left = new Tree<String>("right");
5
3
6
"root"
"left"
"right"
tree1
tree2
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 9
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 9
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 9
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 9
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 15
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 15
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 15
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls die Wurzel das gesuchte Element ist
-> gefunden!
Falls der geschte Wert kleiner als die Wurzel ist
-> Links weitersuchen
Falls der geschte Wert grösser als die Wurzel ist
-> Rechts weitersuchen
Gesucht: 15
\(\rightarrow\) Nicht vorhanden
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls grösser
-> im rechten Teilbaum einfügen
Falls kleiner
-> im linken Teilbaum einfügen
Falls Knoten noch nicht existiert
-> fertig
Einfügen: 14
14
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls grösser
-> im rechten Teilbaum einfügen
Falls kleiner
-> im linken Teilbaum einfügen
Falls Knoten noch nicht existiert
-> fertig
Einfügen: 14
14
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element Finden:
Falls grösser
-> im rechten Teilbaum einfügen
Falls kleiner
-> im linken Teilbaum einfügen
Falls Knoten noch nicht existiert
-> fertig
Einfügen: 14
14
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
18
20
19
22
Element entfernen - Methode 1
Ersetzen durch kleinstes Element
im rechten Teilbaum
Element entfernen - Methode 2
Ersetzen durch grösstes Element
im linken Teilbaum
Entfernen: 18
14
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
20
22
Element entfernen - Methode 1
Ersetzen durch kleinstes Element
im rechten Teilbaum
Element entfernen - Methode 2
Ersetzen durch grösstes Element
im linken Teilbaum
Entfernen: 18
19
14
Pascal Schärli 06.11.2020
1
3
5
6
9
10
12
19
20
22
Element entfernen - Methode 1
Ersetzen durch kleinstes Element
im rechten Teilbaum
Element entfernen - Methode 2
Ersetzen durch grösstes Element
im linken Teilbaum
Entfernen: 6
14
Pascal Schärli 06.11.2020
1
3
5
9
10
12
20
22
Element entfernen - Methode 1
Ersetzen durch kleinstes Element
im rechten Teilbaum
Element entfernen - Methode 2
Ersetzen durch grösstes Element
im linken Teilbaum
Entfernen: 6
19
14
Pascal Schärli 06.11.2020
1
3
5
9
10
12
19
20
22
Gib den Wert vom Knoten aus
Gib den Linken Teilbaum in Pre-Order aus
Gib den Rechte Teilbaum in Pre-Order aus
14
12 5 3 1 9 10 19 14 20 22
Pascal Schärli 06.11.2020
1
3
5
9
10
12
19
20
22
Gib den Linken Teilbaum in In-Order aus
Gib den Wert vom Knoten aus
Gib den Rechte Teilbaum in In-Order aus
14
1 3 5 9 10 12 14 19 20 22
Pascal Schärli 06.11.2020
1
3
5
9
10
12
19
20
22
Gib den Linken Teilbaum in Post-Order aus
Gib den Rechte Teilbaum in Post-Order aus
Gib den Wert vom Knoten aus
14
1 2 10 9 5 14 22 20 19 12
Pascal Schärli 06.11.2020
Spielregeln:
Blau
gewinnt
Blau
gewinnt
Grün
gewinnt
Grün
gewinnt
Grün
gewinnt
Pascal Schärli 06.11.2020
Spielregeln:
Blau
gewinnt
Blau
gewinnt
Grün
gewinnt
Grün
gewinnt
Grün
gewinnt
Blau
gewinnt
Blau
gewinnt
Grün
gewinnt
Grün
gewinnt
Grün
gewinnt
Grün
gewinnt
Grün
gewinnt
\(\Rightarrow\) Grün gewinnt!
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
X ist am Zug - wer gewinnt?
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Das Reversi.jar File könnt ihr in den Properties wie J-Unit einfügen
Pascal Schärli 06.11.2020
Um ein Spiel zu starten müsst Ihr dafür eine neue Run-Configuration erstellen:
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020
Pascal Schärli 06.11.2020