Algorithmen und Datenstrukturen CS1017

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen CS1017"

Transkript

1 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstruktur, Datentyp, Datenabstraktion Abstrakter Datentyp / Datenabstraktion Kollektionen der Java-API Datenmodellierung mit Kollektionstypen

2 Datentyp: Welches Verhalten / welche Nutzbarkeit? Legt fest: Welche Dinge gibt es, wie verhalten sie sich und was kann ich mit ihnen machen. Äußere (Anwender-) Sicht auf Daten und Operationen. Menge von Werten und zugehörigen Operationen Typen: 1. Kasper 2. Prinzessin 3. Großmutter Typen haben ein stereotypisches Verhalten. Ein Kasper ist so wie jeder andere. Seite 2

3 Datenstruktur: Welche Struktur? Festlegung: Wie werden Werte gespeichert, die nicht in eine einzige Variable passen. Innere (Implementierungs-) Sicht auf Daten. Art der Organisation komplexer Werte / Variablen im Speicher Komplexe Werte / Variablen werden im Speicher abgelegt, im Stack oder im Heap Der Heap ist dabei der zentrale Ort in dem Datenstrukturen gespeichert werden. Komplexe Werte / Variablen Datenstrukturen also bestehen immer aus einfacheren Bestandteilen, dieses sind: Werte / Variablen die in einem Array organisiert sind, oder Werte / Variablen die einem Objekte, oder Objekte die mit Zeiger (Pointer) miteinander verknüpft sind. Strukturen: 1. In Reihe 2. Quadratisch 3. Im Glashaus Seite 3

4 Beispiel Stapel (Stack) Datentyp Konzept: Ein Stapel ist eine Kollektion bei der Dinge hinzugefügt und wieder weggenommen werden können. Besonders Kennzeichen ist die Tatsache, dass immer nur das zuletzt hinzugefügte wieder weg genommen werden kann. Werte: Menge an gestapelten Dingen Operationen: Push (ablegen), Pop (entnehmen) Datenstruktur Realität: Die Daten werden so angeordnet, dass nur in bestimmter Art auf sie zugegriffen werden kann. Ich bin ein Stapel, willst Du mein Oberstes, oder etwas auf mich legen? Ich bin ein Stapel, willst Du mein Oberstes, oder etwas auf mich legen? Datentyp Stapel - ein Konzept - Datenstruktur Stapel - eine Realität Seite 4

5 Beispiel Stapel (Stack) Datentyp und Datenstruktur entsprechen sich Die Realität entspricht der Idee: Die Datenstruktur kann nur entsprechend dem Datentyp genutzt werden. Abstrakter Datentyp (ADT): Datentyp entspricht nicht Datenstruktur Organisiere die Nutzung einer Datenstruktur so, dass sie wie ein Stapel genutzt werden kann. Festlegung: Die Daten werden in einem Array gespeichert, eine Variable gibt den aktuellen Füllstand an. Ich bin ein Stapel, willst Du mein Oberstes, oder etwas auf mich legen? Ich bin ein Stapel, willst Du mein Oberstes, oder etwas auf mich legen? Datenstruktur Stapel Ich bin ein Stapel, willst Du mein Oberstes, oder etwas auf mich legen? top Datentyp Stapel abstrakter Datentyp Stapel Seite 5 4

6 Beispiel Stapel (Stack) Ein Stapel ist ein Datentyp. D.h. das Entscheidende sind die Operationen push und pop Die verwendete Datenstruktur Array ist ein Detail der Implementierung. Spezifikation eines Datentyps Problem: Wie kann man einen Datentyp spezifizieren, ohne gleich eine Implementierung anzugeben? Axiomatische Spezifikation Die Wirkung der Operationen wird durch Axiome (Gleichungen) angegeben. Z.B.: s.pop(s.push(x)) = x Spezifikation in einer Metasprache Die Wirkung der Operationen wird in einer anderen als der Implementierungssprache beschrieben. Oft in einer mathematisch inspirierte Notation. Die Spezifikation von Datentypen ist Thema der Softwaretechnik. Seite 6

7 Datentyp ~ Interface Da ein Datentyp die möglichen Operationen beschreibt, entspricht er oft einem Interface. Beispiel: Datentyp Stack als Interface interface Stack<T> { /** * Legt ein Element im Stack ab. x das abzulegende Element IllegalStateException falls der Stack voll ist. */ void push(t x) throws IllegalStateException; /** * Entnimmt dem Stack das zuletzt hinzugefügte Element. das entnommene Element. IllegalStateException falls der Stack leer ist. */ T pop() throws IllegalStateException; Seite 7 Interface / Datentyp: Was kann man mit einem Stack-Objekt machen.

8 Datenstruktur ~ Klassen / Objekte, Variablen, Arrays, Zeiger,... Da eine Datenstruktur die Organisation der Daten beschreibt, entspricht sie einer organisierten Kollektion von Objekten. Oft in einer Klasse zusammengefasst. Beispiel Datenstruktur Stack. Was ist ein Stack, wie ist er aufgebaut: Ein Stack ist leer oder er hat ein Element und einem Stack auf dem es liegt. interface Stack<T> { Datenstruktur: Diese Definition definiert die innere Struktur von Stapeln. Das Interface Stack wird hier zur Realisation des oders genutzt. class EmptyStack<T> implements Stack<T> { class NonEmptyStack<T> implements Stack<T>{ T top; Stack<T> rest; Interface: Der Typ Klavierspieler Seite 8

9 Abstrakter Datentyp: Datentyp mit Datenstruktur selbst implementieren Die Implementierung eines Datentyps bringt diesen mit einer Datenstruktur zusammen. Für einen Datentyp gibt es meist sehr viele Datenstrukturen mit denen er realisiert werden kann. Wird ein Datentyp vom Anwendungs-Programmierer oder von der API zur Verfügung gestellt, dann nennt man ihn abstrakten Datentyp Ein abstrakter Datentyp ist ein Datentyp, der nicht in der Sprache eingebaut ist, sondern selbst (oder von der API) mit eingebauten Datentypen implementiert wird. Implementierung Abstrakter Datentyp Klavierspieler Foto: Michael Lucan, Lizenz: CC-BY-SA 3.0, CC BY-SA 3.0, Seite 9 Interface

10 Abstrakter Datentyp: Datenstruktur und Datentyp zusammen bringen Beispiel: eine Implementierung des Interfaces für selbst-definierte Stapel import java.util.nosuchelementexception; /** * Stack abstraction. * Objects of classes that implement this interface represent * unbounded stacks of int-values. */ public interface IntStack { /** * push on stack. v the value to be pushed v is added on top of stack */ void push(int v); /** * Get top */ int top() element. the element that was pushed last NoSuchElementException if the stack is empty throws NoSuchElementException; /** * Remove top element. top element is removed IllegalStateException if the stack is empty */ void pop() throws IllegalStateException; Seite 10 Datentyp in Java: Interface Diese Definition definiert das Äussere, das Verhalten von Stapeln.

11 Beispiel: eine Implementierung des Interfaces für selbst-definierte Stapel public class RecIntStack implements IntStack { private static interface StackImpl { private static class Empty implements StackImpl { private static class Node implements StackImpl { public Node(int value, StackImpl next) { this.value = value; this.next = next; int value; StackImpl next; private StackImpl stacktop = new Empty(); Implementierung einer Datenstruktur Datenabstraktion = Implementierung eines Datentyps public void push(int v) { stacktop = new Node(v, stacktop); public int top() throws NoSuchElementException { if (stacktop instanceof Empty) throw new NoSuchElementException(); return ((Node)stackTop).value; public void pop() throws IllegalStateException { if (stacktop instanceof Empty) throw new IllegalStateException(); stacktop = ((Node)stackTop).next; Seite 11 Datenabstraktion in Java: Klasse Diese Definition definiert eine Implementierung des Datentyps mit einer Datenstruktur, die den Charakter von Stapeln ans rekursiv definierte Menge ausnutzt. In der Implementierung werden weitere Typen verwendet, die lokal definiert werden.

12 Rekursive Strukturen die in leeren Elementen enden, werden klassisch mit dem nullzeiger realisiert. Hier eine entsprechende Variante des Stapels: public class LinkedIntStack implements IntStack { private static class Node { public Node(int value, Node next) { this.value = value; this.next = next; int value; Node next; statt private Node stacktop = null; private static interface StackImpl { private static class Empty implements StackImpl { private static class Node implements StackImpl { public Node(int value, StackImpl next) { this.value = value; this.next = next; int value; StackImpl next; private StackImpl stacktop = new Empty(); public void push(int v) { stacktop = new Node(v, stacktop); public int top() throws NoSuchElementException { if (stacktop == null) throw new NoSuchElementException(); return stacktop.value; public void pop() throws IllegalStateException { if (stacktop == null) throw new IllegalStateException(); stacktop = ((Node)stackTop).next; Seite 12

13 Die Verwendung des null-zeigers als legalem Wert in korrekten Programmen wird nicht mehr empfohlen! Jeder Zugriff null sollte immer Programm-Fehler bedeuten: Verwende Optional für Dinge die da sind oder nicht. public class LinkedIntStack implements IntStack { private static class Node { public Node(int value, Optional<Node> next) { this.value = value; this.next = next; statt int value; Optional<Node> next; private Optional<Node> stacktop = Optional.empty(); public void push(int v) { stacktop = Optional.of(new Node(v, stacktop)); public int top() throws NoSuchElementException { if (stacktop == null) throw new NoSuchElementException(); return stacktop.get().value; public void pop() throws IllegalStateException { if (stacktop == null) throw new IllegalStateException(); stacktop = stacktop.get().next; Seite 13 private static class Node { public Node(int value, Node next) { this.value = value; this.next = next; int value; Node next; private Node stacktop = null;

14 Natürlich können Stapel auch auf andere Art implementiert werden, z.b. mit Arrays: import java.util.arrays; import java.util.nosuchelementexception; public class ArrayIntStack implements IntStack { int[] elements = new int[32]; int actsize = 0; // number of elements in stack public void push(int v) { if (actsize == elements.length) { elements = Arrays.copyOf(elements, 2*actSize); elements[actsize++] = v; public int top() throws NoSuchElementException { if (actsize == 0) throw new NoSuchElementException(); return elements[actsize]; public void pop() throws IllegalStateException { if (actsize == 0) throw new IllegalStateException(); actsize--; Seite 14

15 Manchmal werden die Begriffe Datenstruktur und Datentyp nicht streng getrennt. Manches kann als Datenstruktur und als Datentyp angesehenen werden. interface Stack { Verhalten / Können definiert wie oben Das ist / kann ein Stack class RecStack implements Stack<T> { Ein RecStack ist ein Stack In seinem Innern werkeln Objekte vom Typ Stack. Sie bilden eine Datenstruktur die über die Variable stack zugreifbar ist. // Definition der Typen für die Datenstruktur interface Stack { class EmptyStack implements Stack { class NonEmptyStack implements Stack{... // Die Datenstruktur Stack stack = new EmptyStack(); // Implementierung der Interface-Methoden public void push(t x) throws IllegalStateException { public T pop() throws IllegalStateException { Seite 15 Stacks, Stacks und RecStacks sind Stacks und stack ist ein Stack, aber stack ist kein Stack und kein RecStack!

16 Kollektionen der Java-API Kollektionstypen in der Java-API Kollektionen der Java API Das Paket java.util enthält Schnittstellen und Klassen zum Umgang mit Kollektionen Collection Framework Zusammenhängendes System aus Klassen- und Interface-Definitionen in der Klassenbibliothek Sollte jeder Java-Entwickler gut kennen: Erhöht die Produktivität wesentlich Andere Sprachen bieten ähnliches Kollektionen / Kollektionstypen der Java-Klassenbibliothek gibt es in drei Varianten List Set Map Listen Mengen Abbildungen Das Collection-Framework ist sehr wichtiger Bestandteil der API Framework: Ein Rahmen in den man seine eigene Software einbettet. Streams Ab Java 8 gibt es funktionale Kollektionstypen: Streams als funktionaler Vorsatz vor Listen Seite 16

17 Kollektionen der Java-API: Übersicht Liste Listentyp Typ als Interface implementiert java.util.list<t> Listen-Implementierung Abstrakte Datentypen als Klassen implementiert java.util.arraylist<t> java.util.linkedlist<t>... 1) 2) 3) 4) 5) 6) A B C D K L <<interface>> List ArrayList LinkedList List: Konzept Einer Liste A B C D K L A B C D K L ArrayList LinkedList Seite 17

18 Kollektionen der Java-API: Übersicht <<interface>> Map Abbildung (Map) TreeMap Map-Typ Typ als Interface implementiert HashMap java.util.map<k,v> Map-Implementierung Abstrakte Datentypen als Klassen implementiert java.util.arraylist<t> java.util.linkedlist<t>... A B C D K L X Y Z U V W Map: Konzept L W K V A X C Z D U C Z K V A X B Y B Y D U TreeMap HashMap Seite 18 L W

19 Kollektionen der Java-API: Übersicht <<interface>> Set Menge (Set) TreeSet Set-Typ (Typdefinition als Interface implementiert) HashSet java.util.set<k,v> Map-Implementierung (Abstrakte Datentypen als Klassen implementiert) java.util.hashset<t> java.util.treeset<t>... C D F B A E C E A Set: Konzept einer Menge B D C D F TreeSet E A B HashSet Seite 19 F

20 Kollektionen der Java-API: Übersicht Klassen Übersicht siehe (und lese!) Daten-Strukturen Daten-Typen Seite 20

21 Datenmodellierung mit Kollektionen der Java-API Datenmodellierung Programmiersprachen unterstützen die Datenmodellierung in unterschiedlicher Weise und unterschiedlich (und unterschiedliche gut): Uralt-Sprachen Fortran, Algol, Lisp bieten Arrays (Fortran/Algol) oder Listen (Lisp) als einzige Datenstruktur Sprach-Veteranen C bieten Arrays und wenige andere einfache Datenstrukturen (Union / Struct) sowie den Zugriff auf Adressen (Zeiger / Pointer) zur Realisierung komplexer Datenstrukturen Sprachen für Laien / Skript-Sprachen - Perl, PHP, Scala, bieten Datenstrukturen (Listen, Abbildungen, Mengen) als Sprachbestandteil und bieten so gute Unterstützung für mathematisch-orientierte Modellierung Klassische professionelle Sprachen C++ unterstützen die Definitionen eigener Kollektionen gut (Objektorientierung) moderne professionelle Sprachen C#, Java, aktuelles C++ unterstützen die Definitionen eigener Kollektionen gut (Objektorientierung) bieten Datenstrukturen (Listen, Abbildungen, Mengen) als Bibliotheken (APIs) und bieten so gute Unterstützung für mathematisch-orientierte Modellierung Seite 21

22 Datenmodellierung mit Kollektionen der Java-API Datenmodellierung: Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Modellierung einer Tabelle Die Tabelle kann in unterschiedlicher Art modelliert / interpretiert werden, z.b. : als Relation oder als Abbildung Seite 22

23 Datenmodellierung mit Kollektionen der Java-API Datenmodellierung: Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Relationale Sicht Tabelle als Relation (Grundlage der aktuellen Datenbank-Technologie) table = { (Henrich, MNI, F 218, 2335), (Metz, MNI, F 117, 2329), (Platen, KMUB, C 704, 2533), (Renz, MNI, I 316, 2451), (Zink, KMUB, Q 4, 2574) Set<String[]> table.add(new table.add(new table.add(new table.add(new table.add(new table = new HashSet<>(); String[]{"Henrich", "MNI", "F String[]{"Metz", "MNI", "F String[]{"Platen", "KMUB","C String[]{"Renz", "MNI", "I String[]{"Zink", "KMUB","Q 218", 117", 704", 316", 4", "2335"); "2329"); "2533"); "2451"); "2574"); Seite 23 Relationen sind Mengen von Tupeln: Implementiert hier als Set von Arrays.

24 Datenmodellierung mit Kollektionen der Java-API Datenmodellierung: Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Abbildungs-Sicht 1 Tabelle als Abbildung Name ~> Tupel mit Info zum Namen table = { Henrich ~> (MNI, F 218, 2335), Metz ~> (MNI, F 117, 2329), Platen, ~> (KMUB, C 704, 2533), Renz, ~> (MNI, I 316, 2451), Zink, ~> (KMUB, Q 4, 2574) Map<String, String[]> table = new HashMap<>(); table.put("henrich", new String[]{"MNI", "F 218", table.put("metz", new String[]{"MNI", "F 117", table.put("platen", new String[]{"KMUB","C 704", table.put("renz", new String[]{"MNI", "I 316", table.put("zink", new String[]{"KMUB","Q 4", "2335"); "2329"); "2533"); "2451"); "2574"); Seite 24 Relationen sind Abbildungen von Schlüsselwerten auf Tupel. Implementiert als Map<String, String[]>

25 Datenmodellierung mit Kollektionen der Java-API Datenmodellierung: Beispiel Tabelle Tabelle: 2-dimensionale Anordnung von Informationen. Besteht aus Einzelinformationen die durch ihre Anordnung in Zeilen und Spalten in Beziehung gesetzt werden. Abbildungs-Sicht 2 Tabelle als Abbildung Name ~> ( Attribut ~> Attribut-Wert) table = { Henrich ~> { Fachbereich ~> MNI, Raum ~> F 218, Telefon ~> 2335, Metz ~> { Fachbereich ~> MNI, Raum ~> F 117, Telefon ~> 2329, Platen, ~> { Fachbereich ~> KMUB, Raum ~> C 704, Telefon ~> 2533, Renz, ~> { Fachbereich ~> MNI, Raum ~> I 316, Telefon ~> 2451, Zink, ~> { Fachbereich ~> KMUB, Raum ~> Q 4, Telefon ~> 2574 Relationen sind Abbildungen von Schlüsselwerten auf Abbildungen von Attributnamen auf Attributwerte. Map<String, Map<String, String>> table = new HashMap<>();... Seite 25

26 Datenmodellierung mit eigenen Klassen Datenmodellierung mit Klassen Nur für professionelle SW-Entwickler und solche die es werden wollen geeignet und empfohlen! public class Table { static int static int maxsize = 2; actsize = 0; static String[] name static String[] fb = new String[maxSize]; = new String[maxSize];... public static void put(string namep,...) { name[actsize] = namep;... actsize++; Seite 26

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

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

Java Einführung Collections

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

Mehr

13. Dynamische Datenstrukturen

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

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

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

3. Übungsbesprechung Programmkonstruktion

3. Übungsbesprechung Programmkonstruktion 3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at December 12, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK December 12, 2011 1 / 13 Rückblick und

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP 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

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. 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

Mehr

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

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

Mehr

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

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

Mehr

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

Programmierkurs Java

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

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare 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

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

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

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Datenstrukturen / Container in Java

Datenstrukturen / Container in Java Datenstrukturen / Container in Java Mathematik / Algebraischer Datentyp / Containerklassen Enum-Klassen Arrays (Felder) = elementare Container Algorithmen mit Arrays Prof. Dr. E. Ehses, 2014 1 Mathematik

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

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

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

Mehr

Programmieren 2 Übung Semesterwoche 2

Programmieren 2 Übung Semesterwoche 2 Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf

Mehr

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Programmieren 2 16 Java Collections und Generizität

Programmieren 2 16 Java Collections und Generizität Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Faulheit professionell: Fertige Datenbehälter

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

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

Mehr

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

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

Teil IV. Grundlegende Datenstrukturen

Teil IV. Grundlegende Datenstrukturen Teil IV Grundlegende Datenstrukturen Überblick 1 Abstrakte und konkrete Datentypen 2 Stacks 3 Listen 4 Warteschlangen 5 Iterator Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 4 1 Abstrakte

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

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

Mehr

2.3 Spezifikation von Abstrakten Datentypen

2.3 Spezifikation von Abstrakten Datentypen Abstrakte Datentypen (ADT) 2.3 Spezifikation von Abstrakten Datentypen Sichtbare Schnittstelle: Typbezeichner Signaturen der Operationen Spezifikation der Operationen Abstraktionsbarriere Implementierung

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung

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

Prof. Dr. Uwe Schmidt. 30. Januar 2017

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

Mehr

Grundlagen der Informatik 0

Grundlagen 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

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

Objektorientierte Implementierung

Objektorientierte Implementierung Objektorientierte Implementierung 10) Verfeinern von Assoziationen mit dem Java-2 Collection Framework Softwaretechnologie, Prof. Uwe Aßmann, Prof. Heinrich Hussmann 1 Objektorientierte Implementierung

Mehr

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

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

Mehr

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

Wo 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,

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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Konkatenation zweier Listen mit concat

Konkatenation zweier Listen mit concat Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

Mehr

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

Pakete Software Entwicklung 1

Pakete Software Entwicklung 1 Pakete Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Organisation von Klassen- und Interface-Deklaration Java-Programme bestehen aus Typdeklarationen, d.h. Klassen- und Interface-Deklarationen.

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 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

Mehr

Modularisierung in Java: Pakete Software Entwicklung 1

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

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere 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

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

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

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

Programmieren 2 Java Überblick

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

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

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

Mehr

Informatik II Aufgabenblatt 6

Informatik II Aufgabenblatt 6 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 6 Gruppenübung Aufgabe 1 CSV Dateien sind Textdateien die Zeilen mit Komma-separierten Werten bestehen (CSV = Comma

Mehr

11. Komponenten Grundlagen der Programmierung 1 (Java)

11. Komponenten Grundlagen der Programmierung 1 (Java) 11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

OCP Java SE 8. Collections

OCP 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

Mehr

Interface. So werden Interfaces gemacht

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

Mehr

Tutoraufgabe 1 (Collections):

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

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

Software Entwicklung 1

Software 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

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

ALP II Dynamische Datenmengen

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

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren 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

Mehr

7.0 Arbeiten mit Objekten und Klassen

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

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: Typprüfung (Compiler / Laufzeit) In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: 1) Der Compiler prüft

Mehr

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

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

Mehr

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

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 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

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

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

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

Mehr

Info B VL 11: Innere Klassen/Collections

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

Mehr

Selbststudium OOP7 & ALG2 Auftrag

Selbststudium OOP7 & ALG2 Auftrag Selbststudium OOP7 & ALG2 Auftrag Kapitel 5.6 1. zu bearbeitende Aufgaben: 5.24 bis 5.30 5.24: Return Method Set entryset() V get(object key) Set keyset() V put(k key, V value) void

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Kapitel 12: Induktive

Kapitel 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

Mehr

Institut für Informatik

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

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

Mehr

Einführung in die Programmierung mit Java

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

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

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