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