Top Banner
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
26

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

Apr 05, 2015

Download

Documents

Lilo Zerbst
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 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.

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

Page 2: 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/2Stefan 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.

Page 3: 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/3Stefan Dissmann

Klassen und Objekte

Objekt ist abgeschlossene Einheit im JAVA-Programm

Klasse istKonstruktionsbeschreibung für Objekte

Folgerungen:• Klasse wird benötigt, um Objekt zu erzeugen.• Aus einer Klasse können viele Objekte erzeugt werden.

Page 4: 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/4Stefan Dissmann

Beispiel – Klasse Studierende

Folgende Daten von jedem Studierenden sollen verwaltet werden:

• Vorname Text• Name Text• Matrikelnummer Zahl• Studiengang Text• Semesterzahl Zahl

Page 5: 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/5Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

}

Page 6: 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/6Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

}

neu

Geheimnisprinzip Attribut

Page 7: 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/7Stefan 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!

Page 8: 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/8Stefan 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

Page 9: 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/9Stefan 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;

}

}

Page 10: 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/10Stefan 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.

Page 11: 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/11Stefan Dissmann

Nutzung von Klassen

Offene Fragen:

Wie werden Objekte erzeugt?Wie werden Objekte genutzt?Wie werden Methoden angesprochen?

Page 12: 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/12Stefan 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.

Page 13: 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/13Stefan 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!

Page 14: 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/14Stefan 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.

Page 15: 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/15Stefan 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.

Page 16: 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/16Stefan 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!

Page 17: 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/17Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

Page 18: 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/18Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Page 19: 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/19Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:

Page 20: 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/20Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:"Schmidt"

Page 21: 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/21Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:"Schmidt"

Page 22: 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/22Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:„Müller"

Page 23: 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/23Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:„Müller"

Page 24: 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/24Stefan Dissmann

Referenzen auf Klassen

Studierende stud1, stud2;

stud1 = new Studierende();

stud1.setzeName("Schmidt");

stud2 = stud1;

stud2.setzeName("Müller");

stud1.zeigeName();

stud2.zeigeName();

stud1 stud2

Studierende

name:„Müller"

Page 25: 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/25Stefan 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

Page 26: 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/26Stefan 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!