![Page 1: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/1.jpg)
PKJ 2005/1Stefan Dissmann
Rückblick auf 2005
Was zuletzt in 2005 vorgestellt wurde:
• Klassen mit • Attributen,• Methoden und• Konstruktoren
• Referenzen auf Klassen
![Page 2: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/2.jpg)
PKJ 2005/2Stefan 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);}
}
![Page 3: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/3.jpg)
PKJ 2005/3Stefan Dissmann
Referenzen auf Klassen
Studierende stud1, stud2;
stud1 = new Studierende();
stud1.setzeName("Schmidt");
stud2 = stud1;
stud2.setzeName("Müller");
stud1 stud2
Studierende
name:„Müller"
Mehrere Referenzen können auf ein Objekt verweisen
Referenzen können während der Ausführung gesetzt werden
![Page 4: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/4.jpg)
PKJ 2005/4Stefan 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
![Page 5: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/5.jpg)
PKJ 2005/5Stefan Dissmann
Konstruktoren, Methoden
In einer Klasse möglich:
• mehrere Konstruktoren mitunterschiedlichen Parameterlisten
• mehrere Methoden mitgleichem Namen und unterschiedlichen Parameterlisten
![Page 6: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/6.jpg)
PKJ 2005/6Stefan Dissmann
Rückblick - 7.12.2005
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
![Page 7: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/7.jpg)
PKJ 2005/7Stefan Dissmann
Rückblick - 7.12.2005
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
![Page 8: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/8.jpg)
PKJ 2005/8Stefan Dissmann
Rückblick - 7.12.2005
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
![Page 9: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/9.jpg)
PKJ 2005/9Stefan Dissmann
Rückblick - 7.12.2005
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
![Page 10: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/10.jpg)
PKJ 2005/10Stefan 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.
![Page 11: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/11.jpg)
PKJ 2005/11Stefan 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
![Page 12: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/12.jpg)
PKJ 2005/12Stefan Dissmann
Idee der Verkettung
17
1. für jedes Element ein Objekt anlegen
![Page 13: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/13.jpg)
PKJ 2005/13Stefan Dissmann
Idee der Verkettung
17 9
1. für jedes Element ein Objekt anlegen
2. Objekt kennt weiteres Objekt
![Page 14: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/14.jpg)
PKJ 2005/14Stefan Dissmann
Idee der Verkettung
17 9 33
1. für jedes Element ein Objekt anlegen
2. Objekt kennt weiteres Objekt
3. und so fort …
![Page 15: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/15.jpg)
PKJ 2005/15Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
![Page 16: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/16.jpg)
PKJ 2005/16Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
}
![Page 17: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/17.jpg)
PKJ 2005/17Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
private int wert;
}
![Page 18: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/18.jpg)
PKJ 2005/18Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
private int wert;
private IntElement nachfolger;
}
![Page 19: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/19.jpg)
PKJ 2005/19Stefan Dissmann
Technische Umsetzung: Element
Und Konstruktor und Methoden ergänzen:
![Page 20: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/20.jpg)
PKJ 2005/20Stefan 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;
}
}
![Page 21: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/21.jpg)
PKJ 2005/21Stefan 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;
}
}
![Page 22: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/22.jpg)
PKJ 2005/22Stefan Dissmann
Technische Umsetzung: Element
Und weitere Methoden:
public class IntElement {
…
public IntElement gibNachfolger() {
return nachfolger;
}
public int gibWert() {
return wert;
}
}
![Page 23: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/23.jpg)
PKJ 2005/23Stefan Dissmann
Technische Umsetzung: Liste
2. Problem:Klasse für Liste von ganzen Zahlen entwickeln
![Page 24: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/24.jpg)
PKJ 2005/24Stefan 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() {…};
}
![Page 25: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/25.jpg)
PKJ 2005/25Stefan 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() {…};
}
![Page 26: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/26.jpg)
PKJ 2005/26Stefan Dissmann
Implementierung: Liste
… und implementieren:
public IntListe() {
anfang = ende = null;
}
![Page 27: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/27.jpg)
PKJ 2005/27Stefan 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;
}
}
![Page 28: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/28.jpg)
PKJ 2005/28Stefan 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
![Page 29: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/29.jpg)
PKJ 2005/29Stefan 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
![Page 30: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/30.jpg)
PKJ 2005/30Stefan 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
![Page 31: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/31.jpg)
PKJ 2005/31Stefan 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
![Page 32: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/32.jpg)
PKJ 2005/32Stefan 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
…
![Page 33: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/33.jpg)
PKJ 2005/33Stefan 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
…
![Page 34: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/34.jpg)
PKJ 2005/34Stefan 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
…
![Page 35: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/35.jpg)
PKJ 2005/35Stefan Dissmann
Implementierung: Liste
public int gibErstes() {
if (anfang != null)
return anfang.gibWert();
else
return 0;
}
![Page 36: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/36.jpg)
PKJ 2005/36Stefan Dissmann
Implementierung: Liste
public boolean leer() {
return anfang == null;
}
![Page 37: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/37.jpg)
PKJ 2005/37Stefan Dissmann
Implementierung: Liste
public void löscheErstes() {
if (anfang != ende) {
anfang = anfang.gibNachfolger();
} else {
anfang = ende = null;
}
}
![Page 38: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/38.jpg)
PKJ 2005/38Stefan Dissmann
Anwendung der Liste
IntListe 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();
}
![Page 39: PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf](https://reader034.vdocuments.site/reader034/viewer/2022051819/55204d6649795902118bbc70/html5/thumbnails/39.jpg)
PKJ 2005/39Stefan Dissmann
Anwendung der Liste
IntListe 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!