250 likes | 533 Views
Objektorientiertes Programmieren . Autor : Wolfgang Zimmer. Was ist eine Klasse?. Ein Lexikon dient i.a. zur Erläuterung von Begriffen: Stichwort Katze . Lexikoneintrag:. Eine Katze ist ein Raubtier mit - starken Reißzähnen
E N D
Objektorientiertes Programmieren Autor : Wolfgang Zimmer
Was ist eine Klasse? • Ein Lexikon dient i.a. zur Erläuterung von Begriffen: • Stichwort Katze
Lexikoneintrag: Eine Katze ist ein Raubtier mit • - starken Reißzähnen - scharfen Krallen, die zum Fangen von Mäusen dienen - dem Mut sich auch an Vögel heranzuwagen - einer Aversion gegen Hunde - einem guten Klettervermögen - usw. ..
Damit haben wir bereits eine „einigermaßen“ klare Vorstellung von einer Katze. • Wir können jetzt drei Fragen beantworten :
Was ist eine Katze? • Was hat eine Katze? • Was macht eine Katze?
Was ist eine Katze ? Ein Raubtier • In Java: eine (Unter-)Klasse der (Super-) Klasse Raubtier
Was hat eine Katze ? • Starke Reißzähne • Scharfe Krallen • Mut • Aversion gegen Hunde • Klettervermögen • Alter .................... In Java: Attribute
Was macht eine Katze ? • Sie fängt Mäuse • Sie wagt sich an Vögel heran • Sie kämpft mit Hunden • Sie klettert auf Bäume • Sie altert .................. In Java: Methoden
In Java bringen wir die Antworten auf die drei Fragen • Was ist.... • Was hat..... • Was macht...... • in einer Klasse unter
Eine Klasse ist also ein abstrakter Bauplan • für konstruierbare reale Objekte
In beschreibenden Texten geht der Überblick über Details schnell verloren. • Daher stellen wir die Antworten auf die drei Fragen zunächst in einem Diagramm zusammen. • Für diese Diagramme hat sich ein weltweiter Standard UML (Unified Modeling Language) entwickelt:
Um die Antwort auf die Frage Was ist eine Katze? darzustellen, zeichnen wir einen durchgezogenen Pfeil zur (verkürzten) Darstellung der Klasse „Raubtier“
UML-Diagramm der Klasse Katze
Java unterscheidet + öffentliche Attribute / Methoden ( public ) - private Attribute / Methoden ( private )
Konstruktoren • Mit dem Konstruktor, der unter dem Stichwort «constructor»aufgeführt ist, kann man ein konkretes Objekt der Klasse Katze erschaffen: • Katze minka = new Katze(16,5,4,2,38);
Katze minka = new Katze(16,5,4,2,38); 16 Zähne, 5 Krallen, 4 Tatzen , 2 Jahre, 38 cm Katze pascha = new Katze(16,5,4,3,34); 16 Zähne, 5 Krallen, 4 Tatzen , 3 Jahre, 34 cm
UML-Diagramm der Klasse Hund
Hund sunny = new Hund(24,5,4,5,61); 24 Zähne, 5 Krallen, 4 Tatzen , 5 Jahre, 61 cm Hund toby = new Hund(24,5,4,9,102); 24 Zähne, 5 Krallen, 4 Tatzen , 5 Jahre, 102 cm
Der Aufruf von Methoden : • sunny.bellen; minka.miauen; • sunny.beißen(minka); minka.kämpfen(sunny); • Sunny.beißen(minka).kämpfen(sunny);
Die Werte von Feldern abfragen: • int k_vorher = minka.krallen; sunny.beißen(minka).kämpfen(sunny); int k_nachher = minka.krallen; • Der Wert k_nachher – k_vorher liefert die Anzahl der beim Kampf eingebüßten Krallen.
Statische Attribute / Methoden In JAVA static • Statische Attribute und Methoden sind in allen existierenden Objekten einer Klasse identisch ! • Im UML-Diagramm werden sie unterstrichen !
UML-Diagrammder Klasse Hundmit Klassenattributen und Klassenmethoden
Hund sunny = new Hund(24,5,4,5,61);sunny.fressen(Knochen)Dann fressen mit sunny alle Hunde Knochen.Mit sunny haben dann alle Hunde 4 Pfoten und kein Hund kann eine Pfote verlieren.