Informatik II Übung 06

Werbung
Informatik II
Übung 06
Benjamin Hepp
[email protected]
5 April 2017
Nachbesprechung U5
5 April 2017
Informatik II - Übung 01
2
Nachbesprechung U5
§
1. Einfach verkettete Listen
§ Keine Probleme
§
2. Modifizierung von Listen
§ Wenig Probleme
§
3. Sortieren von Listen
§ Widerholung in Eclipse
§
4. Noch ein wachsender Stack
§ Wenig Probleme
5 April 2017
Informatik II - Übung 02
3
Nachbesprechung U5.3
§ Insertion Sort
§ Erzeuge eine neue Liste indem jedes neue Element an der
richtigen Stelle eingefuegt wird
§
§
§
§
§
§
5 April 2017
Sortiere [1, 4, 3, 9, 5]
[1]
[1, 4]
[1, 3, 4]
[1, 3, 4, 9]
[1, 3, 4, 5, 9]
Informatik II - Übung 02
4
Nachbesprechung U5.3
§ Eclipse
5 April 2017
Informatik II - Übung 02
5
Objektorientierung in Java
5 April 2017
Informatik II - Übung 01
6
Objektorientierung in Java - Typen
§ Jede Variable in Java hat einen Typ
§ Primitive Typen: int, char, float, double
§ Nicht-primitive Typen: Object, String, ArrayList, StringBuffer
§ Ein nicht-primitiver Typ heisst auch Klasse
5 April 2017
Informatik II - Übung 02
7
Objektorientierung in Java - Klassen
§ Ein Objekt ist eine Instanz einer Klasse
§ Wird auf dem Heap mit new erzeugt:
§ new ArrayList();
§ Hat einen Zustand (Member-Variablen)
§ Enthält Methoden um seinen Zustand abzufragen oder zu
manipulieren
§ Enthält Methoden um mit anderen Objekten zu interagieren
5 April 2017
Informatik II - Übung 02
8
Objektorientierung in Java - Vererbung
§ Klassen sind in einer Baum-Hierarchie angeordnet
§ Eine Klasse kann von einer anderen Klasse erben (inherit)
§ Jede Klasse hat einen Vorgaenger (parent)
§ Eine Klasse kann 0 oder mehr Kinder (children) haben
§ Ausnahme: Object ist die Wurzel in der Klassenhierarchie
5 April 2017
Informatik II - Übung 02
9
Objektorientierung in Java - Beispiel
5 April 2017
Informatik II - Übung 02
Von Simon
10
Objektorientierung in Java - Polymorphie
class Mensch {
...
}
class Mann extends Mensh {
...
}
class Sportler extends Mann {
...
}
5 April 2017
Informatik II - Übung 02
11
Objektorientierung in Java - Polymorphie
Mann mann = new Mann();
Sportler sportler = new Sportler();
// Sportler sportler2 = mann; à Nicht erlaubt
Mann mann2 = sportler; à Erlaubt
SportStudent sportStudent = new SportStudent();
Sportler sportler3 = sportStudent; à Ok
Student student = sportStudent; à Ok
§ Was ist mit
Rennfahrer rennFahrer = sportStudent; ???
Mann mann3 = sportStudent; ???
Kaufmann kaufmann = new Bäcker(); ????
5 April 2017
Informatik II - Übung 02
12
Objektorientierung in Java - Dynamischer Typ
§ Jede Objekt-Variable ist mit zwei Typen verknuepft:
§ Der statische Typ der Variablen selbst
§ Der dynamische Typ des Objekts das die Variable referenziert
§ Beispiel:
Mann mann = new Mann();
Mann mann2 = new Student();
Sportler sportler = new SportStudent();
5 April 2017
Informatik II - Übung 02
13
Objektorientierung in Java - Typ-Umwandlung
§ Es ist auch moeglich wieder auf einen spezielleren Typ
zuzugreifen.
§ Dazu muessen wir den allgemeineren Typ umwandeln (cast)
Mann mann = new Student();
// Student student = mann; à Nicht erlaubt
// Aber wir koennen casten
Student student = (Student)mann; à Erlaubt
Falls mann kein Student-Objekts ist wird eine
ClassCastException geworfen. Check moeglich mit:
boolean isStudent = mann instanceof Student;
5 April 2017
Informatik II - Übung 02
14
Objektorientierung in Java - Factory Klassen
§ Eine Moeglichkeit die Erzeugung von Objekten zu abstrahieren
sind Factory Klassen/Methoden.
class MenschFactory {
Mensch create(String name) {
if (...) {
new Sportler(...);
} else if {
new Bäcker();
}
throw IllegalArgumentException();
}
}
5 April 2017
Informatik II - Übung 02
15
Objektorientierung in Java - Abstrakte Typen
§ Java erlaubt die Definition von abstrakten Klassen.
abstract class AbstractClass {
abstract void doSomething();
void doSomethingElse() {
...
}
}
§ Abstrakte Klassen koennen nicht instanziert werden:
§ new AbstractClass(); à Nicht erlaubt
§ Andere Klassen koennen von abstrakten Klassen erben
§ Nuetzlich um Basisfunktionalität zu teilen
5 April 2017
Informatik II - Übung 02
16
Objektorientierung in Java - Mehrfachvererbung
§ Java unterstützt keine Mehrfachvererbung mit Klassen
§ Es gibt aber einen weiteren Typ in Java: interface
§ Ein interface ist wie eine abstrakte Klasse die nur abstrakte
Methoden enthält (nicht mehr ganz korrekt in Java 8,
default-Implementierungen möglich)
§ Eine Klasse kann mehrere Interfaces implementieren.
§ Alle Methoden einer Interfaces muessen in der Klasse
implementiert werden.
5 April 2017
Informatik II - Übung 02
17
Objektorientierung in Java - Interfaces
interface Fahrzeug {
void start();
void stop();
}
class Lastwagen implements Fahrzeug {
public void start() {
}
public void stop() {
}
}
Fahrzeug f = new Lastwagen();
5 April 2017
Informatik II - Übung 02
18
Objektorientierung in Java – Demo in Eclipse
5 April 2017
Informatik II - Übung 01
19
Herunterladen