ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {
|
|
- Imke Scholz
- vor 6 Jahren
- Abrufe
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:
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,
MehrAbgabe: (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,
MehrProgrammierkurs 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
MehrAlgorithmen 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
MehrEinfü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
MehrInterfaces 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
Mehr3. Ü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
MehrEinstieg 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
MehrEINFÜ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/
MehrHeute. 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrALP 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
MehrSoftwaretechnik 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
MehrAllgemeine 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
MehrObjektorientierung 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;
MehrII.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
MehrAlgorithmen 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
MehrProgrammierkurs 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
MehrEinfü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
MehrEinfü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
Mehrclass 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
MehrEinstieg 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
MehrProgrammieren 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
MehrObjektorientierte 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)
MehrInformatik 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.
MehrKapitel 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
MehrEinstieg 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
MehrKapitel 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 - Ähnliche Programmteile public class Bruchelement { Bruch wert;
MehrDie 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
MehrArten des universellen Polymorphismus
Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht
MehrTutoraufgabe 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
MehrKapitel 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
MehrII.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
MehrAbgabe: (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,
MehrNeben 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
Mehr12 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,
MehrVorlesung 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
MehrJava 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
MehrInstitut 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
MehrProgrammierkurs 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
Mehr14 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
Mehr14 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.
MehrPrinzipien 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........................
MehrWie 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
MehrProgrammiermethodik 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
MehrProgrammieren 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
MehrProgrammiermethodik 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
MehrEinstieg 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
Mehrpublic 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
MehrInterface. 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.
MehrProgrammieren 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
MehrVererbung. 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
MehrSchlussendlich 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 -
MehrVererbung, 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
MehrII.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
MehrObjektorientierte 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
MehrLö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
MehrJava 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/
MehrKapitel 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
MehrObjektorientierte 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)
MehrTECHNISCHE 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,
MehrFH 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
Mehr1 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
MehrVerkettete 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
MehrAbstrakte 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
MehrArten des universellen Polymorphismus
Arten des universellen Polymorphismus enthaltender Polymorphismus durch Untertypbeziehungen: Ersetzbarkeit: ev. unvorhersehbare Wiederverwendung kann Clients von lokalen Codeänderungen abschotten nicht
MehrInstitut 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,
MehrEinstieg 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
MehrOOP. 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
Mehrint 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
MehrProgrammiermethodik 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
MehrModularisierung 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
Mehr1 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,
Mehr16. 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
MehrObjektorientierte 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
MehrPraktikum 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
MehrAllgemeine 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,
MehrAbgabe: (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,
MehrGrundkonzepte 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.
MehrSpracherweiterungen 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
MehrFAKULTÄ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.
MehrObjektorientierte 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
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrNachklausur 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!
MehrPolymorphie/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
MehrJava 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]...
MehrAlgorithmen 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 Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList
MehrKlausur 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
MehrTECHNISCHE 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.
Mehr7.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.
MehrProgrammieren 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
MehrProgrammierkurs 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
MehrTafelü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
MehrTECHNISCHE 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.
MehrAnweisungen 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
MehrVerkettete 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