Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf."—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf Klassen

2 PKJ 2005/2 Stefan Dissmann Klasse Studierende public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private Datum geburt, beginn; public Studierende (String n) { name = n; } public String gibName() { return name; } public void zeigeName() { System.out.println(name); }

3 PKJ 2005/3 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1stud2 Studierende name:Müller" Mehrere Referenzen können auf ein Objekt verweisen Referenzen können während der Ausführung gesetzt werden

4 PKJ 2005/4 Stefan Dissmann Konstruktoren public Studierende (String n) { name = n; } Expliziter Konstruktor ist spezielle Methode: Name = Name der Klasse keine Angabe eines Rückgabetyps, kein return zurückgegeben wird immer ein Objekt der Klasse Aufruf mit new Rumpf wird nach Initialisierung ausgeführt Rumpf kann Programmkonstrukte enthalten

5 PKJ 2005/5 Stefan Dissmann Konstruktoren, Methoden In einer Klasse möglich: mehrere Konstruktoren mit unterschiedlichen Parameterlisten mehrere Methoden mit gleichem Namen und unterschiedlichen Parameterlisten

6 PKJ 2005/6 Stefan Dissmann Rückblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit nicht-sequentiellen Strukturen Umgang mit Strukturen aus heterogenen Typen In JAVA gelöst durch Klassen und Objekte

7 PKJ 2005/7 Stefan Dissmann Rückblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit nicht-sequentiellen Strukturen Umgang mit Strukturen aus heterogenen Typen In JAVA gelöst durch Klassen und Objekte

8 PKJ 2005/8 Stefan Dissmann Rückblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit nicht-sequentiellen Strukturen Umgang mit Strukturen aus heterogenen Typen In JAVA gelöst durch Klassen und Objekte

9 PKJ 2005/9 Stefan Dissmann Rückblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit nicht-sequentiellen Strukturen Umgang mit Strukturen aus heterogenen Typen In JAVA gelöst durch Klassen und Objekte

10 PKJ 2005/10 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl.

11 PKJ 2005/11 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl. Lösung : Jedes Element kennt nur genau seinen Nachfolger verkettete Datenstruktur

12 PKJ 2005/12 Stefan Dissmann Idee der Verkettung 17 1.für jedes Element ein Objekt anlegen

13 PKJ 2005/13 Stefan Dissmann Idee der Verkettung für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt

14 PKJ 2005/14 Stefan Dissmann Idee der Verkettung für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt 3.und so fort …

15 PKJ 2005/15 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln

16 PKJ 2005/16 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { }

17 PKJ 2005/17 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; }

18 PKJ 2005/18 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; private IntElement nachfolger; }

19 PKJ 2005/19 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen:

20 PKJ 2005/20 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

21 PKJ 2005/21 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

22 PKJ 2005/22 Stefan Dissmann Technische Umsetzung: Element Und weitere Methoden: public class IntElement { … public IntElement gibNachfolger() { return nachfolger; } public int gibWert() { return wert; }

23 PKJ 2005/23 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln

24 PKJ 2005/24 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln public class IntListe { public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

25 PKJ 2005/25 Stefan Dissmann Technische Umsetzung: Liste … und Attribute ergänzen: public class IntListe { private IntElement anfang, ende; public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

26 PKJ 2005/26 Stefan Dissmann Implementierung: Liste … und implementieren: public IntListe() { anfang = ende = null; }

27 PKJ 2005/27 Stefan Dissmann Implementierung: Liste … und implementieren: public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; }

28 PKJ 2005/28 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } anfang ende

29 PKJ 2005/29 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu anfang ende

30 PKJ 2005/30 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu null anfang ende

31 PKJ 2005/31 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } null anfang ende wert nachfolger neu

32 PKJ 2005/32 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

33 PKJ 2005/33 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

34 PKJ 2005/34 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

35 PKJ 2005/35 Stefan Dissmann Implementierung: Liste public int gibErstes() { if (anfang != null) return anfang.gibWert(); else return 0; }

36 PKJ 2005/36 Stefan Dissmann Implementierung: Liste public boolean leer() { return anfang == null; }

37 PKJ 2005/37 Stefan Dissmann Implementierung: Liste public void löscheErstes() { if (anfang != ende) { anfang = anfang.gibNachfolger(); } else { anfang = ende = null; }

38 PKJ 2005/38 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); }

39 PKJ 2005/39 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); } Anmerkung: Bei der Benutzung von IntListe wird IntElement nicht benötigt!


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf."

Ähnliche Präsentationen


Google-Anzeigen