Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Beate Anspach Geändert vor über 11 Jahren
1
PKJ 2005/1 Stefan 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)
2
PKJ 2005/2 Stefan Dissmann Zusammenfassung Mit diesen Hilfsmitteln möglich: Lösen von algorithmischen Fragestellungen Bearbeitung von Problemen mit fester Anzahl sequentiell angeordneter Elemente eines Typs Nicht möglich: z.B. komfortabler Umgang mit den Daten aller Studierenden einer Universität
3
PKJ 2005/3 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
4
PKJ 2005/4 Stefan 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
5
PKJ 2005/5 Stefan Dissmann Formalisierung Kaffeemühle
6
PKJ 2005/6 Stefan Dissmann Kaffeemühle: Funktionen Formalisierung Kaffeebohnen einfüllen Kaffeepulver entnehmen kurbeln = mahlen
7
PKJ 2005/7 Stefan Dissmann Kaffeemühle: Zustand Formalisierung Vorrat Bohnen Vorrat Pulver
8
PKJ 2005/8 Stefan 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
9
PKJ 2005/9 Stefan Dissmann Formalisierung Charakterisierung der Kaffeemühle (Fortsetzung) Die Kaffeemühle besitzt zustandsbestimmende, interne Werte (= Attribute): Vorrat an Kaffeebohnen Vorrat an Kaffeepulver
10
PKJ 2005/10 Stefan Dissmann Charakterisierung der Kaffeemühle (Fortsetzung) Zwischen der Ausführung der Funktionen und 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 und noch nicht alles Pulver entnommen wurde. Formalisierung
11
PKJ 2005/11 Stefan Dissmann Formalisierung Charakterisie r ung der Kaffeemühle (Fortsetzung) aber:Die technische Realisierung der 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!
12
PKJ 2005/12 Stefan 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
13
PKJ 2005/13 Stefan 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
14
PKJ 2005/14 Stefan Dissmann 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)
15
PKJ 2005/15 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.
16
PKJ 2005/16 Stefan Dissmann Beispiel: Bibliothek Anwendung der Prinzipien Leihbibliothek auf Vertrauensbasis Bücherbestand Zugang Buchausgabe und -rückgabe durch Selbstbedienung
17
PKJ 2005/17 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit Kontrolle Bücherbestand Zugang - Buchausgabe und -rückgabe werden überwacht - Organisation des Buchbestandes ist unsicher Aufsicht
18
PKJ 2005/18 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit Service Bücherbestand Zugang - Kontrolle der Organisation des Bestandes - universelle Aufsicht muss leistungsfähig sein Aufsicht
19
PKJ 2005/19 Stefan Dissmann Beispiel: Bibliothek Leihbibliothek mit spezialisiertem Service Bücherbestand Zugang - spezialisierte Bibliothekare erfüllen einfache Teilaufgaben - Organisation des Buchbestandes ist ohne Bedeutung
20
PKJ 2005/20 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.
21
PKJ 2005/21 Stefan Dissmann Beispiel – Klasse Studierende Folgende Daten von jedem Studierenden sollen verwaltet werden: Vorname Name Geburtsdatum Matrikelnummer Studiengang Studienbeginn Semesterzahl
22
PKJ 2005/22 Stefan Dissmann Beispiel – Klasse Studierende Folgende Daten von jedem Studierenden sollen verwaltet werden: VornameText NameText GeburtsdatumDatum MatrikelnummerZahl StudiengangText StudienbeginnDatum SemesterzahlZahl
23
PKJ 2005/23 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; }
24
PKJ 2005/24 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } bekannt
25
PKJ 2005/25 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } neu
26
PKJ 2005/26 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } neu GeheimnisprinzipAttribut
27
PKJ 2005/27 Stefan Dissmann Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private ??? geburt, beginn; } unklar
28
PKJ 2005/28 Stefan 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; }
29
PKJ 2005/29 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!
30
PKJ 2005/30 Stefan 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
31
PKJ 2005/31 Stefan 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; }
32
PKJ 2005/32 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.
33
PKJ 2005/33 Stefan Dissmann Nutzung von Klassen Fragen: Wie werden Klassen genutzt? Wie werden Objekte erzeugt? Wie werden Objekte genutzt? Wie werden Methoden angesprochen?
34
PKJ 2005/34 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.
35
PKJ 2005/35 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.
36
PKJ 2005/36 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!
37
PKJ 2005/37 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.
38
PKJ 2005/38 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.
39
PKJ 2005/39 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 !
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.