9. Kapitel GENERICS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Größe: px
Ab Seite anzeigen:

Download "9. Kapitel GENERICS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm"

Transkript

1 9. Kapitel GENERICS Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

2 Übersicht 1 1. Programmstrukturierung mit Paketen (packages) 2. Vererbung 3. Abstrakte Klassen und Interfaces 4. Ausnahmebehandlung 5. Datenströme: die Java IO- Bibliothek 6. MulSthreading 7. CollecSons 8. Innere Klassen 9. Generics 10. ReflecSon

3 Lernziele des Kapitels 2 Verstehen warum man (in Java 5) Generics eingeführt hat. Kennenlernen des Generic- Konzepts. Verstehen, was generisch sein kann. Selbst generische Klassen und Methoden schreiben können.

4 Inhalt 3 1. Einführung / MoSvaSon 2. Generics (DefiniSon) 3. Generische Klassen Subtyping Wildcards 4. Generische Methoden 5. Anwendungsbeispiele

5 Beispiel: Einfacher Stack für bessmmte Objekte 5 Stack für String-Objekte Stack für Integer-Objekte Schlecht: 2 x quasi derselbe Code für dieselben Aufgaben. Frage: Kann man das mit unserem Wissen nicht besser machen? Wenn ja: Wie?

6 Beispiel: Einfacher Stack für alle Arten von Objekten 6 Laufzeitfehler

7 ADT Stack: Problem Typsicherheit 7 o Der ADT Stack ist prinzipiell offen für jeden Typ. o Man speichert Objekte vom allgemeinsten Typ Object. o Beim Lesen vom Stack (pop) werden diese allgemeinen Objekte auch wieder zurück geliefert. o Wenn man in einem Stack Integer- Objekte speichert, will man dort keine String- Objekte speichern doch mit einen allgemeinen Typ Object kann das nicht verhindert werden. o Abhilfe seit Java 5 : die Nutzung von Generics à bessere Typsicherheit, denn nur ganz spezielle Objekte kommen in die Datenstruktur. o Mit den Generics lässt sich bei der KonstrukSon des ADT Stack angeben, welche Objekte in den Stack aufgenommen werden dürfen. o Dann ist man auch sicher, welche Objekte man vom Stack zurück bekommt.

8 MoSvaSon 8 o Wie abstrahiere ich vom konkreten Typ eines Objekts? o Wie kann ich (typsichere) Containerklassen (z.b. einen ADT Stack) bauen, die jedes beliebige Objekt aufnehmen können? o Wie baue ich typsichere Frameworks? o Wie vermeide ich (unsichere) Casts und mache dadurch meinen Code typsicher?

9 9 Beispiel: Stack mit Generics

10 Beispiel: Stack mit Generics 10 Compilezeitfehler

11 Generische Typen Warum? 11 o Bei den ersten getypten Programmiersprachen (z.b. Pascal): o Programmierer musste dieselbe Datenstruktur für jeden Datentyp, der unterstützt wurde, definieren. Eine Liste von Zahlen, eine Liste von Zeichen und eine Liste von Datumsangaben wird (im Grunde) auf dieselbe Weise programmiert. Die Algorithmen zum Einfügen, Suchen und Löschen laufen stets gleich ab. Wünschenswert: die ImplemenSerung der Liste unabhängig von diesen Typen vorzunehmen. Erster Verbesserungsansatz in Java durch Vererbungsbeziehung Ziel nur teilweise erreicht à keine Unterstützung bezüglich der Typüberprüfungen zur Compilezeit.

12 Generische Typen in Java 12 o Ein generischer Typ à Erzeugung von Datentypen, die von den zu Grunde liegenden Typen abstrahieren. o CharakterisSsch für generischen Programmierung à die Algorithmen werden nicht für einen bessmmten Datentyp geschrieben. Sie stellen nur bessmmte Anforderungen an die Typen. o Generische Typen in der InformaSk: Datentypen mit der Möglichkeit zur Angabe von Typparametern.

13 Generische Programmierung Was ist das? 13 o In C++: Templates, in Java: Generics. o Der Begriff steht synonym für parametrisierte Typen. o Idee: Es werden zusätzliche Variablen für Typen, sogenannte Typ- Variablen eingeführt. o Diese Typ- Variablen repräsenseren zum Zeitpunkt der ImplemenSerung unbekannte Typen. o Erst bei der Verwendung der Klassen, Schninstellen und Methoden werden diese Typ- Variablen durch konkrete Typen ersetzt. o Damit kann typsichere Programmierung gewährleistet werden.

14 Generics wie funksonieren sie? 14 Formaler Typparameter Kein Cast mehr nötig! Fehlermeldung zur Compilezeit! The method push(string) in the type GenericSimpleStack<String> is not applicable for the arguments (int)

15 Generics: Eigenschaoen 15 o Generische Typen erlauben vom konkreten Typ zu abstrahieren. mit der Möglichkeit zur Angabe von Typparametern, d.h. Typ einer Variable, eines Parameters, eines Rückgabewertes etc. ist selber ein Variable (type variable). Klassen und Methoden haben, quasi als Schablone, einen zusätzlichen Typ- Parameter (type parameter), diese setzen dann die Typvariablen. Der Programmierer setzt die Typ- Parameter, so wie er es braucht und parametriert damit die Klassen bzw. Methoden. Klassen mit Typ- Parametern à generische Typen (generic types) bzw. generische Klassen (generic classes) Methoden mit Typ- Parametern à generische Methoden (generic methods) Typprüfung bereits zur Compilezeit à Typsicherheit. Verbessert Lesbarkeit und Robustheit der Programme. (Enqernte) Ähnlichkeiten zu Templates in C++ 15

16 Generics DefiniSon 16 DefiniSon von Typparametern: in spitzen Klammern hinter dem Klassen- oder Interfacenamen. Typparameter innerhalb der Klasse bzw. des Interfaces verwendbar wie ein Typ. Typparameter: keine elementaren Datentypen, nur Unterklassen von Object zulässig. Empfehlung für NamenskonvenSon Großbuchstabe E in Containerklassen Formaler Typparameter Verwendung des Typparameters in Methoden Verwendung des Typparameters bei Attributen

17 Generics Begriffe und Beispiele 17 Name Generischer Typ (generic type) Formaler Typ-Parameter (formal type parameter) Parametrisierter Typ (parametrized type) Aktueller Typ-Parameter (actual type parameter) Ungebundener Wildcard-Typ (unbounded wildcard type) Raw Type Gebundener Typ-Parameter (bounded type parameter) Rekursiv gebundener Typ-Parameter (recursive bounded type) Gebundener Wildcard-Typ (bounded wildcard type) Beispiel List<E> E List<String> String List<?> List <E extends Number> <E extends Comparable<E>> List<? extends Number> Generische Methode (generic method) static <E> List<E> aslist(e[] a) Type Token String.class

18 Generics Realisierung in Java 18 o Generics sind ein Compile- Zeit- Konstrukt, d.h. die Generics exisseren nur zur Compile- Zeit. o Die Typ- InformaSonen des generischen Typs werden vom Compiler enqernt (Typlöschung / type erasure). Typ- Parameter ist zur Laufzeit vom Typ Object. Typ- Parameter kann nicht in stasschen Variablen oder Methoden verwendet werden. Typ- Parameter kann nicht verwendet werden, um Objekte zu erzeugen. o Es gibt zur Laufzeit nur eine einzige Klasse pro generischem Typ (Raw type) sog. homogene Übersetzung. o In C++ wird für jede Ausprägung eines Templates der Code für eine Klasse bzw. FunkSon generiert und compiliert; es gibt also pro generischem Typ in C++ eine Klasse sog. heterogene Übersetzung.

19 Raw- Type einer generischen Klasse 19 Generische Klasse mit Typvariablen. Vom Compiler aus der generischen Klasse generierter sog. Raw- Type. Compilezeitkonstrukt Laufzeitkonstrukt

20 20 Typ- Variablen und parametrisierte Typen - KompaSbilität Gegeben: class C<E> { } class A { } class B extends A { } Dann geltenden folgende KompaSbilitätsbedingungen: C<A> # C<B> Vererbungsbeziehung kann nicht auf generische Typen übertragen werden. C<B> # C<A> C<Object> # C<A> C<Object> # C<B> C C<A> C C<B> Object E E # Object Erklärung: s.u. Der raw- Type ist mit jedem generischen Typ kompasbel Legende: kompatibel # nicht kompatibel

21 21 Parametrisierte Typen : parametrisierter Typ als aktueller Typ- Parameter Gegeben: class C<E> { } class D<T> { } Verwendung der Klasse C: C<D<A>> c = new C<D<A>>(); oder C<D<D<D<D<D<A>>>>>> c = new C<D<D<D<D<D<A>>>>>>();

22 22 Parametrisierte Typen : parametrisierter Typ als aktueller Typ Gegeben: class A { } class B<E> { } DefiniSon der Klasse C: class C<E> { B<E> b; void set(b<e> b) { this.b = b; } B<E> get() { return this.b; } } Verwendung der Klasse C: C<A> c = new C<A> (); c.set(new B<A> ()); B<A> b = c.get(); Formaler Typparameter Attribut-Typ ist eine Typ-Variable Parametrisierter Typ

23 23 Typ- Variablen mit Einschränkungen: gebundender Parametertyp Die Typ- Variable E der Klasse ist eingeschränkt auf CA- kompasble Typen. Vom Compiler generierter Raw-Type.

24 Sinn von Einschränkungen 24 o Einschränkung von Typen ist ein spezifischer Kontrakt: Es wird garansert, dass der aktuelle Typ- Parameter einer solchen Klasse kompasbel zu der definierten Einschränkung ist. Über eine Referenz vom Typ der Typ- Variablen können typsicher alle für den einschränkenden Typ definierten Methoden aufgerufen werden. Ohne Einschränkung auf CA könnte man auf eine E- Referenz nur die Methoden der Klasse Object aufrufen. Methode m der Klasse CA kann aufgerufen werden.

25 Generische Klassen und Vererbung 25 o Generische Klassen können Subklassen haben. o Die Subklasse ist Entweder selbst wieder generisch, oder Die Subklasse legt den Typ- Parameter fest und ist damit nicht generisch.

26 26 Generische Klassen und Vererbung Beispiel Generische Subklasse Klasse B ist selbst generisch.

27 27 Generische Klassen und Vererbung Beispiel Nicht- Generische Subklasse Klasse C ist nicht generisch legt den Typ von A fest (bindet den formalen Parameter E an Double)

28 Generics und Subtyping? 28 Subtyping nicht erlaubt!!! Fehler?! Ist eine Liste von Strings auch eine Liste von Objekten?... sonst ginge das: Versuch einem String ein Objekt zuzuweisen!

29 Invarianz 29 o Generics sind invariant Die Ableitungsbeziehung zwischen Typargumenten überträgt sich nicht auf generische Klassen à Generische Typen von Subtypen sind selber keine Subtypen (invariante Typen, keine Kovarianz). Es gibt daher auch keine Polymorphie zwischen verschiedenen Ausprägungen desselben generischen Typs.

30 30 Beispiel ohne Generics Typsichere Behandlung von verschiedenen (generischen) CollecSons Naheliegender Ansatz mit Generics Nur Collections, die mit Object parametrisiert sind, können an die Methode übergeben werden! for-each- Schleife Hoffnung: durch die Definition des Methodenparameters als Collection<Object> wird auch Collection<String> akzeptiert. Realität: Das ist aber nicht so. Beide Typen stehen in keinerlei Beziehung zueinander. Generics sind invariant Sie sind zwar durch Parameterisierung aus demselben generischen Typ entstanden, aber sie sind in keiner Weise kompatibel zueinander.

31 Wildcards 31 o o o o o o Wildcards <?> à bewusstes Vergessen der TypinformaSonen bzw. zeigen an, dass jede beliebige Ausprägung eines generischen Typs ( = alle Referenztypen ) möglich ist. <?> steht für unbekannter Typ nicht für Objekt (sonst gälten ja die Einschränkungen von oben). Damit ist es möglich verschiedene Unterklassen zusammenzuführen. <?> ist die Kurzform von <? extends Object> Bound Wildcards <? extends E> bzw. <? super E> stellen sicher, dass nicht jede beliebige Ausprägung des generischen Typs sondern nur bessmmte möglich sind. Verwendung von Wildcards: Nur bei der DeklaraSon von Parametern und Variablen. Bei der Objekterzeugung und der DeklaraSon von generischen Typen können sie nicht verwendet werden. Es gibt also keine Objekte eines Wildcard- Typs.

32 Wildcards: Beispiel 1 32 Box <?> bo3 = new Box <?>(); Bei der Erzeugung muss der aktuelle Typparameter angegeben werden, er darf nicht unbekannt bleiben. Der parametrisiertetyp von bo1 ist Number. Der parametrisiertetyp Typ von bo2 ist unbekannt.

33 Wildcards: Beispiel 2 33 Neuer Ansatz mit Generics Collection of unknown Wildcard Akzeptiert alle Arten von Collections!

34 Gebundene / Upper Bound Wildcards 34 Auf einem Typ, der mit einem nach oben beschränkten Wildcard parametrisiert ist, dürfen keine Methoden aufgerufen werden, die den Typparameter als Methodenparameter haben. Nur Subtypen von Number sind als unbekannter generischer Typ zulässig! Die Nutzung der Box<Number> ist eingeschränkt: setvalue() funktioniert nur über die konkrete Box<Integer> (also bi), aber nicht über die allgemeine Box<Number>. Der Zugriff ist unproblematisch. Lösung à später

35 Gebundene Wildcards bei Parametern 35 Wildcard für alle Klassen die Unterklasse von Shape sind

36 Gebundene / Lower Bound Wildcards 36 Nur Supertypen von A1 sind als unbekannter generischer Typ zulässig!

37 Mischen von upper und lower bound Wildcards 37 Mit der upper bound Wildcard (dem maximalen Typ) funktioniert das Lesen der Daten, aber nicht das Hinzufügen. Lesen von Daten aus generischem Typ è upper bound Wildcards Nur Supertypen von Number sind als unbekannter generischer Typ zulässig! Mit der lower bound Wildcard (dem minimalen Typ) funktioniert nun das Hinzufügen aber nicht mehr das Lesen der Daten. Hinzufügen von Objekten zu generischem Typ è lower bound Wildcards

38 38 Zusammenfassendes Beispiel Machen wir am Rechner.

39 Generische Methoden 39 Eine Klasse kann ganz normal ohne Generics deklariert werden, aber mit Methoden, die die Typen generisch vorschreiben. o Sowohl Klassenmethoden als auch Objektmethoden können als generische Methoden deklariert werden, z.b. static <E> Stack<E> combine (Stack<E> p). Angabe von <E> beim Klassennamen entfällt und verschiebt sich auf die Deklaration der Methode. Rückgabetyp: Objekt der generischen Klasse Stack<E> Parametertyp: Objekt der generischen Klasse Stack<E> o o o Im Gegensatz zu Klassen muss der Verwender den Typ- Parameter nicht explizit setzen, der Compiler leitet ihn aus den Typen des Aufrufs ab (type inference). In seltenen Fällen muss man den Typ für die Methode explizit angeben. Interessant ist dies für USlity- Klassen, die nur stassche FunkSonen anbieten, aber selbst nicht als Objekt vorliegen.

40 Generische Methoden: Beispiel 1 40 class MyStack<E> implements Stack<E> 2 Integer Stacks werden zu einem Stack zusammengefasst.

41 Generische Methoden: Beispiel 2 41 Fehler zur Compilezeit! Typparameter Verwendung des Typparameters

42 Generische Methoden mit gebundenen Parametern 42 o Typ- Parameter können - analog zu Wildcards auf bessmmte Klassen beschränkt werden. o <T extends C> - schränkt T auf C und Subklassen von C ein. o <T super C> - schränkt T auf C und Superklassen von C ein.

43 Generische Methoden: Beispiel 3 43 T muss von Klasse A abgeleitet sein T muss von den Interfaces I1 und I2 abgeleitet sein T muss von Klasse A und den Interfaces I1 und I2 abgeleitet sein

44 44 Generics mit mehreren Typparametern

45 Generics und Arrays 45 o Generics und Arrays unterscheiden sich grundsätzlich und harmonieren im allgemeinen schlecht. o Arrays sind kovariant (covariant) o Generics sind invariant (invariant) o Arrays prüfen ihren Typ zur Laufzeit (reified) o Generics sind ein Compilezeitkonstrukt, prüfen ihren Typ deshalb zur Compilezeit (type erasure). o Die Typlöschung ist der Grund dafür, das Arrays nicht so umgesetzt werden können, wie man es sich naiv vorstellt. o Es ist nicht möglich ein Array zu erstellen aus einem generischen Typ (List<E>[]) einem parametrierten Typ (List<String>[]) einem Typ- Parameter (E[])

46 Kovarianz, Kontravarianz, Invarianz 46 Vererbung vom Typ des Methodenparameters bzw. Rückgabewerts Typhierarchie des Methodenparameters ist entgegen der Vererbungshierarchie von ClassA und ClassB Typhierarchie des Rückgabewertes der Methode ist mit der Vererbungshierarchie von ClassA und ClassB Typhierachie des Methodenparameters bleibt unverändert Quelle: Wikipedia

47 RunSme- Klassen 47 o Was gibt das folgende Programm aus? Gibt true aus, weil alle Instanzen einer generischen Klasse dieselbe Runtime-Klasse haben

48 48 Anwendungsbeispiel: Queue

49 49 Anwendungsbeispiel: List

50 50 Anwendungsbeispiel: Node

51 Einsatz von Generics 51 o Allgemein Generics sind eine Form von Polymorphie. Diese ist immer dann sinnvoll, wenn der Code wiederverwendbar sein soll. o Generics kontra Polymorphie durch Subtyping: Generics für die Typsicherheit. Vorteil gegenüber Casts durch frühere Fehlererkennung. o Der Entwickler wird nicht gezwungen Generics zu verwenden. o Eine unchecked Warnung weist darauf hin, dass die Typsicherheit nicht gewährleistet ist.

52 Zusammenfassung 52 o Generics erlauben typsicher zu programmieren Typprüfungen erfolgen bereits zur Compilezeit nicht erst zur Laufzeit. D.h. Fehler treten an den Stellen auf, wo sie verursacht werden. Generics helfen dabei Programme robuster und weniger fehleranfällig zu machen. n Das Wegfallen von Casts macht den Code übersichtlicher. n Bedingungen lassen sich besser und einfacher ausdrücken. o Generische Klassen können leicht wiederverwendet werden. o In Bezug auf Arrays ist das Konzept noch nicht ausgereio.

53 Generics Erweiterungen in Java 7 53 Mit Java 7 ist die Typ- Inferenz für Generics deutlich verbessert worden: o In den meisten SituaSonen muss man den Typ- Parameter nur noch bei der DeklaraSon setzen. o Bei der Objekterzeugung kann die Angabe des Typ- Parameters durch den diamond <> ersetzt werden. Beispiele: List<String> list = new ArrayList<>();! Map<Integer, String> map = new HashMap<>();! Set<?> set = new HashSet<>();!

54 Weitere Infos zu Generics 54 o hnp://java.sun.com/j2se/1.5/pdf/generics- tutorial.pdf o hnp://angelikalanger.com/genericsfaq/javagenericsfaq.pdf

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1 JAVA 5 Generics Thema Java 5 Generics 1 Inhalt 1. Die Programmiersprache Java 2. Simple Generics 3. Das Beispielprogramm 4. Tieferer Einstieg in Generics 5. Arrays 6. Kritische Betrachtung von Generics

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Neuere Sprachelemente in Java

Neuere Sprachelemente in Java Softwaretechnik 1 Vorlesung Neuere Sprachelemente in Java Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Neuerungen seit Java 5.0 Java Spracherweiterungen

Mehr

Java I Vorlesung Generics und Packages

Java I Vorlesung Generics und Packages Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

Probleme ohne generische Typen

Probleme ohne generische Typen Generics seit Java1.5 SSJ Kapitel 15 Probleme ohne generische Typen Klassen, die mit Objekten verschiedenen Typs arbeiten können class List { Object[ ] data = ; void add(object x) { Object remove() { Probleme

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Kapitel 8. Generische Klassen

Kapitel 8. Generische Klassen Kapitel 8 Generische Klassen Ziel: Zusammensetzen von Software-Bausteinen Oft probiert, nie erreicht! sprachliche Mittel fehlten In C++, ADA, Eiffel, Java: Klassen, die mit anderen Klassen parametrisiert

Mehr

Kapitel 8. Generische Klassen

Kapitel 8. Generische Klassen Kapitel 8 Generische Klassen Ziel: Zusammensetzen von Software-Bausteinen Oft probiert, nie erreicht! sprachliche Mittel fehlten In C++, ADA, Eiffel, Java: Klassen, die mit anderen Klassen parametrisiert

Mehr

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Grundlagen der Informatik 0

Grundlagen der Informatik 0 Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

public interface Stack<E> { public void push(e e); public E pop();

public interface Stack<E> { public void push(e e); public E pop(); ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für

Mehr

Programmieren 2 16 Java Collections und Generizität

Programmieren 2 16 Java Collections und Generizität Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Faulheit professionell: Fertige Datenbehälter

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Philipp Güttler Progwerkstatt. Enums, Interfaces und Generics

Philipp Güttler Progwerkstatt. Enums, Interfaces und Generics Philipp Güttler 18.11.2008 Progwerkstatt Enums, Interfaces und Generics Seite 2 Enums Enum Typen Definition komplexer Datentyp, der festen Menge von Konstanten enthält Information der Reihenfolge der Konstanten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Vorlesung Inf-B

Vorlesung Inf-B Vorlesung Inf-B stehn@mi.fu-berlin.de Quelle Diese Folien basieren auf dem Java-Tutorial Generics von Gilad Bracha http://java.sun.com/docs/books/tutorial/extra/generics/ 2 Motivierendes Beispiel List

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II Bioinformatics Resource Facility Center for Biotechnology Vorlesung Sommer 2011 Was heißt generic? In Java: Abstraktion über Typen Pons Wörterbuch - www.pons.de Einsatz

Mehr

Familienpolymorphismus

Familienpolymorphismus Graph mit 22. Januar 2006 Graph mit Einleitung Familien Traditioneller Polymorphismus Implementation in Java Implementation in Java mit Generics Graph mit gbeta Implementation in gbeta Datenstruktur, Graph

Mehr

Programmieren in Java

Programmieren in Java Generische Datentypen 2 Wiederholung: Fehlerbehandlung durch Exceptions Die Ausführung einer Methode kann jederzeit durch das Werfen einer Exception-Instanz beendet werden Methoden, die durch eine Exception

Mehr

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Übersicht Liste und InsertionSort für e für Objekte beliebiger Klassen für Objekte von Klassen, die ein(e) Nutzer(in) festlegen kann

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Wiederholung aus SWE2

Wiederholung aus SWE2 Wiederholung aus SWE2 Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Inhalt Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Interfaces und Generics

Interfaces und Generics Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Interfaces und Generics Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Liste und InsertionSort für Punkte für Objekte beliebiger

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor: 4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende

Mehr

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite

Mehr

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

Mehr

12) Generische Datenstrukturen

12) Generische Datenstrukturen 12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

13. Generics. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich.

13. Generics. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich. 13. Generics Prof. Dr. Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.uzh.ch Lernziele! Wie kann man mehr Flexibilität hinsichtlich der Typen erreichen?! Wie kann man Typen als

Mehr

13. Generics. Lernziele. Motivation. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich.

13. Generics. Lernziele. Motivation. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich. 13. Generics Prof. Dr. Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.uzh.ch Lernziele! Wie kann man mehr Flexibilität hinsichtlich der Typen erreichen?! Wie kann man Typen als

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Das Ersetzbarkeitsprinzip

Das Ersetzbarkeitsprinzip Das Ersetzbarkeitsprinzip U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Dieses Ersetzbarkeitsprinzip benötigt man für den Aufruf einer Routine

Mehr

Programmieren 1 09 Vererbung und Polymorphie

Programmieren 1 09 Vererbung und Polymorphie Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.

Mehr

A(T1) A(T2) A(T1) A(T2)

A(T1) A(T2) A(T1) A(T2) Kovarianz und Kontravarianz in Java Abstract In diesem Artikel werden die Java-Regeln für Kovarianz und Kontravarianz zusammengefasst. Hierzu wird Typkompatibilität definiert und die Fälle untersucht,

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen

Mehr

Dynamische Typinformation A01 OOP. Dynamische Typinformation

Dynamische Typinformation A01 OOP. Dynamische Typinformation 2013-11-13 Dynamische Typinformation 1 185.A01 OOP Dynamische Typinformation 2013-11-13 Dynamische Typinformation 2 OOP Dynamische Typabfragen Abfrage der Klasse eines Objects: Class y = x.getclass();

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

13 Polymorphie. Problem:

13 Polymorphie. Problem: 13 Polymorphie Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte oder andere Arten von Zahlen ablegen, müssen wir die jeweilige

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Fortgeschrittene Programmierung

Fortgeschrittene Programmierung Skript zur Vorlesung Fortgeschrittene Programmierung SS 2014 Prof. Dr. Michael Hanus Priv.Doz. Dr. Frank Huch Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion Institut für Informatik Christian-Albrechts-Universität

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Th. Letschert OOP 2 1. Vererbung I : Subklasse und Subtyp

Th. Letschert OOP 2 1. Vererbung I : Subklasse und Subtyp Th. Letschert OOP 2 1. Vererbung I : Subklasse und Subtyp Th. Letschert, FH Giessen-Friedberg Th. Letschert OOP 2 Vererbung (Inhertitance) I Wiederverwendung von Klassendefinitionen Erweiterung von Objekt-Konstruktionen

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

Mehr

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47

Vererbung. CoMa-Übung XI TU Berlin. CoMa-Übung XI (TU Berlin) Vererbung / 47 Vererbung CoMa-Übung XI TU Berlin 16.01.2013 CoMa-Übung XI (TU Berlin) Vererbung 16.01.2013 1 / 47 Themen der Übung Themen heute Evaluation Rücksprachen IDEs Eclipse & Netbeans Packages, innere Klassen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Abstrakte Datentypen und Java

Abstrakte Datentypen und Java Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12. Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis

Mehr