CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Größe: px
Ab Seite anzeigen:

Download "CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)"

Transkript

1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Klassenbibliothek Kollektionen Anforderungen der Kollektionen an ihre Elemente Iteratoren Seite 1

2 Klassenbibliothek Seite 2

3 Java = Sprache + Bibliothek Java = Sprachkern + Klassenbibliothek Klassenbibliothek Sammlung von vordefinierten Klassen für allgemeine wiederkehrende Aufgaben Java Klassenbibliothek definiert als <Java Versionsbezeichnung> API Specification z.b. Java Platform Standard Edition 6.0 API Specification siehe java.sun.com/docs, realisiert in den Java-Distributionen z.b. JDK (Java Development Kit 1.6.0) organisiert in Pakete java.applet... viele viele weitere Pakete mit vielen Klassen... org.xml.sax.helpers Seite 3

4 Klassenbibliothek Klassenbibliothek Organisiert in Pakete Beispiel-Pakete jeweils mit einer Beispiel-Klasse und einer Beispiel-Methode javax.swing JOptionsPane JOptionsPane.showMessageDialog java.lang Integer Integer. parseint java.util Arrays Arrays.sort Seite 4

5 Klassenbibliothek wichtige Pakete der Klassenbibliothek java.lang enthält Dinge von fundamentaler Bedeutung, z.b.: Integer Math Object... java.util allgemein verwendbare Hilfsklassen (Utilities) speziell für die Arbeit mit Feldern und anderen Kollektionen, z.b.: Arrays Collections ArrayList HashSet... java.awt, javax.swing enthält Nützliches zur Konstruktion graphischer Oberflächen Seite 5

6 Klassenbibliothek: API Doku immer bereit halten! Seite 6

7 Kollektionen Seite 7

8 Kollektionen Kollektionen (Collection): Abstrakte Datentypen zur Verwaltung von Elementen in Java nicht als vordefinierte Sprachelemente verfügbar, sondern als Bestandteil der Standard-Bibliothek Beispiele: Mengen, Listen, Abbildungen Java-Klassenbibliothek Paket java.util enthält Schnittstellen und Klassen zum Umgang mit Kollektionen Collection Framework: Zusammenhängendes System aus Klassen- und Schnittstellendefinitionen in der Klassenbibliothek Kollektionstypen der Java-Klassenbibliothek gibt es in drei Grund-Varianten List Set Map Listen Mengen Abbildungen Seite 8

9 Kollektionen: Liste ArrayList (java.util.arraylist) Als Typ einer Variablen oder eines Parameters möglichst ein Interface verwenden! Eine Klasse die den ADT Liste auf Basis von Arrays implementiert import java.util.arraylist; import java.util.list; jede Art Integer-Liste ist willkommen public final class Test { public static void lister(list<integer> l){ for (Integer i : l) System.out.println(i); jede Art Integer-Liste ist als Wert erlaubt public static void main(string[] args) { List<Integer> l = new ArrayList<Integer>(); l.add(5); lister(l); eine Array-basierte Implementierung von ArrayList als List-Implementierung Seite 9 Liste erzeugen

10 Kollektionen: Liste import import import import import java.io.file; java.util.arraylist; java.util.collections; java.util.list; javax.swing.jfilechooser; Beispiel: MP3-Dateien in einem Verzeichnis sortiert auflisten public final class MusicCollection { private MusicCollection() { private static File choosefile(string msg) { JFileChooser fc = new JFileChooser(); fc.setfileselectionmode(jfilechooser.directories_only); int returnval = fc.showdialog(n ull, msg); if (returnval == JFileChooser.APPROVE_OPTION) { ret urn fc.getselectedfile(); else { retur n n ull; public static void main(string[] args) { File directory = choosefile("verzeichnis mit Musik"); Liste erzeugen: Größe nach Bedarf! Element zu Liste hinzu fügen List<String> songs = new ArrayList<String>(); for (String filename : directory.list()) { if (filename.endswith(".mp3")) { songs.add(filename.trim()); Collections. sort (songs); Liste sortieren for (String song : songs) { String[] splited = song.split("\\s+-\\s+"); Liste durchlaufen if (splited.length >= 2) { System.out.println("Interpret : "+splited[0]+"\n\ttitel: "+ splited[1]); else { System.out.println(song); Seite 10

11 <<interface>> Kollektionen: Liste List java.util.list, java.util.arraylist, ArrayList java.util.linkedlist LinkedList... List<Integer> l = new Liste(); List<Integer>();... ein Interface hat keine Objekte!... List<Integer> l = null; l = new ArrayList<Integer>(); l = new LinkedList<Integer>();... eine Variable mit Interface-Typ kann mit allen passenden Implementierungen belegt werden public void m(list<integer> l){... l. listmethode m( new ArrayList<Integer>() );... m( new LinkedList<Integer>() );... eine Methode mit Parameter mit InterfaceTyp kann mit allen passenden ParameterImplementierungen umgehen Seite 11

12 <<interface>> Kollektionen: Liste List java.util.list<e> ArrayList generischer ADT Liste Verwendung LinkedList Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Liste: Konzept / ADT-Sicht 1) 2) 3) 4) 5) 6) A B C D K L java.util Interface List<E> Liste: Benutzer-kontrollierte Folge von Elementen: Die Position von x in einem List-Typ hängt davon ab, wohin die Anwendung es positioniert. Seite 12

13 <<interface>> Kollektionen: Liste List java.util.arraylist<e> ArrayList ist die Array-Implementierung (Datenstruktur Feld/Array) eines generischen ADT Liste LinkedList Verwendung Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Datenstruktur Array: schnelles indiziertes Zugreifen, kompakte Speicherung Einfügen nicht häufig 1) 2) 3) 4) Liste Konzept / 5) ADT-Sicht 6) A B C D K L Liste Datenstruktur-Sicht: Array-Implementierung Seite 13 java.util Class ArrayList<E> LinkedList wenn oft indiziert zugegriffen und selten eingefügt / entfernt wird. A B C D K L

14 <<interface>> Kollektionen: Liste List java.util.linkedlist<e> ArrayList ist die Zeiger-Implementierung (Datenstruktur verkettete Liste) eines generischen ADT Liste LinkedList Verwendung Datentyp mit Listeneigenschaft-Eigenschaft: linear sortierte Folge mit Sortierung unter der Kontrolle der Anwendung Datenstruktur verkettete Liste: schnelles Einfügen / Entfernen an beliebigen Positionen 1) 2) 3) 4) Liste 5) Konzept / ADT-Sicht 6) A B C D K L java.util Class LinkedList<E> LinkedList wenn oft eingefügt / entfernt und selten indiziert zugegriffen wird. A B C D K L Liste Datenstruktur-Sicht: Implementierung als verkettete Liste Seite 14

15 Kollektionen: List, ArrayList und LinkerdList ArrayList Array-basierte Listenimplementierung schneller Zugriff / weniger Speicherbedarf aufwendiges Einfügen / Entnehmen (Umkopieren, eventuell neu anlegen) List-Interface ArrayList LinkedList Durch Referenzen verkettete Elemente Zugriff langsam / mehr Speicherplatz Einfügen / Entnehmen schnell List-Interface LinkedList Seite 15

16 Kollektionen: Abbildung (Map) <<interface>> Map java.util.map<k,v> TreeMap generischer ADT Abbildung HashMap Beispiel: HashMap<String, Integer> map = new HashMap<String, Integer>(); //Werte eintragen map.put("peter", 4711); map.put("inge", 8150); map.put("klaus", 2222); java.util Interface Map<K,V> //Wert zu eine Schluessel System.out.println( "Klaus hat die Nr: " + map.get("klaus") ); Seite 16

17 Kollektionen: Abbildung (Map) File directory = choosefile("verzeichnis mit Musik"); Map<String, List<String>> songdirectory = new HashMap<String, List<String>>(); for (String filename : directory.list()) { if (filename.endswith(".mp3")) { int idot = filename.lastindexof('.'); filename = filename.substring(0, idot); Abb: Interpret ~> Liste der Titel String[] splited = filename.trim().split("\\s+-\\s+"); String interpret = null; String titel = null; if (splited.length >= 2) { interpret = splited[0]; titel = splited[1]; for (int i = 2; i < splited.length; i++) { titel = splited[1] + splited[i]; else { interpret = "Unbekannt"; titel = filename.trim(); List<String> songs = songdirectory.get(interpret); if (songs == null) { songs = new LinkedList<String>(); Liste der Titel von interpret songdirectory.put(interpret, songs); songs.add(titel); songdirectory.put(interpret, songs); for (String i : songdirectory.keyset()) { System.out.println("Interpret : " + i); for (String t : songdirectory.get(i)) { System.out.println("\t" + t); Menge der Schlüssel der Abb. (die Interpreten) Beispiel: MP3-Dateien in einem Verzeichnis sortiert nach Interpret ausgeben Seite 17

18 Kollektionen: Abbildung (Map) <<interface>> Map java.util.treemap<k,v> TreeMap ist die Baum-Implementierung (Datenstruktur Baum) eines generischen ADT Abbildung HashMap Verwendung Datentyp mit Abbildungstyp-Eigenschaft: Abbildung von K-Objekten auf V-Objekte (Key, Value) z.b. Name (String) Telefonnummer (Integer) Datenstruktur Baum: schnelles Einfügen und Suchen sortierte Steicherung Abbildung: Konzept / ADT-Sicht A B C D K L X Y Z U V W java.util Class TreeMap<K,V> C Z K V A X Abbildung, Datenstruktur-Sicht: BaumImplementierung Seite 18 B Y D U L W

19 Kollektionen: Abbildung (Map) <<interface>> Map java.util.hashmap<k,v> TreeMap ist die Hash-Implementierung (Datenstruktur Hash-Tabelle) eines generischen ADT Abbildung Verwendung Datentyp mit Abbildungstyp-Eigenschaft: HashMap Abbildung von K-Objekten auf V-Objekte (Key, Value) z.b. Name (String) Telefonnummer (Integer) java.util Class HashMap<K,V> Datenstruktur Hash-Tabelle: schnelles Einfügen und Suchen Abbildung: Konzept / ADT-Sicht A B C D K L X Y Z U V W HashCode der Keys Abbildung, datsnstrutur-sicht: Hash-TabellenImplementierung Seite 19 D U C Z K V A X B Y L W

20 Kollektionen: Menge (Set) <<interface>> Set java.util.set<e> TreeSet generischer ADT Menge (keine Duplikate, Verzicht auf Benutzer-gesteuerte Reihenfolge der Elemente) HashSet Beispiel: Set<Integer> primzahlen = new TreeSet<Integer>(); Scanner scan = new Scanner(System.in); java.util Interface Set<E> for (int i = 0; i < 10; i++) { Integer z = scan.nextint(); if (prim(z)) { primzahlen.add(z); A C K D L B Sets nimmt man nicht nur, wenn man Mengen benötigt, sondern auch, wenn Dinge sortiert aufbewahrt werden sollen, ihre Sortierung aber rein intern sein kann. D.h. wenn für die Anwendung die Art (Reihenfolge) der Speicherung nicht interessant ist und die Implementierung darum nach eigenen Vorstellungen speichern darf. Das macht eventuell ein sehr effizientes (weil von der Bibliothek implementiertes) Suchen und Einfügen möglich. Seite 20 Menge: Konzept / ADT-Sicht

21 Kollektionen: Menge (Set) <<interface>> Set java.util.treeset<e> TreeSet ist die Baum-Implementierung (Datenstruktur Baum) eines generischen ADT Menge (~ BaumMenge von oben) HashSet Verwendung Datentyp mit Mengen-Eigenschaft (keine Duplikate) Verwendung einer Menge statt Liste: java.util mit interner Sortierung Class TreeSet<E> schnelles Suchen C K A Menge: Konzept / ADT-Sicht A C K D L B Menge, Datenstruktur-Sicht: BaumImplementierung Seite 21 B D L

22 Kollektionen: Menge (Set) <<interface>> Set java.util.hashset<e> ist die Hash-Implementierung (Datenstruktur Hash-Tabelle) eines generischen ADT Menge Verwendung Datentyp mit Mengen-Eigenschaft Datenstruktur Hash-Tabelle: schnelles Einfügen, Entfernen und Suchen keine interne Sortierung HashCode der Elemente Menge: Konzept / ADT-Sicht A C K D L B Menge Datenstruktur-Sicht: Hash-TabellenImplementierung Seite 22 TreeSet HashSet java.util Class HashSet<E> D C K A L B

23 Helferklasse Collections Collections Helfer-Klasse aus java.util arbeitet auf Kollektionen (z.b. ArrayList) vergleichbar mit der Klasse Arrays für Felder List<Integer> l = new ArrayList<Integer>();... l fuellen... // l sortieren: Collections.sort(l); // l ausgeben: System.out.println(a.toString()); Seite 23

24 Helferklasse Arrays Arrays Helfer-Klasse aus java.util mit statischen Methoden ist kein Array! Collections Helfer-Klasse aus java.util mit statischen Methoden ist keine Kollektion! Collection Basis-Interface für List und Set Kollektion, Kollektions-Typen Kollektion, Collection: Sammelbegriff für vordefinierte Klassen der Bibliothek Alternativen zu array definiert im Paket java.util Beispiel einner Kollektionsklasse: ArrayList Seite 24

25 Collections Framework: Übersicht Framework (Rahmen): System vorgegebener Definitionen in die eigene Implementierungen eingepasst werden. aus Die Interfaces Set / List / Map /... beschreiben Funktionalitäten, die auf unterschiedliche Art in Klassen implementiert sind. Collection Set... Map List ArrayList LinkedList Seite LinkedHashMap...

26 Collections Framework: Namenskonvention Namenskonvention: Implementierungs-Art Implementiertes Interface Beispiele: ArrayList LinkedList HashMap TreeMap HashSet TreeSet Seite 26

27 Collections: Referenz-Semantik In einer Kollektion werden stets nur Referenzen gespeichert ArrayList<Integer> l = new ArrayList<Integer>(); l.add( 128 ); l.add( 128 ); l if ( l.get(0) == l.get(1) ) System.out.println( l.get(0)+" = "+l.get(1) ); else System.out.println( l.get(0)+"!= "+l.get(1) ); if ( l.get(0).equals(l.get(1)) ) System.out.println( l.get(0)+" equals "+l.get(1) ); else System.out.println( l.get(0)+"!equals "+l.get(1) ); Ausgabe: Seite 27 null != equals 128

28 Generische und nicht generische Kollektionen generische Kollektion keine primitiven Typen hier! (ab Java 5) Kollektion mit festgelegtem ElementTyp. Element-Typ nicht primitiv! nicht generische Kollektion Element-Typ wird nicht explizit angegeben Kollektion kann Elemente unterschiedlichen Typs aufnehmen. Keine primitiven Typen in Kollektionen! ArrayList<Integer> l = new ArrayList<Integer>(); l.add(1); l.add("hallo"); ArrayList l = new ArrayList(); l.add(1); //l.add(new Integer(1)); l.add("hallo"); Autoboxing: automatische Konversion int => Integer Im Normalfall (kein Typenmix) generische Kollektionen verwenden! Seite 28

29 Nun, wer hat denn brav sein equals implementiert? Kollektionen: Anforderungen an die Elemente Seite 29

30 Hashing Hashing: Methode zur Speicherung von Zuordnungen: Schlüssel Wert Das Hashverfahren beruht auf einer Schlüsseltransformation. Dem Schlüssel (beliebiges Objekt) wird dabei eine Schlüsselwert (int-wert) zugeordnet Die Speicheradresse eines Datensatzes wird ohne zusätzliche Hilfsstrukturen aus dem Schlüsselwert berechnet. (Beispielsweise als Index in einem Array, der Hashtabelle.) Die Beziehung zwischen Schlüsselwert und Speicheradresse wird durch eine Hashfunktion hergestellt. Die Anwendung dieser Funktion auf den Schlüsselwert ergibt die Speicheradresse Seite 30 java.util Class HashMap<K,V> java.util Class HashSet<E> ''Hallo'' => hash(''hallo'') = 4711 => hashtable[4711] -> ''Hallo''

31 Hashing: Anforderungen an die Element-Typen java.util.hashset<e> java.util.hashmap<k,v> E bzw. K sollten die Methode equals implementieren E bzw. K sollten die Methode hashcode implementieren beide Methoden sollten verträglich sein: x.equals(y) => x.hashcode() == y.hashcode() gleiche Elemente haben den gleichen Hash-Code java.util Class HashMap<K,V> java.util Class HashSet<E> siehe API-Doku zu java.lang Interface Comparable<T>: It is strongly recommended (though not required) that natural orderings be consistent with equals. This is so because sorted sets (and sorted maps) without explicit comparators behave "strangely" when they are used with elements (or keys) whose natural ordering is inconsistent with equals. In particular, such a sorted set (or sorted map) violates the general contract for set (or map), which is defined in terms of the equals method. Seite 31

32 Hashing: Anforderungen an die Element-Typen Definition einer hashcode-methode Der Hashcode eines Objekts darf nur von den für equals relevanten Objektvariablen beeinflusst werden Objekte die gleich sind (entspr. equals) müssen den gleichen hash-code liefern Der Hashcode eines Objekts kann beispielsweise wie folgt berechnet werden: Berechne den Hashcode jeder relevanten Objektvariablen f wie folgt: boolean f => (f? 1 : 0) byte f, int f, short f => (int) f long f => f^(f>>>32)) float f => Float.floatToBits(f) double f => Double.doubleToLongBits(f)^(Double.doubleToLongBits(f)>>>32) AClass f => (f == 0? 0 : f.hashcode()) Atype[] f => Verfahre mit den Elementen wie mit Objektvariablen Berechne den Hashcode des Objekts aus dem seiner Felder mit int res = 1 für jeden Hashcode c eines Felds res = 31 * res + c Seite 32

33 equals / hashcode Wer equals sagt, der muss auch hashcode sagen! public class Person { private String vorname; private String nachname; public Person(String vorname, String nachname){ this.vorname = vorname; this.nachname = nachname; public String tostring(){ return vorname+" "+nachname; public boolean equals(object o){ if (!(o instanceof Person) ) return false; Person p = (Person)o; if (vorname.equals(p.vorname) && nachname.equals(p.nachname)) return true; else return false; public int hashcode(){ return 31*vorName.hashCode() +nachname.hashcode(); Seite 33 Selbst definierte Klassen, die als Schlüssel (Key) einer HashMap oder Element eines HashSet auftreten, sollen equals und hashcode konsistent definieren. Vordefinierte Klassen von Java erfüllen diese Anforderung.

34 Trees: Anforderungen an die Element-Typen java.util.treeset<e> java.util.treemap<k,v> E bzw. K sollte die Schnittstelle Comparable implementieren damit ein sortierter Suchbaum aufgebaut werden kann die Methode equals von E bzw. K sollte dazu passen x.equals(y) <=> x.compareto(y) == 0 was gleich ist, sollte die gleiche Ordnungsposition haben und umgekehrt Seite 34 java.util Class TreeSet<E> java.util Class TreeMap<K,E>

35 Vergleichbarkeit java.lang interface Comparable<T> int compareto(t o) allgemeine Vergleichbarkeit x.compareto(y) < 0 x.compareto(y) = 0 x.compareto(y) > 0 x < y x == y x > y <, >, == ist nur auf wenigen primitiven Typen definiert. Instanzen von Klassen werden mit compareto verglichen. Diese Methode ist auf Klassen Standard-Klassen wie Integer, String,... vordefiniert. Eine Klasse erklärt, dass ihre Objekte vergleichbar, sind sie also compareto zur Verfügung stellt, indem sie die Schnittstelle Comparable implementiert. z.b: class C implements Comparable<C> {... int compareto(c c) { Seite 35

36 Übersicht: Anforderungen an die Element-Typen java.util.arraylist<e> E sollte die Methode equals implementieren java.util.linkedlist<e> E sollte die Methode equals implementieren java.util.treeset<e> E sollte die Schnittstelle Comparable implementieren die Methode equals sollte dazu passen java.util.hashset<e> E sollte die Methoden equals und dazu passend hashcode implementieren java.util.treemap<k,v> K sollte die Schnittstelle Comparable implementieren die Methode equals sollte dazu passen java.util.hashmap<k,v> K sollte die Methoden equals und dazu passend hashcode implementieren Seite 36

37 equals / compareto : Beispiel 1 public class Person implements Comparable<Person> { private String vorname; private String nachname; public Person(String vorname, String nachname) { this.vorname = vorname; this.nachname = nachname; public String tostring() {return vorname + " " + nachname; public boolean equals(object o) { if (!(o instanceof Person)) return false; Person p = (Person) o; if (vorname.equals(p.vorname) && nachname.equals(p.nachname)) return true; else return false; public int compareto(person p) { return nachname.compareto(p.nachname)!= 0? nachname.compareto(p.nachname) : vorname.compareto(p.vorname); public static void main(string[] args) { TreeSet<Person> s = new TreeSet<Person>(); s.add(new Person("Minni", "Maus")); s.add(new Person("Peter", "Pan")); s.add(new Person("Micky", "Maus")); s.add(new Person("Charly", "Brown")); for ( Person p : s) System.out.println(p); Seite 37 Selbst definierte Klassen, die als Element einer sortierten Menge (TreeSet) oder als Schlüssel einer sortierten Abbildung (TreeMap) auftreten, sollen equals und compareto konsistent definieren. Vordefinierte Klassen von Java erfüllen diese Anforderung. Selbst geschriebene Klassen sollten sie auch erfüllen! 36

38 equals / compareto / hashcode : Beispiel 2 (1) /** * Zweidimensionale Vektoren. * Ein Objekt dieser Klasse realisiert einen Vektor in der Ebene in karthesischer Darstellung. * * Achtung: Diese Klasse hat eine natuerliche Ordung die nicht konsistent ist mit equals! * Note: This class has a natural ordering that is inconsistent with equals! */ final class VektorK_A implements Comparable<VektorK_A> { private double x; private double y; public VektorK_A(double x, double y) { this.x = x; this.y = y; public double length() { return Math.sqrt(x*x + y*y); // tostring wird eigentlich immer definiert! public String tostring(){ return "<" + this.x + ", " + this.y + public int compareto(vektork_a v) { return (int) (this.length() - v.length()); public boolean equals(vektork_a v) { return x == v.x && y == v.y; public boolean equals(object o) { if (o instanceof VektorK_A) { return this.equals((vektork_a) o); else { return false; equals und compareto sollten consistent sein. Sie müssen aber nicht. Seite 38

39 equals / compareto / hashcode :Beispiel 2 (2) /* * (non-javadoc) java.lang.object#hashcode() * Einfaches Muster fuer hashcode: * Verarbeite den Hashcode jedes Feldes (= Objektvariale), das bei * Gleichheit eine Rolle spielt * (und NUR DIESE! Gleiches muss den gleichen Hashcode liefern). * Handelt es sich um einen primitiven Typ, dann nimm eine * Hilfsroutine wie Double.doubleToLongBits public int hashcode() { final int prime = 31; long hash = 1; hash = hash * prime + Double.doubleToLongBits(x) % Integer.MAX_VALUE; hash = hash * prime + Double.doubleToLongBits(y) % Integer.MAX_VALUE; return (int) hash;... Seite 39

40 Kollektion Iterator Iteratoren Seite 40

41 Iterator Iterator Mechanismus zum Durchlaufen einer Kollektion explizite Nutzung implizite Nutzung mit foreach-schleife ArrayList<Integer> l = new ArrayList<Integer>(); l.add(1); l.add(2); l.add(3); iterierbare Kollektion oder Feld for ( int i : l ) System.out.println(i); implizite Nutzung eines Iterators Iterator<Integer> iter = l.iterator(); while ( iter.hasnext() ) { System.out.println( iter.next() ); explizite Nutzung eines Iterators Seite 41

42 Iteratoren und das Collections-Framwork Java Kollektionen sind iterierbar sie können Iteratoren erzeugen mit dem man sie durchlaufen kann public interface Collection<E> extends Iterable<E>{... public interface List<E> extends Collection<E>{... public class ArrayList<E>extends AbstractList<E> implements List<E>,RandomAccess, Cloneable, Serializable {... Iterable Iterable Collection iterator():iterator iterator():iterator Iterator Iterator next():object next():object hasnext():boolean hasnext():boolean... Map List Set <<use>> ArrayList iterierbar Seite 42 LinkedList... LinkedHashMap nicht iterierbar

43 Iteratoren und das Collections-Framwork Java Kollektionen sind iterierbar Iterable : sie können Iteratoren erzeugen: Methode iterator ~> Iterator Iterator : mit dem man sie durchlaufen kann hasnext / next ArrayList<Integer> l = Iterator Iterator new ArrayList<Integer>(); next():object next():object hasnext():boolean hasnext():boolean l.add(1); l.add(2); l.add(3); Iterator<Integer> iter = l.iterator(); <<use>> Iterable Iterable Collection iterator():iterator iterator():iterator List while ( iter.hasnext() ) { System.out.println( iter.next() ); automatische Umwandlung durch den Compiler for ( int i : l ) System.out.println(i); ArrayList Seite 43

44 Iteratoren und das Collections-Framwork Listen java.util.arraylist<e> java.util.linkedlist<e> iterierbar mit Iterator Iterator<E> iterator() iterierbar mit Listen-Iterator (Durchlauf in beide Richtungen) ListIterator<E> listiterator() Mengen java.util.treeset<e> java.util.hashset<e> iterierbar mit Iterator Iterator<E> iterator() Abbildungen java.util.treemap<k,v> java.util.hashmap<k,v> nicht iterierbar aber Set<K> keyset() liefert die (iterierbare) Menge der Schlüssel Seite 44

45 Collections-Framwork verwenden Schnittstelle auswählen Implementierungsvariante (Datenstruktur) auswählen Anforderungen an Elementtypen prüfen / erfüllen Seite 45

Java Einführung Collections

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Programmierkurs Java

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

Mehr

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

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung. Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Informatik II. Vordefinierte Datenstrukturen. - Abbildungen Map. Seite 1 Th Letschert, THM

Informatik II. Vordefinierte Datenstrukturen. - Abbildungen Map. Seite 1 Th Letschert, THM Informatik II Vordefinierte atenstrukturen - Listen List - bbildungen Map - Mengen Set Seite 1 Th Letschert, THM atenstrukturen atenstrukturen Sprachelemente zur strukturierten Speicherung von aten atentyp

Mehr

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Teil V. Generics und Kollektionen in Java

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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

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

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

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Datenstrukturen in Java

Datenstrukturen in Java Datenstrukturen in Java SEP 350 Datenstrukturen Datenstrukturen ermöglichen Verwaltung von / Zugriff auf Daten (hier: Objekte) Datenstrukturen unterscheiden sich duch Funktionalität Implementierung modulares

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Kollektionen der Java-API Listen Abbildungen Mengen Seite 1 Th Letschert Datenstrukturen Datenstrukturen Sprachelemente zur strukturierten

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Java Generics & Collections

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

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Datentypen und Datenstrukturen Selbst definierte Datenstrukturen Innere Klassen Seite 1 Typen: 1. Kasper 2. Prinzessin 3. Großmutter

Mehr

Java Einführung Abstrakte Klassen und Interfaces

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

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

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

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

1 Polymorphie (Vielgestaltigkeit)

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

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 4 ArrayList, PriorityQueue, HashSet und HashMap Array List Dynamisches Array ArrayList vertritt ein Array mit variabler Länge Kapazität passt sich automatisch

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 21. Datenstrukturen 21.1 Einleitung 21.2 Listen 21.3 Assoziative Speicher 21.4 Bäume 21.5 Mengen 21.6 Das Collections-Framework in Java 21 Datenstrukturen 5 Mengen Einf. Progr. (WS 08/09) 870

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

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

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

Mehr

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

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

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

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

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

Mehr

Programmiertechnik II

Programmiertechnik II Datentypen in Java Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen: float,

Mehr

19 Collections Framework

19 Collections Framework Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

II.4.6 Collections - 1 -

II.4.6 Collections - 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.6 Collections - 1 - Typische Datenstrukturen

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

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

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

Kapitel 6. Vererbung

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

Mehr

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

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält. Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Interfaces Maps and Collections Iterable Collection Map Vorteile: Set List Queue SortedMap

Mehr

Programmiertechnik II

Programmiertechnik II Programmiertechnik II Datentypen Primitive Typen in Java Wertesemantik (keine Referenzsemantik) Vordefinierte Hüllklassen (etwa java.lang.float) Integrale Typen: char, byte, short, int, long Gleitkommatypen:

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java Kapitel 4: Bäume i 1. Einleitung 2. Ein Datenmodell für Listen 3. Doppelt-verkettete Listen 4. Bäume 5. Das Collections-Framework in Java Prof. Dr. Peer Kröger: EiP (WS 18/19) Teil 11: Datenstrukturen

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt Nr. 5 Generizität und TicTacToe Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstrukturen I: Lineare Sequenzen / Listen Datenstrukturen für Sequenzen Sequenzen in der Java-API:

Mehr

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.

Mehr

Abstrakte Datentypen und Java

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

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

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

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

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Javakurs zu Informatik I. Henning Heitkötter

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

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen Stefan Brass: OOP (Java), 21. Collection Klassen 1/30 Objektorientierte Programmierung Kapitel 21: Einführung in die Collection Klassen Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

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

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Gebundene Typparameter

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

Mehr

Kapitel 6. Vererbung

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

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

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

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Praktische Übung 'JUnit-Test'

Praktische Übung 'JUnit-Test' Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Hashmap: Video Erklärung

Hashmap: Video Erklärung Hashmap Hashmap: Video Erklärung Definition und Motivation Array: Zugriff über Index=Zahl Wert(Value) Schlüssel(Key) Maier, Klaus 21 Array Hashtag: Zugriff über einen nichtnumerischen Wert 06431 92310

Mehr

Prinzipien Objektorientierter Programmierung

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

Mehr

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

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

Mehr

Kapitel 6. Vererbung

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

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Mengen und Multimengen

Mengen und Multimengen Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr