CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
|
|
- Albert Hofer
- vor 6 Jahren
- Abrufe
Transkript
1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Datentypen und Datenstrukturen Selbst definierte Datenstrukturen Innere Klassen Seite 1
2 Typen: 1. Kasper 2. Prinzessin 3. Großmutter Datentypen und Datenstrukturen Datenstrukturen: realisieren die Typen, sie agieren hinter den Kulissen Seite 2
3 Datentyp / Datenstruktur Typ / Datentyp / abstrakter Datentyp Sicht von außen / Sicht des Anwenders (Daten-) Typ ist charakterisiert durch sein Verhalten (oft) durch Interface (Schnittstelle) beschreibbar kann immer durch Spezifikation beschrieben werden Datenstruktur innere Sicht / Sicht des Implementierers Struktur / Aufbau / Organisation von Daten Ich bin ein Stack! 5 2 push pop top Seite 3
4 Datentyp / Datenstruktur Datentyp / Datenstruktur / Interface public interface Stack { int top(); void push(int x); void pop(); public class ArrayStack implements Stack { private int a[]; private int count; public void push(int x) {... public void pop() {... Seite 4
5 Datentyp / Datenstruktur Datenstrukturen und Kollektionstypen Datentyp-Sicht der Liste: Kollektionstypen: Kollektion mit einem bestimmten Datentypen die Kollektionen Verhalten (definierte Reihenfolge) (beliebiger) Elemente verwalten Beispiele: Liste, Menge, Abbildung, Stack, Warteschlangen,... gibt mir Dein erstes Element Kollektionstypen erfordern die Datentyp Liste Organisation ihrer Elemente in Datenstrukturen Weitere Beispiele Datenstruktur Datenstruktur-Sicht der Liste: linear über Verweise verkette Speicherbereiche Feld Liste Baum... umfasst Knoten und Verweise Seite 5 Datenstruktur Liste
6 Datentyp / Datenstruktur Collection Framework: Datenstrukturen hinter der Fassade von Datentypen Datentyp Liste Datenstruktur Liste LinkedList Datentyp Liste Datenstruktur Feld Die Begriffe Datenstruktur und Datentyp werden (leider) nicht immer klar getrennt. Bei der Datenstruktur steht die Speicherorganisation im Vordergrund, beim Datentyp die Schnittstelle. Aber: Die Schnittstelle legt eine bestimmte Speicherorganisation nahe und die Speicherorganisation ermöglicht eine bestimmte Schnittstelle. Seite 6 ArrayList
7 Datenstruktur Baum Seite 7
8 Datenstruktur Baum Bäume: zykelfreie Graphen Knoten Kanten (eventuell gerichtet zu den Kindern / Nachfolgern) baumartige Datenstrukturen: Knoten: Speicherbereiche Kanten: Verweise Einsatz baumartiger Datenstrukturen Implementierung von schwach sortierten Datentypen Darstellung hierarchischer Information (z.b. Syntaxbäume) etc. Bäume: zykelfreie verbundene Graphen + 1 Seite Syntaxbaum zu (1-4)+7
9 Datenstruktur Baum Binäre Bäume Knoten haben maximal 2 Nachfolger binäre Suchbäume Knoten enthalten Informationen Informationen kommen nicht doppelt vor linke Nachfolger enthalten kleine Info rechte Nachfolger enthalten größere Info Einsatz binärer Suchbäume schwache Sortierung für Datenstrukturen in denen gesucht werden muss; z.b. Verzeichnisse oder Menge (schon drin?) Suche im Suchbaum schneller als in unsortierter Liste Einfügen schneller als in einer sortierten Liste Seite binärer Suchbaum Suche nach 5: - 5 < 6 => links - 5 > 3 => rechts - 5 = 5 => gefunden
10 Datenstruktur Baum im Collections Framework Bäume im Collections- Framework java.util.treeset<e> Set <<interface>> SortedSet <<interface>> Mengen-Implementierung die einen Baum als Datenstruktur verwendet und die Ordnung der Elemente (compareto) bei der Speicherung berücksichtigt. Vorteil gegenüber HashSet: Elemente können sortiert durchlaufen werden. Nachteil gegenüber HashSet: Operationen sind etwas langsamer AbstractSet TreeSet HashSet Map java.util.treemap<k,v> Abbildungs-Implementierung die einen Baum als Datenstruktur verwendet und die Ordnung der Schlüssel (compareto) bei der Speicherung berücksichtigt. Vorteil gegenüber HashMap: Schlüssel können sortiert durchlaufen werden. Nachteil gegenüber HashMap: Operationen sind langsamer Seite 10 <<interface>> SortedMap <<interface>> AbstractMap TreeMap HashMap
11 Datenstruktur Baum im Collections Framework Beispiel: Vorkommen von Worten in Dateien Wortvorkommen: Wort ~> ( DateiName ~> { (Zeile, Spalte) Wort kommt in Zeile an Spalte vor ) static TreeMap< String, TreeMap<String, TreeSet<LineColumn>>> wordoccurrance = new TreeMap<String, TreeMap<String, TreeSet<LineColumn>>>(); Der Typ der Variablen wird mit Klassen definiert (statt mit Interfaces, wie die allgemeine Regel empfiehlt), da der Algorithmus die besonderen Fähigkeiten der Baum-Implementierungen benötigt. Seite 11
12 Datenstruktur Baum im Collections Framework File f = null; List<File> filelist = new ArrayList<File>(); Wortvorkommen feststellen while (true) { f = choosefile("text-datei waehlen"); if (f == null) { break; filelist.add(f); for (File file : filelist) { String filename = file.getcanonicalpath(); Scanner scan = new Scanner(file); int linenr = 0; while (scan.hasnextline()) { String inputline = scan.nextline(); linenr++; String[] words = inputline.split("\\s"); int fromindex = 0; for (String word : words) { if (!word.matches("([a-za-z])([a-za-z0-9-_] &[a o u A O U]uml;)*")) { continue; TreeMap<String, TreeSet<LineColumn>> wordocc = wordoccurrance.get(word); if (wordocc == null) { wordocc = new TreeMap<String, TreeSet<LineColumn>>(); wordoccurrance.put(word, wordocc); TreeSet<LineColumn> filepos = wordocc.get(filename); if (filepos == null) { filepos = new TreeSet<LineColumn>(); wordocc.put(filename, filepos); int cloumnpos = inputline.indexof(word, fromindex); filepos.add(new LineColumn(lineNr, cloumnpos)); fromindex = cloumnpos; Seite 12
13 Datenstruktur Baum im Collections Framework Wortvorkommen ausgeben for (String word : wordoccurrance.keyset()) { System.out.println("Word: " + word); TreeMap<String, TreeSet<LineColumn>> fileocc = wordoccurrance.get(word); for (String fn : fileocc.keyset()) { System.out.println("File: " + fn); for (LineColumn lc : fileocc.get(fn)) { System.out.print(" " + lc + ","); System.out.println(); Seite 13
14 Datenstruktur Baum im Collections Framework final class LineColumn implements Comparable<LineColumn> { private int line; private int column; Wortvorkommen speichern public LineColumn(int line, int column) { this.line = line; this.column = column; public boolean equals(linecolumn lc) { return line == lc.line && column == public boolean equals(object o) { if (o instanceof LineColumn) { return equals((linecolumn) o); else { return public String tostring() { return "Line: " + line + " Column: " + public int hashcode() { return line * column + line + public int compareto(linecolumn o) { return this.line!= o.line? this.line - o.line : this.column - o.column; Seite 14
15 Selbst definierte Datenstrukturen Seite 15
16 Datentyp Menge implementiert als Baum Interface Menge definiert Funktionalität Implementierung als Suchbaum: BaumMenge Menge <<interface>> enthaelt(int): boolean einfuege(int): void realisiert die Funktionalität mit einem Suchbaum <<realize>> BaumMenge 0..2 Knoten 0..1 wert: int Eine Instanz von BaumMenge enthält maximal einen Knoten (der anker genannt wird) Jeder Knoten enthält maximal zwei andere Knoten. anker enthaelt(int): boolean einfuege(int): void Binärbaum-Implementierung einer Menge von int-werten Seite 16
17 Datentyp Menge implementiert als Baum public interface Menge { public void einfuege(int x); public boolean enthaelt(int x); Interface Menge Implementierung BaumMenge public class BaumMenge implements Menge { public boolean enthaelt(int x) { return enthaeltr(x, anker); public void einfuege(int x) { if ( anker == null ) anker = new Knoten(x,null,null); else einfueger(x, anker); private Knoten anker = null; private static class Knoten { int wert; Knoten links; Knoten rechts; Knoten(int e, Knoten links, Knoten rechts){ wert = e; this.links = links; this.rechts = rechts; Seite 17 Methoden: Rekursion über die Baumstruktur. statische innere Klasse: Lokale Klassendefinition (statisch: weil ohne Bezug zu einem Objekt.) Knoten ist eine rein interne Hilfsklasse
18 Datentyp Menge implementiert als Baum Interface Menge Implementierung BaumMenge private void einfueger(int x, Knoten k) { if ( x == k.wert ) return; // schon drin else if (x < k.wert ) { if ( k.links == null ) k.links = new Knoten(x,null,null); else einfueger(x, k.links); else { if (x > k.wert ) if ( k.rechts == null ) k.rechts = new Knoten(x,null,null); else einfueger(x, k.rechts); Methoden: Rekursion über die Baumstruktur. Seite 18
19 Iterierbare Menge java.lang interface Iterable<T> Iterierbare Klassen haben eine Methode iterator, die einen Iterator über einen Element-Typ T liefert. interface Iterable<T> ist Bestandteil der Klassenbibliothek Iterator<T> iterator(); public interface Menge extends Iterable<Integer> { public void einfuege(int x); public boolean enthaelt(int x); Jede Implementierung von Menge ist eine iterierbare Klasse mit der Methode iterator, die einen Iterator über Integer liefert iterator 1, 3, 5, 6, 9, Seite 19 Der Iterator könnte z.b. einen InfixDurchlauf der Knoten liefern. Infix: erst links, dann Mitte, dann rechts
20 Iterierbare Menge / Programmrahmen public class BaumMenge implements Menge {... public Iterator<Integer> iterator() { return new BaumIterator(); class BaumIterator implements Iterator<Integer> { public boolean hasnext() {????? public Integer next() {????? public void remove() { throw new UnsupportedOperationException(); Seite 20 nicht statische innere Klasse: Lokale Klassendefinition mit Bezug zu einem Objekt. (Ein Iterator muss sich auf den Baum beziehen, den er durchlaufen soll.) remove wollen wir nicht implementieren!
21 Iterierbare Menge public class BaumMenge implements Menge {... private Knoten anker = null;... public Iterator<Integer> iterator() { return new BaumIterator(); class BaumIterator implements Iterator<Integer> { LinkedList<Knoten> l; BaumIterator() { l = new LinkedList<Knoten>(); infix(anker); private void infix(knoten k) { if ( k == null ) return; infix(k.links); l.add(k); infix(k.rechts); public boolean hasnext() { return! l.isempty(); public Integer next() { Knoten k = l.getfirst(); l.removefirst(); return k.wert; public void remove() { throw new UnsupportedOperationException(); Der Iterator speichert intern eine Liste der Knoten. in nicht-statischen Klassen ist ein Bezug auf das umfassende Objekt möglich. Hier ist das umfassende Objekt eine Instanz von BaumMenge und der Bezug geht zur Objekt-Variable anker dieser Instanz. remove wird nicht unterstützt. Seite 21
22 Iterierbare Menge durchlaufen BaumMenge b = new BaumMenge(); for (Integer i : b) System.out.println(i); Iterator<Integer> iter = b.iterator(); while ( iter.hasnext() ) { System.out.println(iter.next()); ausführliche Form Kurzform Seite 22
23 1 Innere Klassen Seite 23
24 Statische innere Klasse / geschachtelte Klasse Statische innere Klassen unterscheiden sich nur in der Sichtbarkeit / Programmorganisation von anderen normalen Klassen class A In Methoden der statischen inneren Klasse können (nur) statische Komponenten der äußeren Klasse verwendet werden A.x bezieht sich auf eine Komponente der äußeren Klasse kurz x wenn x eindeutig ist { static T x; static class I { T x = A.x; Seite 24
25 Nicht-statische innere Klasse Nicht-statische innere Klasse (kurz: innere Klasse): jedes Exemplar hat einen (impliziten) Bezug zum erzeugenden Objekt class BaumIterator implements Iterator<Integer> { LinkedList<Knoten> l; private BaumIterator() { l = new LinkedList<Knoten>(); infix(baummenge.this.anker); // oder kurz: infix(anker);... etc.... kein static! BaumMenge.this: Zeiger auf den Erzeuger anker ist eindeutig, darum hier anker ~ BaumMenge.this.anker Seite 25
26 Nicht-statische innere Klasse In Methoden der inneren Klasse: this zeigt auf ein Objekt der inneren Klasse ( auf mich selbst ) A.this zeigt auf ein Objekt der äußeren Klasse (auf meinen Erzeuger ) nicht statische innere Klasse Exemplar I() der new äußeren...new I() Klasse A... A-Objekt class A {... class I { Exemplar der inneren Klasse I this...this... A.this...A.this... Struktur der Klassendefinitionen I-Objekt Seite 26
27 Statische / Nicht-statische innere Klasse public class BaumMenge implements Menge { //... public Iterator<Integer> iterator() { return new BaumIterator(this); private static class BaumIterator implements Iterator<Integer> { Normalerweise kann ein Bezug zum erzeugenden Objekt auch explizit gesetzt werden! LinkedList<Knoten> l; private BaumIterator(BaumMenge m) { l = new LinkedList<Knoten>(); infix(m.anker); //... Seite 27
28 Anonyme innere Klasse Anonyme Klasse: interface INF { public TR m(tp x);... Klasse mit Definition und Instanzierung in einem Anonyme Klassen sind immer innere Klassen Instanzierungen sind immer innerhalb einer Methode und damit in einer anderen Klasse anonyme Klasse: Instanzierungs-Stelle = Definitionsstelle class C {... void f() { INF y = new... ; = class C { class Y implements INF { public TR m(tp x) { Anonyme Klassen sind immer nicht statische innere Klassen Entwurfsentscheidung Java INF () { public TR m(tp x){ ; void f() { INF y = new Y(); Seite 28
29 Nicht-statische innere Klasse in Methoden (Nicht statische) Klassen können innerhalb von Methoden definiert werden sie können anonym sein, müssen aber nicht können nur auf Variablen der umfassenden Methode zugreifen, wenn diese final sind. Wichtigste (bekannteste) Anwendung: GUIs / ActionListener Seite 29
30 Nicht-statische innere Klasse in Methoden public class Outer { public interface Int2Int { int f(int x); private int x; public Outer(int x) { this.x = x; public Int2Int genf (final int y) { return new Int2Int() { public int f(int a) { return a+x+y; ; Methoden-Variable public static void main( String[] args){ Int2Int ff = (new Outer(1)).genF(2); System.out.println(ff.f(3)); Ausgabe 6 Seite 30
31 Nicht-statische innere Klasse in Methoden public interface Int2Int { int f(int x); public final class Outer { private int x; public Outer(int x) { this.x = x; public Int2Int genf(final int y) { class Inner implements Int2Int { public int f(int a) { return a + x + y; return new Inner(); public static void main(string[] args) { Int2Int ff = (new Outer(1)).genF(2); System.out.println(ff.f(3)); Das Gleiche mit einer benannten inneren Klasse Seite 31
32 Anonyme innere Klasse Anonyme innere Klassen public class Outer { haben keine eigene Konstruktordefinition können Objektvariablen definieren private int x; public Outer(int x) { this.x = x; public Int2Int genf (final int y) { return new Int2Int() { private int b; public int f(int a) { int temp = b; b = a; return x+y+temp; ; Ausgabe? public static void main( String[] args){ Int2Int ff = (new Outer(1)).genF(2); System.out.println(ff.f(3)); System.out.println(ff.f(3)); Seite 32
33 Innere Klasse: Übersicht innere Klasse: Klasse die innerhalb einer anderen definiert wird statische innere / geschachtelte Klasse (static inner class / nested class) Innere / geschachtelte Klasse ist ohne Bezug auf ein Objekt Die Definition der inneren Klasse kann nur statische Komponenten der äußeren Klasse nutzen Statische innere Klassen haben einen Bezug zum statischen Anteil des definierenden Kontexts (der Klasse in der sie definiert sind: ÄussereKlasse...) (nicht statische) innere Klasse (inner class) Innere Klasse mit Bezug zu einem Objekt der äußeren Klasse (seinem Erzeuger) Die Definition der inneren Klasse kann statische und nicht statische Komponenten der äußeren Klasse nutzen. Innere Klassen dürfen (im Gegensatz zu statischen inneren Klassen) keine statischen Komponenten definieren. (Statisch heißt ohne Bezug zu einem Objekt, Objekt-Bezug widerspricht dem Konzept einer nicht-statischen Klasse) Innere Klassen haben eine Bezug zum definierenden Kontext (dem Objekt das sie erzeugt: ÄussereKlasse.this... ) Seite 33
34 Datenstrukturen / Java-Sprachelemente Datenstrukturen bestehen meist aus Knoten die über Referenzen miteinander verknüpft sind werden (nicht nur) zur Realisation eines Kollektions-Typs verwendet Kollektionen bieten Iteration über ihre Elemente Iteratoren benötigen einen Bezug zu ihrem Erzeuger: der Kollektion über die sie iterieren sollen. Java-Sprachelemente Kollektionen implementieren Iterable Iteratoren implementieren Iterator Knoten werden als innere Klassen definiert Iteratoren werden als innere Klassen definiert Kollektions-Typen implementieren die Iterable-Schnittstelle Varianten Klassendefinition in Klasse: statisch nicht statisch nicht statisch, anonym Seite 34
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
MehrKapitel 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
MehrInner 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
MehrInfo 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
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrSchein-/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
MehrII.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
MehrAlgorithmen 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:
MehrKapitel 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
MehrMengen 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
MehrOCP Java SE 8. Collections
OCP Java SE 8 Collections Collections (Interfaces) Iterable Collection Set List Queue SortedSet Deque Collection List erlaubt Duplikate und null behält die Reihenfolge Set erlaubt keine Duplikate Queue
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrAufgabenblatt 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
MehrProgrammierzertifikat Objekt-Orientierte Programmierung mit Java
Programmierzertifikat Objekt-Orientierte Programmierung mit Java Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2008 Peter Thiemann (Univ. Freiburg) Programmierzertifikat Objekt-Orientierte
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrProgrammieren 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
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
Mehr12 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
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
MehrTeil 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
MehrGrundlagen der Informatik 0
Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg
MehrInstitut 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
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Interface Seite 1 Schnittstelle / Interface Seite 2 Spezifikation / Schnittstelle / Interface Spezifikation Beschreibung einer Komponente
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (2/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Listen Bisher: Collections
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrSammlungen Listen Mengen Abbildungen Algorithmen Wrapper
Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper Pratikum SWE 2 M. Löberbauer T. Kotzmann H. Prähofer 1 Einleitung Collections sind Datenstrukturen für Sammlungen von Daten Stacks Queues Priority
MehrAlgorithmen und Datenstrukturen CS1017
Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstruktur, Datentyp, Datenabstraktion Abstrakter Datentyp / Datenabstraktion Kollektionen
MehrAbstrakte Datentypen und Java
Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
Mehrpublic interface Stack<E> { public void push(e e); public E pop();
ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für
MehrSoftware 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
MehrPunkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.
Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2
MehrPropä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
MehrTechnische Universität Braunschweig
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 28. August 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrLineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]
Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 16. August 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrMengen 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
MehrVorlesung 07: Collections. Peter Thiemann SS 2010
Vorlesung 07: Collections Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 45 Inhalt Collections Iteratoren Implementierungen Das Interface Collection Beispiel:
MehrSoftware 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
MehrAlgorithmen und Datenstrukturen
Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten
MehrPhysikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt
Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur Objektorientierte Programmierung im WS 2003/04 (IA 252) Zeit: 90 Minuten erlaubte Hilfsmittel: keine
MehrProgrammieren in Java
Programmieren in Java Vorlesung 08: Collections Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 39 Inhalt Collections
MehrInstitut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
MehrNützliche Utility-Klassen des JDK
Nützliche Utility-Klassen des JDK java.util :, Properties, I18N, Scanner java.text : Ausgabeformatierung u.a. java.util.prefs : Hierarchische Konfigurationsdaten (1.5) java.util.logging : Aufzeichnung
MehrInformatik 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
MehrInstitut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 6. Juli 2018 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 27. August
MehrEinfü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,
MehrObjektorientierte 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
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 29. August 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrProblem: 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
MehrWo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
MehrDie 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! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrJAVA 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)
MehrInstitut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 10. Mai 2013 Programmieren II 11. Übungsblatt Hinweis: Dieses Übungsblatt enthält die zweite Pflichtaufgabe.
MehrInstitut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Juli 2017 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 28. August
MehrObjektorientierte Implementierung
Objektorientierte Implementierung 10) Verfeinern von Assoziationen mit dem Java-2 Collection Framework Softwaretechnologie, Prof. Uwe Aßmann, Prof. Heinrich Hussmann 1 Objektorientierte Implementierung
MehrALP 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
MehrLehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt
Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrInstitut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern
MehrStacks, 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
MehrProgrammieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
Mehr1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
MehrVorkurs 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Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrALP II Dynamische Datenmengen Datenabstraktion
ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 31. März 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr3 Dynamische Datenstrukturen
3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester
MehrTECHNISCHE 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,
MehrGrundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139
Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)
MehrJavakurs 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
MehrKapitel 4: Datentyp Keller und Schlange
Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation
MehrTeil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework
Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Was gefällt Ihnen? Sehr ausführliches Skript Fragen / Aufgaben in der Vorlesung Praktische Beispiele Tolle Aufgabenblätter
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden
MehrFachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt
Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur C und Objektorientierte Programmierung im WS 2003/04 (WI h103, II h105, MI h353) Zeit: 150 Minuten erlaubte Hilfsmittel:
MehrDynamische Datenstrukturen
Dynamische Datenstrukturen B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten
Mehr3. Übungsbesprechung Programmkonstruktion
3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at November 16, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK November 16, 2011 1 / 22 Rückblick und
MehrKapitel 5: Interfaces
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,
Mehr