Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit."—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Ausblick 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

2 PKJ 2005/2 Stefan Dissmann Erkenntnisse Prinzipien bei der Gestaltung von abgeschlossenen Einheiten: Kapselung Jede Einheit hat Grenzen. Lokalität Funktionen und Daten der Einheit sind zusammengefasst. konzeptionelle Vollständigkeit Jede Einheit kann ihre Aufgaben erledigen. Geheimhaltung von Interna Jede Einheit verbirgt Daten und Handlungsumsetzung. Autonomie Jede Einheit entscheidet selbstständig.

3 PKJ 2005/3 Stefan Dissmann Klassen und Objekte Objekt ist abgeschlossene Einheit im JAVA-Programm Klasse ist Konstruktionsbeschreibung für Objekte Folgerungen: Klasse wird benötigt, um Objekt zu erzeugen. Aus einer Klasse können viele Objekte erzeugt werden.

4 PKJ 2005/4 Stefan Dissmann Beispiel – Klasse Studierende Folgende Daten von jedem Studierenden sollen verwaltet werden: VornameText NameText MatrikelnummerZahl StudiengangText SemesterzahlZahl

5 PKJ 2005/5 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; }

6 PKJ 2005/6 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; } neu GeheimnisprinzipAttribut

7 PKJ 2005/7 Stefan Dissmann Attribut private String name, vorname, studiengang; Attribut ist Variable auf Ebene einer Klasse steht in der ganzen Klasse zur Verfügung wird ähnlich vereinbart wie eine Variable in Methode hat eine Angabe zu Zugriffsrecht (hier: private ) private verbirgt Attribut innerhalb eines Objektes, so dass kein Zugriff von Objekten anderer Klassen aus möglich ist. Objekte der Klasse Studierende sind völlig abgeschottet!

8 PKJ 2005/8 Stefan Dissmann Methode Lösung: Hinzufügen von Methoden, die auf Attribute zugreifen. Methoden müssen von außen zugreifbar sein. Analogie: Tasten des Fernsehers oder Videorekorders

9 PKJ 2005/9 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; public void setzeName(String n) { name = n; } public String gibName() { return name; }

10 PKJ 2005/10 Stefan Dissmann Klasse public void setzeName(String n) { name = n; } public String gibName() { return name; } Methoden nutzen Attribut name lesend und schreibend. Vereinbarung der Methoden ohne static. Implementierung der Methoden wie bekannt.

11 PKJ 2005/11 Stefan Dissmann Nutzung von Klassen Offene Fragen: Wie werden Objekte erzeugt? Wie werden Objekte genutzt? Wie werden Methoden angesprochen?

12 PKJ 2005/12 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; } Vereinbart nur eine Referenz, die auf Objekte der Klasse Studierende verweisen kann. Dadurch ist noch kein Objekt erzeugt.

13 PKJ 2005/13 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); } Es wird ein neues Objekt der Klasse Studierende erzeugt. Die Referenz stud verweist auf diese Objekt. () ist notwendig!

14 PKJ 2005/14 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); } setzeName des Objekts, auf das stud verweist, wird aufgerufen! " Musterfrau " wird als Parameter übergeben. Folge: Das Attribut name des Objekts wird auf "Musterfrau" gesetzt.

15 PKJ 2005/15 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); } Zugriff über.-Notation x.y heißt (in JAVA) immer: Nimm das Objekt, auf das x verweist, und von diesem Objekt (die Methode) y.

16 PKJ 2005/16 Stefan Dissmann Nutzung von Klassen public class TestStud { public static void main(String[] args) { Studierende stud; stud = new Studierende(); stud.setzeName("Musterfrau"); System.out.println("Name: "+stud.gibName()); } gibName des Objekts, auf das stud verweist, wird aufgerufen! gibName liefert den Wert des Attributs name !

17 PKJ 2005/17 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName();

18 PKJ 2005/18 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2

19 PKJ 2005/19 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:

20 PKJ 2005/20 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:"Schmidt"

21 PKJ 2005/21 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:"Schmidt"

22 PKJ 2005/22 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

23 PKJ 2005/23 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

24 PKJ 2005/24 Stefan Dissmann Referenzen auf Klassen Studierende stud1, stud2; stud1 = new Studierende(); stud1.setzeName("Schmidt"); stud2 = stud1; stud2.setzeName("Müller"); stud1.zeigeName(); stud2.zeigeName(); stud1stud2 Studierende name:Müller"

25 PKJ 2005/25 Stefan Dissmann Attribute – Zuweisung durch expliziten Konstruktor public Studierende (String n, String vn, String sg) { 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

26 PKJ 2005/26 Stefan Dissmann Lebensdauer von Objekten Objekt wird durch Aufruf eines Konstruktors erzeugt! Wann und wie wird ein Objekt vernichtet? Im Prinzip gar nicht; Objekte existieren immer weiter!


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit."

Ähnliche Präsentationen


Google-Anzeigen