ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

Größe: px
Ab Seite anzeigen:

Download "ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {"

Transkript

1 TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 11 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, Dr. M. Petter Abgabe: (vor 12 Uhr) Aufgabe 11.1 (P) Generische doppelt-verkettete Listen Laden Sie von der Übungsseite die Klasse DoublyLinkedStringList herunter. Ändern Sie die Klassen DoublyLinkedStringList bzw. ListElement so ab, dass ein generischer Typparameter T für das info-attribut verwendet wird. Achten Sie darauf, sowohl keine Typecasts einzubauen als auch die Typparameter so präzise wie möglich zu verwenden. Sie sollten dazu in NetBeans unter Tools/Options/Editor/Hints Standard Javac Warnings einschalten. Lösungsvorschlag 11.1 package g e n e r i c ; f i n a l class ListElement<E> { E i n f o ; L is telem ent <E> prev ; L is telem ent <E> next ( LeakingThisInConstructor ) ListElement (E i n f o ) { this. i n f o = i n f o ; prev = next = this ; ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) { this. i n f o = i n f o ; this. prev = prev ; this. next = next ; public S t r i n g t o S t r i n g ( ) { return i n f o. t o S t r i n g ( ) ; public c l a s s DoublyLinkedList <T> { The s e n t i n e l element i s used f o r easy i d e n t i f i c a t i o n o f the b e g i n n i n g and end o f t h i s doubly l i n k e d l i s t. f i n a l ListElement<T> s e n t i n e l = new ListElement<T>(null ) ; A u x i l i a r y f u n c t i o n t h a t i n s e r t s the given T b e f o r e the given FooBar.

2 a r e f e r e n c e to the newly c r e a t e d FooBar. ListElement<T> i n s e r t (T somet, ListElement<T> e l t ) { ListElement<T> newelt = new ListElement<T>(someT, e l t. prev, e l t ) ; newelt. prev. next = newelt ; newelt. next. prev = newelt ; return newelt ; Appends the g i v e n T to the end o f t h i s l i s t. public void append (T somet) { i n s e r t (somet, s e n t i n e l ) ; Prepends t he g i v e n T to the b eginning o f t h i s l i s t. public void prepend (T somet) { i n s e r t (somet, s e n t i n e l. next ) ; Removes the given ListElement from t h i s l i s t. void remove ( ListElement<T> e l t ) { // Ensure t h a t t h i s l i s t c o n t a i n s the given ListElement. ListElement<T> cur ; for ( cur = s e n t i n e l. next ; cur!= s e n t i n e l ; cur = cur. next ) { i f ( cur == e l t ) break ; i f ( cur!= s e n t i n e l ) { cur. prev. next = cur. next ; cur. next. prev = cur. prev ; A comma s e p a r a t e d s t r i n g r e p r e s e n t a t i o n o f t h i s l i s t. public S t r i n g t o S t r i n g ( ) { S t r i n g B u i l d e r sb = new S t r i n g B u i l d e r ( ) ; for ( ListElement<T> e l t = s e n t i n e l. next ; e l t!= s e n t i n e l ; e l t = e l t. next ) { sb. append ( e l t ) ; i f ( e l t. next!= s e n t i n e l ) sb. append (, ) ; return sb. t o S t r i n g ( ) ; public static void main ( S t r i n g [ ] args ) { S t r i n g [ ] names = {

3 3 ; Helga, Hans, Edith, Uwe, Margot, Ernst, Irmgard, Otto, Gerhard, I l s e, S i e g f r i e d, Gertrud, F r i e d r i c h, Rosemarie DoublyLinkedList<String > l s t = new DoublyLinkedList<String >() ; for ( S t r i n g name : names ) l s t. append (name) ; System. out. p r i n t l n ( l s t ) ; Aufgabe 11.2 (P) Generisches Programmieren Diskutieren Sie folgenden Java-Code: interface I<T> { T h ( ) ; class A implements I<A> { public A h ( ) { return this ; class B extends A{ class C <T> { T f (T t ) { return t ; <U> U g (U u ) { return u ; public static void main ( S t r i n g [ ] args ) { A a = new A( ) ; B b = new B( ) ; C<A>ca = new C<A>() ; a = ca. f ( a ) ; // 1 a = ca. f ( b ) ; // 2 b = ca. f ( b ) ; // 3 a = ca. g ( a ) ; // 4 a = ca. g ( b ) ; // 5 b = ca. g ( b ) ; // 6 ca = new C<B>() ; // 7 C<B>cb = new C<B>() ; a = cb. f ( a ) ; // 8 b = cb. f ( b ) ; // 9 a = cb. g ( a ) ; // 10 class D <T extends A> { T f (T t ) { return t. h ( ) ; // 11 class E <T extends I> { T f (T t ) { return t. h ( ) ; // 12 class G <T> extends E <T> { T f (T t ) { return t. h ( ) ; // 13 class H <T extends I<T> > extends E <T> { T f (T t ) { return t. h ( ) ; // 14

4 4 Lösungsvorschlag 11.2 Kommentarnummer 3: Der Typparameter von ca ist auf A festgelegt, daher ist f() zu allgemein um an b zugewiesen zu werden. Lösungsvorschlag: Typecast auf B oder Realisierung analog zu g() 7: Die Typen C<A> und C<B> sind einander nicht zuweisbar. Die verschiedenen Instanziierungen des Typparameters machen die beiden Typen zu verschiedenen Typen. Die Vererbungsbeziehung zwischen den Typparametern alleine nutzt nichts, Typparameter unterstützen keine Polymorphie. Lösungsvorschlag: Keiner, ist ein Konzeptproblem. 8: C<B> instantiiert den Typparameter T mit B, so dass f seinen Parameter vom vom Typ B erwartet. Daher klappt die Zeile so wie sie darsteht nicht. Lösungsvorschlag: Abhilfe schafft hier nur der Typecast cb = cb.f((b)a);, der ausnutzt, dass wir unter 2 die Variable a mit b gefüllt haben. 11: Im ersten Moment sieht diese Zeile richtig aus, funktioniert aber nicht, weil der Rückgabetyp von h() in A auf A fixiert wird, statt variabel zu bleiben, wie es in D gefordert wird. Sobald man D z.b. als D<B> instantiiert kommt es zu einem Problem! 12: Wenn man generische Typen nimmt um Typvariablen zu instantiieren sollte man aufpassen, dass man auch deren Typparameter beachtet, sonst wird so wie hier als Default für den Parameter T in I<T> der allgemeinste Typ Object gewählt - mit der Folge dass h() nicht mehr den Anforderungen für den Rückgabetypen genügen kann. Lösungsvorschlag: T extends I<T> 13: Prinzipiell nett gedacht, aber wieder verkehrt: Die Verwendung von E als Basisklasse für G soll hier sicherstellen, dass h() den richtigen Rückgabetyp hat. Dazu hätte allerdings G den Typparameter schon einschränken müssen. Lösungsvorschlag: siehe Punkt 14 14: Korrekt. Dieses Konstrukt sieht abstrakt und total künstlich aus, wird aber z.b. auf diesem Blatt bei für die Comparable-Listen verwendet. Aufgabe 11.3 (P) Iterator Das Interface java.util.iterator aus der Java-API ist ein generisches Interface, um sequentiell auf eine Sammlung von Objekten zuzugreifen. Die Klasse DoublyLinkedList aus der Aufgabe 11.1 soll nun um dieses Interface erweitert werden: Programmieren Sie die generische Klasse DoublyLinkedListIterator, die das generische Interface Iterator implementiert und mit Hilfe der Methoden hasnext(), next() sowie remove() über die info-attribute der Elemente einer doppelt-verketteten Liste iterieren kann. Leiten Sie eine neue generische Klasse IterableDoublyLinkedList von Ihrer generischen Implementierung der Klasse DoublyLinkedList ab, die das generische Interface Iterable implementiert, dessen Methode iterator() jeweils eine neue Instanz von DoublyLinkedListIterator zurückgibt. Durch diese Modifikation können Sie nun u.a. auch mit Hilfe der folgenden erweiterten Variante der for-schleife über die Elemente Ihrer Liste iterieren: IterableDoublyLinkedList <Integer > l s t = / Create and f i l l a new l i s t o f I n t e g e r s. ; for ( I n t e g e r i : l s t ) { System. out. p r i n t l n ( i ) ;

5 5 Lösungsvorschlag 11.3 Die Klasse DoublyLinkedListIterator: package g e n e r i c ; import java. u t i l. I t e r a t o r ; public class DoublyLinkedListIterator <T> implements I t e r a t o r <T> { private DoublyLinkedList <T> l i s t ; private ListElement<T> c u r r e n t ; public D o u b l y L i n k e d L i s t I t e r a t o r ( DoublyLinkedList<T> l i s t ) { this. l i s t = l i s t ; this. c u r r e n t = l i s t. s e n t i n e l ; Returns t r u e i f t he i t e r a t i o n has more elements. public boolean hasnext ( ) { return c u r r e n t. next!= l i s t. s e n t i n e l ; Returns t he next element in the i t e r a t i o n. public T next ( ) { i f ( c u r r e n t. next == l i s t. s e n t i n e l ) return null ; c u r r e n t = c u r r e n t. next ; return c u r r e n t. i n f o ; Removes from t he u n d e r l y i n g c o l l e c t i o n the l a s t element returned by the i t e r a t o r. public void remove ( ) { l i s t. remove ( c u r r e n t ) ; Die Klasse IterableDoublyLinkedList: package g e n e r i c ; import java. u t i l. I t e r a t o r ; public class IterableDoublyLinkedList <T> extends DoublyLinkedList<T> implements I t e r a b l e <T> {

6 6 Returns an i t e r a t o r over a s e t o f elements o f type T. public I t e r a t o r <T> i t e r a t o r ( ) { return new DoublyLinkedListIterator <T>(this ) ; public static void main ( S t r i n g [ ] args ) { IterableDoublyLinkedList <Integer > l s t = new IterableDoublyLinkedList <Integer >() ; for ( int i = 0 ; i < 2 5 ; i++) l s t. append ( i ) ; System. out. p r i n t l n ( l s t ) ; System. out. p r i n t l n ( ) ; // I t e r a t e over t he l i s t and remove a l l even elements. I t e r a t o r <Integer > i t = l s t. i t e r a t o r ( ) ; while ( i t. hasnext ( ) ) { I n t e g e r i = i t. next ( ) ; i f ( i. intvalue ( ) % 2 == 0) i t. remove ( ) ; // I t e r a t e over t he l i s t and p r i n t a l l elements, t h i s time by // means o f using Java s extended f o r syntax. for ( I n t e g e r i : l s t ) System. out. p r i n t l n ( i ) ; Aufgabe 11.4 (P) Comparable Das Interface java.lang.comparable aus der Java-API ist ein generisches Interface, das es ermöglicht, Vergleiche auf beliebigen Objekten durchzuführen. Für die Klasse Iterable- DoublyLinkedList aus Aufgabe 11.?? soll nun die entsprechende Funktionalität bereitgestellt werden: Leiten Sie eine neue generische Klasse CompIterDoublyLinkedList von Ihrer Implementierung der Klasse IterableDoublyLinkedList ab, deren Typ T das generische Interface Comparable implementiert. Dieses Interface deklariert die Methode int compareto(t o), die das aktuelle Objekt mit dem durch o referenzierten Objekt vergleicht und im Falle von this < o eine negative Zahl (z.b. -1), this = o die Zahl 0 sowie this > o eine positive Zahl (z.b. +1) zurückgibt. Kopieren Sie die Methoden sort() und quicksort() aus der Vorlage zur Aufgabe 11.1 und passen Sie diese entsprechend Ihrer generischen Liste an, so daß sie sortiert werden kann. Machen Sie sich dabei zu Nutze, dass die Objekte vom Typ T nun durch das generische Comparable-Interface die Methode int compareto(t o) zur Verfügung stellen. Hinweis: Den Algorithmus ansich müssen Sie natürlich nicht verändern. Lösungsvorschlag 11.4

7 7 package g e n e r i c ; public c l a s s CompIterDoublyLinkedList<T extends Comparable<T>> extends IterableDoublyLinkedList <T> { A u x i l i a r y f u n c t i o n t h a t implements the q u i c k s o r t a l g o r i t h a r e f e r e n c e to a new s o r t e d l i s t private ListElement<T> q u i c k s o r t ( ListElement<T> head ) { i f ( head. next == head ) // Only one element, so s t o p r i g h t here. return head ; // S p l i t t he l i s t in two l i s t s where one h o l d s a l l elements s m a l l e r // than t he p i v o t element w h i l e the o t h e r one h o l d s a l l elements t h a t // are g r e a t e r than or e q u a l to the p i v o t element. f i n a l ListElement<T> pivot = head ; ListElement<T> l t L i s t = null ; ListElement<T> g e q L i s t = null ; for ( ListElement<T> e l t = head. next ; e l t!= head ; e l t = e l t. next ) { i f ( e l t. i n f o. compareto ( pivot. i n f o ) < 0) { // Less than the p i v o t element. i f ( l t L i s t == null ) { l t L i s t = new ListElement<T>( e l t. i n f o ) ; else l t L i s t = i n s e r t ( e l t. i n f o, l t L i s t ) ; else { // Greater than or e q u a l to the p i v o t element. i f ( g e q L i s t == null ) { g e q L i s t = new ListElement<T>( e l t. i n f o ) ; else g e q L i s t = i n s e r t ( e l t. i n f o, g e q L i s t ) ; // R e c u r s i v e l y s o r t both l t L i s t and g e q L i s t. i f ( l t L i s t!= null ) l t L i s t = q u i c k s o r t ( l t L i s t ) ; i f ( g e q L i s t!= null ) g e q L i s t = i n s e r t ( pivot. i n f o, q u i c k s o r t ( g e q L i s t ) ) ; else g e q L i s t = new ListElement<T>( pivot. i n f o ) ; // Return the r e s u l t. i f ( l t L i s t == null ) { return g e q L i s t ; else { // Concatenate both l i s t s and return the r e s u l t. f i n a l ListElement<T> l t L i s t L a s t = l t L i s t. prev ; f i n a l ListElement<T> g e q L i s t L a s t = g e q L i s t. prev ; l t L i s t L a s t. next = g e q L i s t ; l t L i s t. prev = g e q L i s t L a s t ; g e q L i s t L a s t. next = l t L i s t ;

8 8 g e q L i s t. prev = l t L i s t L a s t ; return l t L i s t ; S o r t s the l i s t. public void s o r t ( ) { // Empty l i s t s are t r i v i a l. i f ( s e n t i n e l. next == s e n t i n e l ) return ; // During the s o r t i n g process, the s e n t i n e l element i s s u p e r f l u o u s. // Hence decouple the elements from the s e n t i n e l. ListElement<T> f i r s t = s e n t i n e l. next ; ListElement<T> l a s t = s e n t i n e l. prev ; f i r s t. prev = l a s t ; l a s t. next = f i r s t ; // Then perform the q u i c k s o r t a l g o r i t h m. ListElement<T> r e s u l t = q u i c k s o r t ( f i r s t ) ; // F i n a l l y r e i n s t a t e the s e n t i n e l element. s e n t i n e l. next = r e s u l t ; s e n t i n e l. prev = r e s u l t. prev ; r e s u l t. prev. next = s e n t i n e l ; r e s u l t. prev = s e n t i n e l ; public static void main ( S t r i n g [ ] args ) { CompIterDoublyLinkedList<Integer > l s t = new CompIterDoublyLinkedList<Integer >() ; for ( int i = 0 ; i < 5 0 ; i++) l s t. append ( ( int ) (100 Math. random ( ) ) ) ; System. out. p r i n t l n ( l s t ) ; l s t. s o r t ( ) ; System. out. p r i n t l n ( l s t ) ;

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Programmierkurs Java

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

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

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

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

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

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

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

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

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

Allgemeine Informatik II SS :30-13:30 Uhr

Allgemeine Informatik II SS :30-13:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 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.2 Abstrakte Klassen und Interfaces - 1

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

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

class ListElement { int value; ListElement next; ListElement() { next=null; value=0; Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

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

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

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

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 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 - ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;

Mehr

Die Schnittstelle Comparable

Die Schnittstelle Comparable Die Schnittstelle Comparable Wir wollen Such- und Sortieroperationen für beliebige Objekte definieren. Dazu verwenden wir die vordefinierte Schnittstelle Comparable: public interface Comparable { int compareto(object

Mehr

Arten des universellen Polymorphismus

Arten des universellen Polymorphismus Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht

Mehr

Tutoraufgabe 1 (Collections):

Tutoraufgabe 1 (Collections): Prof. aa Dr. J. Giesl Programmierung WS17/18 M. Hark, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Collections): In dieser Aufgabe geht es um die Implementierung einer Datenstruktur für Mengen, welche in

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

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

Abgabe: (vor 12 Uhr)

Abgabe: (vor 12 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Übungsblatt 1 Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

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

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

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

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden

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

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

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

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

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

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

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

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

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

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

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse Kapitel 9 Inner Classes 9.1 Wiederholung: Iteratoren Ausführen einer Operation auf allen Elementen einer Containerklasse (zb Liste, Baum,...) vgl. map/f old in der funktionalen Programmierung. Aber: higher-order

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 9 Lösungsvorschlag Objektorientierte Programmierung 26. 06. 2006 Aufgabe 19 (Sieb des Erathostenes)

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 5 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

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

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

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte

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

Arten des universellen Polymorphismus

Arten des universellen Polymorphismus Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 9 Prof. R. Westermann, R. Fraedrich,

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

OOP. Tagesprogramm. Generizität

OOP. Tagesprogramm. Generizität 1 2016-11-23 Tagesprogramm Generizität 2 Universeller Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: unvorhersehbare Wiederverwendung, kann Clients von lokalen Codeänderungen

Mehr

int x = 3; int y = 11; public A () { this.x = z; y *= z;

int x = 3; int y = 11; public A () { this.x = z; y *= z; Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (13 + 6 = 19 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen

Mehr

Programmiermethodik 2. Klausur Lösung

Programmiermethodik 2. Klausur Lösung Programmiermethodik 2. Klausur Lösung 2. 10. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 18 3 42 4 20 5 20 Gesamt 120 1 Seite 2 von 12 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Modularisierung in Java: Pakete Software Entwicklung 1

Modularisierung in Java: Pakete Software Entwicklung 1 Modularisierung in Java: Pakete Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Um zusammengehörende Klassen, Interfaces, etc. gemeinsam zu verwalten, Sichtbarkeiten einzugrenzen und

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

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

Abgabe: (vor 24 Uhr)

Abgabe: (vor 24 Uhr) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Übungsblatt 8 Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

Mehr

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

Mehr

Spracherweiterungen in Java 5

Spracherweiterungen in Java 5 Spracherweiterungen in Java 5 Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe 17. April 2008 Spracherweiterungen in Java 5 Generics (s. Vorlesung) Annotations Enumerations Methoden

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 8 F. Forster, T.

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

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

Nachklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Lösung. Bitte in Druckschrift leserlich ausfüllen! Informatik für Informationsmanger I SS 2006 Universität Kolenz-Landau Institut für Informatik Prof. Dr. Steffen Staa Dr. Manfred Jackel Nachklausur 13.04.2007 Lösung Bitte in Druckschrift leserlich ausfüllen!

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

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 11. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-4 Zur Erinnerung Datenstruktur:

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

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

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 8 F. Forster, M.

Mehr

Anweisungen zur Ablaufsteuerung

Anweisungen zur Ablaufsteuerung Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr