Bearbeiten von „Objektorientierung:Javakurs“

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 9: Zeile 9:
* Vererbung
* Vererbung
* Polymorphie
* Polymorphie
* Überladung


In der Programmierung wird dies alles in Klassen realisiert.
In der Programmierung wird dies alles in Klassen realisiert.
Zeile 17: Zeile 16:
Variablen einer Klasse können Objekte mit einfachem Datentyp (int, long, bool, char, float und double) oder mit komplexem Datentyp (Klasse) sein.
Variablen einer Klasse können Objekte mit einfachem Datentyp (int, long, bool, char, float und double) oder mit komplexem Datentyp (Klasse) sein.


Methoden sind benannte Ansammlungen von Anweisungen. Näheres im nächsten Kapitel.
Methoden sind benannte Ansammlungen von Anweisungen.


Variablen und Methoden haben Namen.
Variablen und Methoden haben Namen.
Grundregel beim Modellieren von Klassen: eine Oberklasse ist immer eine Spezialisierung einer Basisklasse.
Ein Objekt einer Oberklasse kann auch als Basisklasse angesprochen werden, also z.B. ein  PKW ist auch ein Fahrzeug.


=== Kapselung ===
=== Kapselung ===
Zeile 30: Zeile 25:
Vorteil: Änderungen bleiben lokal begrenzt
Vorteil: Änderungen bleiben lokal begrenzt


Indem zusammengehörige Eigenschaften und Aktionen zu einer Klasse gebündelt werden, ist die erste Stufe der Kapselung erreicht.
Technisch wird das durch Zugriffsrechte geregelt.
Die zweiter Stufe sind Zugriffsrechte, die die Sichtbarkeit von Variablen/Methoden außerhalb der Klasse regeln:


Es gibt folgende Zugriffsrechte:
Eine Variable/Methode kann folgende Zugriffsrechte haben:
* public: die Variable/Methode ist außerhalb der Klasse bekannt und darf "von jedem" benutzt werden.
* public: die Variable/Methode ist außerhalb der Klasse bekannt und darf "von jedem" benutzt werden.
* protected: Die Variable/Methode ist nur innerhalb der Klasse und in abgeleiteten Klassen bekannt.
* protected: Die Variable/Methode ist nur innerhalb der Klasse und in abgeleiteten Klassen bekannt.
Zeile 58: Zeile 52:


Vorteil: Bessere Verständlichkeit.
Vorteil: Bessere Verständlichkeit.
=== Überladung ===
Eine Methode einer Basisklasse kann in einer Oberklasse überschrieben werden.
Diese Methode wird auch dann benutzt, wenn ein Objekt der Oberklasse als Basisklasse angesprochen wird.
Beispiel:
* Klasse Luftfahrzeug,
** Methode Luftfahrzeug.fortbewegung() liefert "fliegt"
* Klasse Zeppelin abgeleitet von Luftfahrzeug
** Methode Zeppelin.fortbewegung() liefert "fährt"
* Klasse Helikopter abgeleitet von Luftfahrzeug
** die Klasse hat keine eigene Methode fortbewegung(), sie erbt also die Methode aus Luftfahrzeug und diese liefert "fliegt"


== Beispiel einer Klassenhierarchie ==
== Beispiel einer Klassenhierarchie ==
<pre>
<pre>
class Article {
class Article {
    private int id;
   // Preis in Cent
   // Preis in Cent
   protected long price;
   protected long price;
Zeile 104: Zeile 85:


Aufgrund der Vererbung hat ein die Klasse Beer auch die Eigenschaften/Methoden der Basisklassen.
Aufgrund der Vererbung hat ein die Klasse Beer auch die Eigenschaften/Methoden der Basisklassen.
Also hat Beer auch die Eigenschaft Menge (amount aus Fluid) und einen Preis (price aus Article).
Also hat Beer auch die Eigenschaft Menge (amount aus Fluid) und einen Preis (amount aus Article).


Bei der DM/Euro-Umstellung musste nur eine Stelle geändert werden: die Methode priceAsString().
Bei der DM/Euro-Umstellung musste nur eine Stelle geändert werden: die Methode priceAsString().


Und das, obwohl der Preis bei Beer, Keksen und Fleisch existiert.
Und das, obwohl der Preis bei Beer, Keksen und Fleisch existiert.
=== Aufgabe ===
Modelliere Klassen für Straßenverkehrsteilnehmer im Sinne der Straßenverkehrsordnung.
Entitäten sind: Verkehrsteilnehmer, Fahrzeug, Fahrrad, Kraftrad, Kraftfahrzeug, Fußgänger, PKW, LKW.
Methoden: benutztStrasse(), benutztAutobahn(), zahltSteuer(), hoechstGeschwindigkeit()
Eigenschaften: hubraum, gewicht
=== Aufgabe 2 ===
* Ordne die Entitäten in Klassenhierarchien. Ergänze fehlende Hierarchien:
** Staubsauger, Zange, Hammer, Handmixer, Steinkeil, Keule, Presslufthammer, Küchenwerkzeuge
* Finde Eigenschaften für die Entitäten

Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist, oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Info-Theke-Beiträge automatisch unter der „Gemeinfreiheit“ stehen (siehe Info-Theke:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)