Tutoraufgabe 1 (FunctionalSet):

Größe: px
Ab Seite anzeigen:

Download "Tutoraufgabe 1 (FunctionalSet):"

Transkript

1 Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (FunctionalSet): In dieser Aufgabe geht es um die Implementierung einer Datenstruktur für Mengen, welche in das bestehende Collections Framework eingebettet werden soll. Sie benötigen dafür die abstrakten Klassen AbstractIterableSet und SimpleFunctionalSet, welche Sie als.java Dateien von unserer Webseite herunterladen können. Alle in dieser Aufgabe zu implementierenden Klassen sollen nicht abstrakt sein und die beiden vorgegebenen abstrakten Klassen sollen nicht verändert werden. Die in dieser Aufgabe zu implementierende Mengenstruktur basiert auf einer Liste von Einfüge- (Add) und Löschoperationen (Remove) mit jeweils einem Element, die vom Ausgangspunkt einer leeren Menge (Empty) angewendet werden. Zum Beispiel lässt sich die Menge {1, 2, 3 als die Liste Add 3, Add 2, Add 1, Empty darstellen. Will man nun das Element 2 aus der Menge löschen, so entfernt man nicht das zweite Element aus der Liste, sondern fügt ein weiteres Remove Element hinzu und erhält Remove 2, Add 3, Add 2, Add 1, Empty. Auf diese Weise erhält man eine Datenstruktur, bei der niemals Objekte entfernt werden (mit Ausnahme der clear Methode, welche die Liste wieder auf Empty setzen soll). Eine solche Mengendarstellung nennt man auch funktional, da die Einfüge- und Löschoperationen als Funktionen aufgefasst werden können, welche auf die leere Menge angewendet werden. a) Schreiben Sie eine generische Klasse EmptySet<E> als Unterklasse von SimpleFunctionalSet<E>. Die zu implementierende contains Methode soll immer false zurückgeben. Achten Sie darauf, dass Sie einen Konstruktor explizit angeben müssen (das set Attribut der leeren Menge soll null sein). b) Schreiben Sie eine generische Klasse AddSet<E> als Unterklasse von SimpleFunctionalSet<E>. Diese Klasse soll ein Attribut element vom Typ E besitzen, auf welches über eine Getter-Methode (d. h. einen geeigneten Selektor) zugegriffen werden kann. Die zu implementierende contains Methode soll true zurückgeben, falls sowohl element als auch das übergebene Objekt o null sind oder der Test element.equals(o) erfolgreich ist. Ansonsten soll die Methode contains rekursiv von der verbleibenden Menge (über die Methode getremainingset zugreifbar) aus mit dem gleichen Argument aufgerufen werden. Achten Sie auch hier darauf, dass Sie einen passenden Konstruktor explizit angeben müssen und beachten Sie die Prinzipien der Datenkapselung. c) Schreiben Sie eine generische Klasse RemoveSet<E> als Unterklasse von SimpleFunctionalSet<E>. Diese Klasse soll ein Attribut obj vom Typ Object besitzen, auf welches über eine Getter-Methode zugegriffen werden kann. Die zu implementierende contains Methode soll false zurückgeben, falls sowohl element als auch das übergebene Objekt o null sind oder der Test obj.equals(o) erfolgreich ist. Ansonsten soll die Methode contains rekursiv von der verbleibenden Menge (über die Methode getremainingset zugreifbar) aus mit dem gleichen Argument aufgerufen werden. Achten Sie auch hier darauf, dass Sie einen passenden Konstruktor explizit angeben müssen und beachten Sie die Prinzipien der Datenkapselung. d) Schreiben Sie eine generische Klasse FunctionalSet<E> als Unterklasse von AbstractIterableSet<E>. Diese soll genau ein Attribut head vom Typ SimpleFunctionalSet<E> besitzen. Da die Oberklasse das Set Interface aus dem Package java.util implementiert, muss Ihre Klasse die noch fehlenden Methoden add, clear, contains, iterator und remove implementieren. Schlagen Sie die zu implementierenden Funktionalitäten dieser Methoden in der Java API für das Interface Set nach und nutzen Sie die in den vorigen Teilaufgaben implementierten Klassen. Ihre Implementierung soll das Hinzufügen beliebiger Elemente (inklusive null) unterstützen. Außerdem soll (wie am Anfang der Aufgabe beschrieben) außer durch die clear Methode kein SimpleFunctionalSet Objekt aus der Liste dieser Objekte entfernt werden. Implementieren Sie für die iterator Methode eine weitere generische Klasse FunctionalSetIterator<E>, welche das Interface Iterator<E> aus dem Package java.util implementiert. Schlagen Sie auch hier für die zu implementierenden Methoden hasnext, next und remove die Funktionalitäten in der Java API für das Interface Iterator nach (die remove Operation soll durch Ihren Iterator unterstützt werden). Zum Testen Ihrer Implementierung können Sie die Datei SetTest.java von unserer Webseite benutzen. Der Aufruf Ihrer main Methode sollte folgende Ausgabe auf der Konsole erzeugen: { {1 {2,1 1

2 {3,2,1 {3,2,1 {3,2 {3 {3 { {null {1 {2,1 {2,1 {2,1 {2 {2 {5,2,3,null {5,2,3,null {5,3,null {5,3,null {5,3 Lösung: Listing 1: AddSet.java * Simple functional set adding an element to another simple functional set. public class AddSet <E> extends SimpleFunctionalSet <E> { * The element to add. private final E element ; elem The element to add. s The remaining set. public AddSet ( final E elem, final SimpleFunctionalSet <E> s) { super (s); this. element = elem ; public boolean contains ( final Object o) { if ( this. element == null ) { if (o == null ) { else { return this. getremainingset (). contains (o); else if ( this. element. equals (o)) { else { return this. getremainingset (). contains (o); The element to add. public E getelement () { return this. element ; Listing 2: EmptySet.java * Simple functional set containing no element. public class EmptySet <E> extends SimpleFunctionalSet <E> { * Creates an empty simple functional set. 2

3 public EmptySet () { super ( null ); public boolean contains ( final Object o) { import java. util.*; Listing 3: FunctionalSet.java * public class FunctionalSet <E> extends AbstractIterableSet <E> { * The head of the list of operations representing the set. private SimpleFunctionalSet <E> head ; * Creates an empty functional set. public FunctionalSet () { this. head = new EmptySet <E >(); public boolean add ( final E e) { if ( this. contains (e)) { else { this. head = new AddSet <E>(e, this. head ); public void clear () { this. head = new EmptySet <E >(); public boolean contains ( final Object o) { return this. head. contains (o); public Iterator <E> iterator () { return new FunctionalSetIterator <E>( this, this. head ); public boolean remove ( final Object o) { if ( this. contains (o)) { this. head = new RemoveSet <E>(o, this. head ); else { import java. util.*; Listing 4: FunctionalSetIterator.java * Iterator through a functional set. public class FunctionalSetIterator <E> implements Iterator <E> { 3

4 * The current simple functional set. It is always an add set with an unused (i.e., not contained in * the set named " used " below ) element or an empty set. private SimpleFunctionalSet <E> current ; * The most recent element this iterator has returned. private E recentelem ; * Flag indicating whether the remove operation is applicable ( needed since elements may be null, so * we cannot just check whether recentelem is null ). private boolean removable ; * The functional set to which the current simple functional set belongs. private final FunctionalSet <E> set ; * A set of already seen elements ( in add or remove sets ). private final Set <Object > used ; functionalset The functional set containing the simple functional set to iterate over. head The head of the simple functional set to iterate over. public FunctionalSetIterator ( final FunctionalSet <E> functionalset, final SimpleFunctionalSet <E> head ) { this. current = head ; this. recentelem = null ; this. removable = false ; this. set = functionalset ; this. used = new FunctionalSet < Object >(); this. forwardtonextunusedset (); public boolean hasnext () { return!( this. current instanceof EmptySet ); public E next () { if ( this. hasnext ()) { final E elem = (( AddSet <E>) this. current ). getelement (); this. used. add ( elem ); this. recentelem = elem ; this. removable = true ; this. current = this. current. getremainingset (); this. forwardtonextunusedset (); return elem ; else { throw new NoSuchElementException (); public void remove () { if ( this. removable ) { this. set. remove ( this. recentelem ); this. removable = false ; else { throw new IllegalStateException ( " The next method has not been called before this remove operation!"); * Forwards the current set to the next remaining set which is no remove set and which is no add set * with an already used element. During forwarding, used objects are added to the corresponding set. private void forwardtonextunusedset () { boolean loop = true ; while ( loop ) { loop = false ; while ( this. current instanceof RemoveSet ) { 4

5 this. used. add ((( RemoveSet <E>) this. current ). getobject ()); this. current = this. current. getremainingset (); if ( this. current instanceof AddSet && this. used. contains ((( AddSet <E>) this. current ). getelement ())) { loop = true ; this. current = this. current. getremainingset (); Listing 5: RemoveSet.java * Simple set removing an object from another simple set. public class RemoveSet <E> extends SimpleFunctionalSet <E> { * The object to remove. private final Object obj ; o The object to remove. s The remaining set. public RemoveSet ( final Object o, final SimpleFunctionalSet <E> s) { super (s); this. obj = o; public boolean contains ( final Object o) { if ( this. obj == null ) { if (o == null ) { else { return this. getremainingset (). contains (o); else if ( this. obj. equals (o)) { else { return this. getremainingset (). contains (o); The object to remove. public Object getobject () { return this. obj ; Aufgabe 2 (FlagSet): ( = 17 Punkte) In dieser Aufgabe geht es um die Implementierung einer Datenstruktur für Mengen, welche in das bestehende Collections Framework eingebettet werden soll. Sie benötigen dafür die abstrakte Klasse AbstractIterableSet, welche Sie als.java Datei von unserer Webseite herunterladen können. Alle in dieser Aufgabe zu implementierenden Klassen sollen nicht abstrakt sein und die vorgegebene abstrakte Klasse soll nicht verändert werden. Die in dieser Aufgabe zu implementierende Mengenstruktur basiert auf einer Liste von Elementen mit einer active Markierung vom Typ boolean. Nur solche Elemente sind in der Menge enthalten, deren active Markierung den Wert true hat. Um Elemente aus der Menge zu löschen, sollen keine Objekte aus dieser Liste entfernt, sondern lediglich die entsprechende Markierung auf false gesetzt werden. Um Duplikate zu vermeiden, soll beim Einfügen die Liste durchsucht werden und für ein ggf. bereits gelöschtes Element, das wieder eingefügt wird, soll kein neues Objekt angelegt, sondern seine Markierung wieder auf true gesetzt werden. Zum Beispiel kann die Menge {1, 2, 3 als die Liste 3 true, 2 true, 1 true dargestellt werden. 5

6 Löscht man nun das Element 2, so ist die resultierende Menge durch die Liste 3 true, 2 false, 1 true dargestellt. Ein erneutes Einfügen des Elementes 2 liefert wieder die ursprüngliche Liste. Natürlich soll beim Einfügen eines Elementes, für das es bereits ein mit true markiertes Element in der List gibt, keine Modifikation an der Liste vorgenommen werden (analog beim Löschen eines Elements, für das es ein mit false markiertes oder gar kein Element in der Liste gibt). Lediglich die clear Methode soll also tatsächlich Objekte aus der Liste entfernen können. a) Schreiben Sie eine generische Klasse SetNode<E> mit drei Attributen active vom Typ boolean, element vom Typ E und next vom Typ SetNode<E>. Implementieren Sie Getter-Methoden für alle Attribute und ermöglichen Sie beliebige Veränderungen am Attribut active (beachten Sie dabei die Prinzipien der Datenkapselung). b) Schreiben Sie eine generische Klasse FlagSet<E> als Unterklasse von AbstractIterableSet<E>. Diese soll genau ein Attribut head vom Typ SetNode<E> besitzen. Da die Oberklasse das Set Interface aus dem Package java.util implementiert, muss Ihre Klasse die noch fehlenden Methoden add, clear, contains, iterator und remove implementieren. Schlagen Sie die zu implementierenden Funktionalitäten dieser Methoden in der Java API für das Interface Set nach und nutzen Sie die in der vorigen Teilaufgabe implementierte Klasse SetNode. Ihre Mengenimplementierung soll das Hinzufügen von beliebigen Elementen (inklusive null) unterstützen und nur dann ein neues SetNode Objekt anlegen, wenn ein Element in eine Menge eingefügt wird (mittels der add Methode), das noch nie seit dem letzten Aufruf der clear Methode in dieser Menge enthalten war. Außerdem soll außerhalb der clear Methode kein SetNode Objekt aus der mit dem head Attribut startenden Liste von SetNode Objekten entfernt werden. Benutzen Sie stattdessen die active Markierungen in den SetNode Objekten wie am Anfang dieser Aufgabe beschrieben. Implementieren Sie für die iterator Methode eine weitere generische Klasse FlagSetIterator<E>, welche das Interface Iterator<E> aus dem Package java.util implementiert. Schlagen Sie auch hier für die zu implementierenden Methoden hasnext, next und remove die Funktionalitäten in der Java API für das Interface Iterator nach (die remove Operation soll durch Ihren Iterator unterstützt werden). Zum Testen Ihrer Implementierung können Sie ebenfalls die Datei SetTest.java von unserer Webseite benutzen, indem Sie alle Vorkommen von FunctionalSet durch FlagSet ersetzen. Der Aufruf Ihrer main Methode sollte die gleiche Ausgabe wie in der vorigen Tutoraufgabe erzeugen. Hinweise: Für den Iterator könnte es hilfreich sein, jeweils ein Attribut für das nächste zurückzuliefernde und das letzte zurückgelieferte Element zu verwenden. Lösung: import java. util.*; Listing 6: FlagSet.java * public class FlagSet <E> extends AbstractIterableSet <E> { * The first set node of this set. private SetNode <E> head ; * Creates an empty FlagSet. public FlagSet () { this. head = null ; public boolean add ( final E e) { SetNode <E> current = this. head ; while ( current!= null ) { final E elem = current. getelement (); 6

7 if ( elem == null ) { if (e == null ) { if ( current. isactive ()) { else { current. activate (); else if ( elem. equals (e)) { if ( current. isactive ()) { else { current. activate (); current = current. getnext (); this. head = new SetNode <E>(e, this. head ); public void clear () { this. head = null ; public boolean contains ( final Object o) { for ( final E elem : this ) { if ( elem == null ) { if (o == null ) { else if ( elem. equals (o)) { public Iterator <E> iterator () { return new FlagSetIterator <E>( this. head ); public boolean remove ( final Object o) { SetNode <E> current = this. head ; while ( current!= null ) { final E elem = current. getelement (); if ( elem == null ) { if (o == null ) { if ( current. isactive ()) { current. deactivate (); else { else if ( elem. equals (o)) { if ( current. isactive ()) { current. deactivate (); else { current = current. getnext (); import java. util.*; Listing 7: FlagSetIterator.java 7

8 * Iterator through a FlagSet. public class FlagSetIterator <E> implements Iterator <E> { * The current active node. private SetNode <E> current ; * The most recent active node. This is null if the next () method has not been called since the last * remove operation. private SetNode <E> recent ; head The start node. public FlagSetIterator ( final SetNode <E> head ) { this. current = head ; this. recent = null ; this. forwardtonextactivenode (); public boolean hasnext () { return this. current!= null ; public E next () { if ( this. hasnext ()) { final E res = this. current. getelement (); this. recent = this. current ; this. current = this. current. getnext (); this. forwardtonextactivenode (); return res ; else { throw new NoSuchElementException (); public void remove () { if ( this. recent == null ) { throw new IllegalStateException ( " The next method has not been called before this remove operation!"); else { this. recent. deactivate (); this. recent = null ; * Forwards the current node to the next active node. private void forwardtonextactivenode () { while ( this. current!= null &&! this. current. isactive ()) { this. current = this. current. getnext (); * public class SetNode <E> { Listing 8: SetNode.java * Flag indicating activeness of the element. private boolean active ; * The element. private final E element ; 8

9 * The next node. private final SetNode <E> next ; * Creates an active set node. elem The element. n The next node. public SetNode ( final E elem, final SetNode <E> n) { this. element = elem ; this. next = n; this. active = true ; * Sets the element active. public void activate () { this. active = true ; * Sets the element inactive. public void deactivate () { this. active = false ; The element. public E getelement () { return this. element ; The next node. public SetNode <E> getnext () { return this. next ; True iff the element is active. public boolean isactive () { return this. active ; Aufgabe 3 (Phantom Types): Helfen Sie dem Weihnachtsmann! Aufgrund der stetig wachsenden Erdbevölkerung hat der Weihnachtsmann keine Zeit mehr, um Geschenke noch direkt in die Häuser zu tragen. Stattdessen muss er auf eine effizientere Methode der Verteilung ausweichen. Sein Plan: Die Geschenke schon während dem Flug aus dem Rentierschlitten fallen zu lassen, so dass sie im richtigen Schornstein landen. Hierfür muss der Weihnachtsmann den genauen Zeitpunkt wissen, zu dem er das Geschenk loslassen muss. Ihre Aufgabe: Implementieren Sie eine Methode, die berechnet, wieviele Meter vor der Überquerung des Schornsteins das Geschenk fallen gelassen werden muss. ( = 11 Punkte) s h 9

10 Damit bei der Berechnung mit physikalischen Formeln weniger Fehler passieren, bietet es sich an, physikalische Einheiten durch Java Typen abzubilden. Hierdurch kann der Compiler überprüfen, ob die Formel auf Werte mit korrekten Einheiten angewendet wird. Wie das genau funktioniert, soll durch diese Aufgabe erläutert werden. a) Definieren Sie ein Interface Einheit, welches wie alle Interfaces dieser Aufgabe keine Methoden enthält. Definieren Sie nun die Interfaces Meter und Sekunden, welche Einheit erweitern. Definieren Sie außerdem die Interfaces Multiplikation und Division, welche jeweils zwei generische Typ-Parameter bekommen, die Einheit erweitern. Multiplikationen und Divisionen von Einheiten sind ebenfalls Einheiten. Nun können Sie die in dieser Aufgabe benötigten Einheiten als Java Typen darstellen: Einheit Bedeutung Java Typ m Strecke Meter s Dauer Sekunden m/s Geschwindigkeit Division<Meter, Sekunde> m/s 2 Beschleunigung Division<Meter, Multiplikation<Sekunde,Sekunde>> Da es keine Klassen gibt, die diese Interfaces implementieren (und somit auch keine entsprechenden Objekte), nennt man solche Typen auch phantom types. b) Schreiben Sie die Klasse Wert, welche einen double-wert kapselt und per Selektor zur Verfügung stellt. Diese Klasse bekommt einen generischen Typ-Parameter, der das Interface Einheit erweitern soll. Ein Objekt, welches eine Strecke von 10 m repräsentieren soll, hat also den Typ Wert<Meter> und kapselt den double Wert c) Erstellen Sie eine Klasse Physik. Definieren Sie eine statische Methode berechnefalldauer in der Klasse Physik, welche eine Strecke h (in Metern) sowie eine Beschleunigung g (in Metern pro Sekunde zum Quadrat) übergeben bekommt und die Dauer (in Sekunden) zurückgibt, die ein Gegenstand braucht, um aus einer solchen Höhe geworfen am Boden anzukommen, wenn die Beschleunigung g auf ihn wirkt. 2h Die Formel zur Berechnung der Falldauer t lautet t = g. Verwenden Sie (auch in den Methoden der folgenden Aufgabenteilen) für die Parameter und den Rückgabewert den Typ Wert mit korrekten Einheiten. d) Definieren Sie eine statische Methode berechnestrecke in der Klasse Physik, welche eine Geschwindigkeit v (in Metern pro Sekunde), sowie eine Zeit t (in Sekunden) übergeben bekommt und die Strecke (in Metern) berechnet, die ein Gegenstand mit der Geschwindigkeit v in der Zeit t zurücklegt. e) Definieren Sie eine statische Methode berechneabwurfentfernung in der Klasse Physik, welche eine Strecke h (in Metern, Flughöhe des Rentierschlittens über dem Schornstein) und eine Geschwindigkeit v (in Metern pro Sekunde, Geschwindigkeit des Schlittens) übergeben bekommt und berechnet, in welcher Entfernung s der Weihnachtsmann ein Geschenk fallen lassen muss, damit es im Schornstein landet. Nehmen Sie hierzu an, dass sich das Geschenk in Fahrtrichtung mit gleichbleibender Geschwindigkeit fortbewegt, dabei aber nach unten fällt. Die Erdbeschleunigung beträgt 9, 81 m/s 2. Lösung: public interface Einheit { public interface Meter extends Einheit { Listing 9: Einheit.java Listing 10: Meter.java 10

11 public interface Sekunden extends Einheit { Listing 11: Sekunden.java Listing 12: Multiplikation.java public interface Multiplikation <E1 extends Einheit, E2 extends Einheit > extends Einheit { Listing 13: Division.java public interface Division <E1 extends Einheit, E2 extends Einheit > extends Einheit { public class Wert <E extends Einheit > { private final double wert ; Listing 14: Wert.java Wert ( double wert ) { this. wert = wert ; public double getwert () { return wert ; Listing 15: Physik.java public class Physik { public static Wert <Sekunden > berechnefalldauer ( Wert <Meter > h, Wert <Division <Meter, Multiplikation <Sekunden, Sekunden >>> g) { return new Wert <>( Math. sqrt (2 * h. getwert () / g. getwert ())); public static Wert <Meter > berechnestrecke ( Wert <Division <Meter, Sekunden >> v, Wert <Sekunden > t) { return new Wert <>(v. getwert () * t. getwert ()); public static Wert <Meter > berechneabwurfentfernung ( Wert <Meter > h, Wert <Division <Meter, Sekunden >> v) { Wert <Division <Meter, Multiplikation <Sekunden, Sekunden >>> g = new Wert <>( 9.81); Wert <Sekunden > falldauer = berechnefalldauer (h, g); Wert <Meter > strecke = berechnestrecke (v, falldauer ); return strecke ; 11

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 6 02.12.2013 Übung zur Vorlesung Programmierung Aufgabe T12 Implementieren Sie eine Klasse Set,

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

Tutoraufgabe 1 (Pakete, Module, Exceptions, Generics und Collections):

Tutoraufgabe 1 (Pakete, Module, Exceptions, Generics und Collections): Prof. aa Dr. J. Giesl S. Dollase, M. Hark, D. Korzeniewski Tutoraufgabe 1 (Pakete, Module, Exceptions, Generics und Collections): In dieser Aufgabe geht es um die Implementierung einer Datenstruktur für

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Aufgabe 1 (Programmanalyse): (9 + 1 = 10 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

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

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

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

Kapitel 5: Iterierbare Container

Kapitel 5: Iterierbare Container Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik

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

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 9 23.12.2013 Übung zur Vorlesung Programmierung Dieses Übungsblatt ist ein reines Bonus-Blatt.

Mehr

Die abstrakte Klasse Expression:

Die abstrakte Klasse Expression: Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder Prof. aa Dr. J. Giesl C. Aschermann, F. Frohn, J. Hensel, T. Ströder Aufgabe 1 (Programmanalyse): (14 + 6 = 20 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

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

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

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition

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

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

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 Objektorientierte Programmierung 22. 05. 2006 Aufgabe 9 (SMS-Eingabe am Handy mit Tries)

Mehr

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

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) { 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,

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

Programmierung WS17/18 Lösung - Präsenzübung 09./

Programmierung WS17/18 Lösung - Präsenzübung 09./ Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (11.5 + 4.5 = 16 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu jeweils

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

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.  WS 07/08 Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Abstrakte Datentypen Stack und Queue zu implementieren und anzuwenden Vorteile von parametrischer Polymorphie

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Parametrisierte Datentypen mit Java Generics Java Collections Framework Parametrisierte

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

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

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 3. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Potenzieren von Matrizen Testlauf der Klasse Matrix.java: 10 Punkte Erzeuge Matrix

Mehr

Tutoraufgabe 1 (Entwerfen von Klassenhierarchien):

Tutoraufgabe 1 (Entwerfen von Klassenhierarchien): Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

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

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

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

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

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

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

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Mehr

Aufgabe 1 (Programmanalyse):

Aufgabe 1 (Programmanalyse): Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Aufgabe 1 (Programmanalyse): (18 Punkte) Gegeben sei das folgende Java-Programm. Dieses Programm gibt sechs Zeilen Text

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

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung

Mehr

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

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

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

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

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

Info B VL 14: Java Collections/Reflections

Info B VL 14: Java Collections/Reflections Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Prof. Dr. Uwe Schmidt. 30. Januar 2017 Prof. Dr. Uwe Schmidt 30. Januar 2017 Aufgaben zur Klausur Algorithmen und Datenstrukturen im WS 2016/17 ( B Inf, B TInf, B MInf, B CGT, B WInf, B Ecom, B ITE) Zeit: 75 Minuten erlaubte Hilfsmittel: keine

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

Aufgabe 1 (Programmanalyse, Punkte)

Aufgabe 1 (Programmanalyse, Punkte) 2 Aufgabe 1 (Programmanalyse, 8 + 6 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Schreiben Sie hierzu jeweils die ausgegebenen Zeichen hinter den Kommentar OUT:. public class

Mehr

Übung Programmierung WS 2007/08 - Blatt 6

Übung Programmierung WS 2007/08 - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

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

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.   WS 07/08 Bäume Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Bäume kennen lernen 3 Bäume (abstrakt) Bäume sind

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

Allgemeine Informatik II SS :30-11:30 Uhr

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

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 14: Verkettete Listen Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack 18.

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

Mehr

Algorithmen und Datenstrukturen Musterlösung 5

Algorithmen und Datenstrukturen Musterlösung 5 Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige:

Vorname: Nachname: Matrikelnummer: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige: Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Vorname: Nachname: Studiengang (bitte ankreuzen): Informatik Bachelor Informatik Lehramt Mathematik Bachelor Sonstige: Anzahl

Mehr

Präsenzübung Programmierung WS 2016/2017

Präsenzübung Programmierung WS 2016/2017 Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Vorname: Präsenzübung Programmierung WS 2016/2017 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt

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

! 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

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

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel Ein Stack, auch Stapel oder Keller genannt, ist eine Datenstruktur, bei der die Elemente nur an einem Ende der Folge eingefügt bzw. gelöscht

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 5. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Implementieren von ADTs Testlauf der Klasse TestDeque in der z05a1.jar: 10 Punkte

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

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

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen 2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

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

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 =

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

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

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

Inner Class. 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 }

Inner Class. 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 } Inner Class 1 public class OuterClass { 2 private int var; 3 public class InnerClass { 4 void methoda() {}; 5 } 6 public void methodb() {}; 7 } Instanz von InnerClass kann auf alle Member von OuterClass

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

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 14.11.2017 IT I - VO 6 1 Wissensüberprüfung Wie ruft man statische Methode auf? Gegeben Klasse Fix mit statischer Methode static boolean foxi(string

Mehr

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Collections Thomas Mauermeier 15.01.2019 Ludwig-Maximilians-Universität München Collections? Was ist eine Collection? Container für mehrere Objekte

Mehr

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 10 Ausgegeben am: Abgabe bis: 13.01.2006 24.1.2006 (Theorie) 27.1.2006 (Praktisch) Thema:

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 11: Generic Methods Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 15 Inhalt

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

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