Objektorientiertes Programmieren Autor Wolfgang Zimmer 1 16 12
Objektorientiertes Programmieren Autor : Wolfgang Zimmer 1 16. 12. 2021
Was ist eine Klasse? l Ein Lexikon dient i. a. zur Erläuterung von Begriffen: l Stichwort Katze 2 16. 12. 2021
Lexikoneintrag: Eine Katze ist ein Raubtier mit l - 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. . . 3 16. 12. 2021
l Damit haben wir bereits eine „einigermaßen“ klare Vorstellung von einer Katze. l Wir können jetzt drei Fragen beantworten : 4 16. 12. 2021
l Was ist l Was hat l Was eine Katze? macht eine Katze? 5 16. 12. 2021
l Was ist eine Katze ? Ein Raubtier l In Java: eine (Unter-)Klasse der (Super-) Klasse Raubtier 6 16. 12. 2021
l. Was hat eine Katze ? l Starke Reißzähne l l l Scharfe Krallen Mut Aversion gegen Hunde Klettervermögen Alter. . . . . In Java: Attribute 7 16. 12. 2021
l. Was l l l 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 8 16. 12. 2021
l l l In Java bringen wir die Antworten auf die drei Fragen Was ist. . Was hat. . . Was macht. . . in einer Klasse unter 9 16. 12. 2021
l Eine Klasse ist also ein abstrakter Bauplan l für konstruierbare reale Objekte 10 16. 12. 2021
l In beschreibenden Texten geht der Überblick über Details schnell verloren. l Daher stellen wir die Antworten auf die drei Fragen zunächst in einem zusammen. Diagramm l Für diese Diagramme hat sich ein weltweiter Standard UML (Unified Modeling Language) entwickelt: 11 16. 12. 2021
Das UML-Diagramm besteht aus drei Zellen : In der oberen Zelle steht der Klassenname Katze in fetter Schrift In der mittleren Zelle befinden sich die Antworten auf die Frage Was hat die Katze? In der unteren Zelle finden wir die Antworten auf die Frage Was macht die Katze? 12 16. 12. 2021
Um die Antwort auf die Frage Was ist eine Katze? darzustellen, zeichnen wir einen durchgezogenen Pfeil zur (verkürzten) Darstellung der Klasse „Raubtier“ Raubtier 13 16. 12. 2021
Raubtier Katze UML-Diagramm der Klasse Katze + zähne: int + krallen: int + tatzen: int - alter: int + länge: double «constructor» + Katze(int, double) «method» + fangen(Maus): Maus + heranwagen(Vogel): Vogel + kämpfen(Hund): Hund + klettern(Baum) + miauen( ) 14 16. 12. 2021
l Java + - unterscheidet öffentliche Attribute / Methoden ( public ) private Attribute / Methoden ( private ) 15 16. 12. 2021
l Konstruktoren l Mit dem Konstruktor, der unter dem Stichwort «constructor» aufgeführt ist, kann man ein konkretes Objekt der Klasse Katze erschaffen: l Katze minka = new Katze(16, 5, 4, 2, 38); 16 16. 12. 2021
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 17 16. 12. 2021
Raubtier UML-Diagramm HUND der Klasse Hund + zähne: int + krallen: int + pfoten: int - alter: int + länge: double «constructor» + Hund( int, double ) «method» + fressen(Futter) + beißen(Katze): Katze + bewachen(Haus) + bellen( ) 18 16. 12. 2021
Hund sunny = new Hund(24, 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 19 16. 12. 2021
l Der Aufruf von Methoden : l sunny. bellen; minka. miauen; l sunny. beißen(minka); minka. kämpfen(sunny); l Sunny. beißen(minka). kämpfen(sunny); 20 16. 12. 2021
l Die Werte von Feldern abfragen: l int k_vorher = minka. krallen; sunny. beißen(minka). kämpfen(sunny); int k_nachher = minka. krallen; l Der Wert k_nachher – k_vorher liefert die Anzahl der beim Kampf eingebüßten Krallen. 21 16. 12. 2021
l Statische Attribute / Methoden In JAVA static l Statische Attribute und Methoden sind in allen existierenden Objekten einer Klasse identisch ! l Im UML-Diagramm werden sie unterstrichen ! 22 16. 12. 2021
Raubtier HUND + zähne: int + krallen: int + pfoten: int - alter: int + länge: double «constructor» + Hund( int, double ) «method» + fressen(Futter) + beißen(Katze): Katze + bewachen(Haus) + bellen( ) UML-Diagramm der Klasse Hund mit Klassenattributen und Klassenmethoden 23 16. 12. 2021
Hund sunny = new Hund(24, 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. 24 16. 12. 2021
Das war ein erster Einblick in Objektorientiertes Arbeiten 25 16. 12. 2021
- Slides: 25