Objektorientiertes Programmieren Autor : Wolfgang Zimmer 13.11.2018
Was ist eine Klasse? Ein Lexikon dient i.a. zur Erläuterung von Begriffen: Stichwort Katze 13.11.2018
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. .. 13.11.2018
drei Fragen Damit haben wir bereits eine „einigermaßen“ klare Vorstellung von einer Katze. Wir können jetzt drei Fragen beantworten : 13.11.2018
Was ist eine Katze? Was hat eine Katze? Was macht eine Katze? 13.11.2018
der (Super-) Klasse Was ist eine Katze ? Ein Raubtier In Java: eine (Unter-)Klasse der (Super-) Klasse Raubtier 13.11.2018
Was hat eine Katze ? Starke Reißzähne Scharfe Krallen Mut Aversion gegen Hunde Klettervermögen Alter .................... In Java: Attribute 13.11.2018
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 13.11.2018
Was hat..... Was macht...... in einer Klasse unter In Java bringen wir die Antworten auf die drei Fragen Was ist.... Was hat..... Was macht...... in einer Klasse unter 13.11.2018
für konstruierbare reale Objekte Eine Klasse ist also ein abstrakter Bauplan für konstruierbare reale Objekte 13.11.2018
Für diese Diagramme hat sich ein weltweiter Standard 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: 13.11.2018
In der oberen Zelle steht der Klassenname Katze 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 Was macht die Katze? 13.11.2018
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.11.2018
Katze UML-Diagramm Raubtier der Klasse Katze «constructor» + zähne: int + krallen: int + tatzen: int - alter: int + länge: double «constructor» + Katze(int, int, int, int, double) «method» + fangen(Maus): Maus + heranwagen(Vogel): Vogel + kämpfen(Hund): Hund + klettern(Baum) + miauen( ) 13.11.2018
- private Attribute / Methoden Java unterscheidet + öffentliche Attribute / Methoden ( public ) - private Attribute / Methoden ( private ) 13.11.2018
Konstruktoren ist, kann man ein konkretes Objekt 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); 13.11.2018
Katze minka = new Katze(16,5,4,2,38); Katze pascha = 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 13.11.2018
HUND UML-Diagramm Raubtier der Klasse Hund «constructor» + zähne: int + krallen: int + pfoten: int - alter: int + länge: double «constructor» + Hund( int, int, int, int, double ) «method» + fressen(Futter) + beißen(Katze): Katze + bewachen(Haus) + bellen( ) 13.11.2018
Hund sunny = new Hund(24,5,4,5,61); Hund toby = 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 13.11.2018
Der Aufruf von Methoden : sunny.bellen; minka.miauen; sunny.beißen(minka); minka.kämpfen(sunny); Sunny.beißen(minka).kämpfen(sunny); 13.11.2018
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. 13.11.2018
Statische Attribute / Methoden In JAVA static Statische Attribute und Methoden sind in allen existierenden Objekten einer Klasse identisch ! Im UML-Diagramm werden sie unterstrichen ! 13.11.2018
UML-Diagramm der Klasse Hund mit Klassenattributen und Klassenmethoden Raubtier UML-Diagramm der Klasse Hund mit Klassenattributen und Klassenmethoden HUND + zähne: int + krallen: int + pfoten: int - alter: int + länge: double «constructor» + Hund( int, int, int, int, double ) «method» + fressen(Futter) + beißen(Katze): Katze + bewachen(Haus) + bellen( ) 13.11.2018
Hund sunny = new Hund(24,5,4,5,61); sunny 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. 13.11.2018
Das war ein erster Einblick in Objektorientiertes Arbeiten 13.11.2018