pkj 2005/1 stefan dissmann zusammenfassung bisher bekannt: einfache typen (z.b. int, char, boolean)...
Post on 05-Apr-2015
104 Views
Preview:
TRANSCRIPT
PKJ 2005/1Stefan Dissmann
Zusammenfassung
Bisher bekannt:
• Einfache Typen (z.B. int, char, boolean)
• Zusammengesetzte Typen (Felder, auch String)
• Operatoren für diese Typen
• Anweisungen
• Bedingte Anweisungen: if und if-else
• Schleifen: while und for
• Methoden (auch rekursiv)
PKJ 2005/2Stefan Dissmann
Zusammenfassung
Mit diesen Hilfsmitteln möglich:
• Lösen von algorithmischen Fragestellungen• Bearbeitung von Problemen mit
fester Anzahlsequentiell angeordneter Elementeeines Typs
Nicht möglich:
z.B. komfortabler Umgang mit den Daten aller
Studierendeneiner Universität
PKJ 2005/3Stefan 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
PKJ 2005/4Stefan Dissmann
Klassen und Objekte
In der „physikalischen“ Umwelt:
abgeschlossene Einheiten mit vorgegebener
Funktionalität,zum Beispiel:
– Kaffeemühle
– Taschenrechner
– Handy
– Videorekorder
Auffällig: technische Details sind uninteressant
PKJ 2005/5Stefan Dissmann
Formalisierung
Kaffeemühle
PKJ 2005/6Stefan Dissmann
Kaffeemühle: Funktionen
Formalisierung
Kaffeebohneneinfüllen
Kaffeepulverentnehmen
kurbeln = mahlen
PKJ 2005/7Stefan Dissmann
Kaffeemühle: Zustand
Formalisierung
Vorrat Bohnen
Vorrat Pulver
PKJ 2005/8Stefan Dissmann
Charakterisierung der Kaffeemühle
Die Kaffeemühle unterstützt bestimmte Funktionen zur Nutzung:
• Füllen (mit Kaffeebohnen)• Mahlen (manipuliert den Inhalt)• Entnehmen (von Kaffeepulver)
• Inspektion des Bohnenvorrates• Inspektion des Pulvervorrates
Formalisierung
PKJ 2005/9Stefan Dissmann
Formalisierung
Charakterisierung der Kaffeemühle (Fortsetzung)
Die Kaffeemühle besitzt zustandsbestimmende, interne Werte (= Attribute):
• Vorrat an Kaffeebohnen• Vorrat an Kaffeepulver
PKJ 2005/10Stefan Dissmann
Charakterisierung der Kaffeemühle (Fortsetzung)
Zwischen der Ausführung der Funktionenund den Attributen (= interner Zustand) besteht Zusammenhang:
• Füllen ist nur möglich, wenn der Vorrat an Kaffeebohnen noch nicht voll ist.
• Mahlen erzeugt nur dann Kaffeepulver, wenn ein Vorrat von Kaffeebohnen noch vorhanden ist.
• Entnehmen ist nur möglich,wenn zuvor gemahlen wurde undnoch nicht alles Pulver entnommen wurde.
Formalisierung
PKJ 2005/11Stefan Dissmann
Formalisierung
Charakterisierung der Kaffeemühle (Fortsetzung)
aber: Die technische Realisierungder internen Abläufe bleibt unbekannt!
• Wie funktioniert das Mahlen?• Wie kommen Bohnen zum Mahlwerk?
und: Das Wissen um die technische Realisierung ist für die Benutzung der Kaffeemühle unerheblich!
PKJ 2005/12Stefan Dissmann
Weitere Diskussion- Taschenrechner
Taschenrechner ist auch eine abgeschlossene Einheit!
• Funktionen:• Ziffern eingeben• Ziffern anzeigen• Operator wählen• Ziffern eingeben• Ziffern anzeigen • Auswertung anstoßen und
Ergebnis anzeigen
1 2 3
4 5 6
7 8 9
0
+
–
x
/C =
PKJ 2005/13Stefan Dissmann
Taschenrechner
präzisere Beschreibung der internen Abläufe:• Ziffer eingeben und
anzeigen und dabei andere Ziffern verschieben)
• Operator wählen und merken
• Wert eines Operanden aus Ziffernfolge bestimmen und merken
• Auswertung anstoßen und Ergebnis berechnen als Anwenden des Operators auf die beiden Operanden
• Ergebniswert in Ziffernfolge umwandeln und anzeigen
PKJ 2005/14Stefan Dissmann
Taschenrechner
Taschenrechner• besitzt Gedächtnis, in dem mindestens
2 Zahlenwerte und 1 Operator abgelegt werden,• manipuliert Gedächtnis nach Druck von Tasten,• nutzt Werte aus Gedächtnis für Berechnungen,• bestimmt Ergebnis aus Gedächtnis,• löscht Gedächtnis.
oder abstrakter:• besitzt definierte extern verwendbare Funktionen
(= Eingabe über Tasten),• besitzt einen durch Attribute gegebenen internen Zustand
(= Gedächtnis),• verwendet nur intern bekannte Operationen
(= Ziffernfolge zu Zahl)
PKJ 2005/15Stefan 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.
PKJ 2005/16Stefan Dissmann
Beispiel: BibliothekAnwendung der Prinzipien
Leihbibliothek auf Vertrauensbasis
BücherbestandZugang
Buchausgabe und -rückgabe durch Selbstbedienung
PKJ 2005/17Stefan Dissmann
Beispiel: Bibliothek
Leihbibliothek mit Kontrolle
BücherbestandZugang
- Buchausgabe und -rückgabe werden überwacht
- Organisation des Buchbestandes ist unsicher
Aufsicht
PKJ 2005/18Stefan Dissmann
Beispiel: Bibliothek
Leihbibliothek mit Service
BücherbestandZugang
- Kontrolle der Organisation des Bestandes
- universelle Aufsicht muss leistungsfähig sein
Aufsicht
PKJ 2005/19Stefan Dissmann
Beispiel: Bibliothek
Leihbibliothek mit spezialisiertem Service
Bücherbestand
Zugang
- spezialisierte Bibliothekare erfüllen einfache Teilaufgaben
- Organisation des Buchbestandes ist ohne Bedeutung
PKJ 2005/20Stefan 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.
PKJ 2005/21Stefan Dissmann
Beispiel – Klasse Studierende
Folgende Daten von jedem Studierenden sollen verwaltet werden:
• Vorname• Name• Geburtsdatum• Matrikelnummer• Studiengang• Studienbeginn• Semesterzahl
PKJ 2005/22Stefan Dissmann
Beispiel – Klasse Studierende
Folgende Daten von jedem Studierenden sollen verwaltet werden:
• Vorname Text• Name Text• Geburtsdatum Datum• Matrikelnummer Zahl• Studiengang Text• Studienbeginn Datum• Semesterzahl Zahl
PKJ 2005/23Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private ??? geburt, beginn;
}
PKJ 2005/24Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private ??? geburt, beginn;
}
bekannt
PKJ 2005/25Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private ??? geburt, beginn;
}
neu
PKJ 2005/26Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private ??? geburt, beginn;
}
neu
Geheimnisprinzip Attribut
PKJ 2005/27Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private ??? geburt, beginn;
}
unklar
PKJ 2005/28Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private Datum geburt, beginn;
}
public class Datum {
private int tag, monat, jahr;
}
PKJ 2005/29Stefan 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!
PKJ 2005/30Stefan Dissmann
Methode
Lösung:
• Hinzufügen von Methoden, die auf Attribute zugreifen.• Methoden müssen von außen zugreifbar sein.
Analogie:Tasten des Taschenrechners oder Videorekorders
PKJ 2005/31Stefan Dissmann
Klasse
public class Studierende {
private String name, vorname, studiengang;
private int matNr, semester;
private Datum geburt, beginn;
public void setzeName(String n) {
name = n;
}
public String gibName() {
return name;
}
}
PKJ 2005/32Stefan 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.
PKJ 2005/33Stefan Dissmann
Nutzung von Klassen
Fragen:
Wie werden Klassen genutzt?Wie werden Objekte erzeugt?Wie werden Objekte genutzt?Wie werden Methoden angesprochen?
PKJ 2005/34Stefan 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.
PKJ 2005/35Stefan 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.
PKJ 2005/36Stefan 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!
PKJ 2005/37Stefan 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.
PKJ 2005/38Stefan 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.
PKJ 2005/39Stefan 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!
top related