PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Zusammenfassung der Vorwoche
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Ausnahmen HS Merseburg (FH) WS 06/07.
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Anweisungen und Datentypen
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Rekursion mit Listen: Quicksort
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Aufruf einer Methode eines Objektes vom Typ „Bruch“
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Java Programme nur ein bisschen objektorientiert.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Zwei Denkansätze zur Klasse Schlange
Cäsar-Verschlüsselung
Cäsar-Verschlüsselung
Implementieren von Klassen
 Präsentation transkript:

PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden, Aufträgen, Messwerten usw. aber: jeder Typ benötigt eine neue Implementierung

PRJ 2007/2 Stefan Dissmann Motivation Bekannte Lösung: Liste mit Elementen, die Referenzen auf Object beinhalten Probleme: nicht typsicher, d.h. es können Kunden und Aufträge gemischt werden Methoden liefern Referenzen auf Object, die per Type-Cast zugewiesen werden müssen

PRJ 2007/3 Stefan Dissmann Generische/Parametrisierte Klassen Bessere Lösung: Klassen, die Typ-Parameter besitzen. Bisher: Parameter übergeben Werte! Jetzt: Spezielle Parameter übergeben Klassen-Namen!

PRJ 2007/4 Stefan Dissmann Rückblick public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) {wert = w; nachfolger = null;} public void verkette(IntElement n) {nachfolger = n;} public IntElement gibNachfolger() {return nachfolger;} public int gibWert() {return wert;} }

PRJ 2007/5 Stefan Dissmann Rückblick public class IntListe { private IntElement anfang, ende; public IntListe() { anfang = ende = null; } public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) {anfang = ende = neu; } else {ende.verkette(neu); ende = neu; } } public int gibErstes() { if (anfang != null) return anfang.gibWert(); else return 0; } public void löscheErstes() { if (anfang != ende) { anfang = anfang.gibNachfolger(); } else { anfang = ende = null;} } public boolean leer() {return anfang == null;} }

PRJ 2007/6 Stefan Dissmann Beispiel: Generisches Element public class Element { private T wert; private Element nachfolger; public Element(T w){wert = w; nachfolger = null;} public void verkette(Element n){nachfolger = n;} public Element gibNachfolger(){return nachfolger;} public T gibWert() { return wert; } }

PRJ 2007/7 Stefan Dissmann Beispiel: Generische Liste public class Liste { private Element anfang, ende; public Liste() { anfang = ende = null; } public void fügeAn(T w) { Element neu = new Element (w); if (anfang == null) {anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } } public T gibErstes() { if (anfang != null) return anfang.gibWert(); else return null; } … }

PRJ 2007/8 Stefan Dissmann Beispiel: Anwendung public class TestVonListe { public static void main(String args[]) { Liste zahlen = new Liste (); zahlen.fügeAn( new Integer(19) ); zahlen.fügeAn( new Integer(3) ); zahlen.fügeAn( new Integer(28) ); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); }

PRJ 2007/9 Stefan Dissmann Beispiel: Anwendung Die folgende Vereinbarung führt zu der gewünscht Liste, die ganze Zahlen verarbeiten kann: Liste zahlen = new Liste (); Fehlt jedoch das vordere : Liste zahlen = new Liste (); so ist dieses gleichbedeutend mit: Liste zahlen = new Liste (); Diese Initialisierung ist zulässig, aber zahlen präsentiert sich nun nach außen als Liste und nicht als Liste.