Folien



(letzte Synchronisation der PDF-Präsentation: 02.03.2017)

Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation

Definitionen: Klient, Mitglied

Mitglieder einer Klasse sind Attribute und Methoden, die von dieser Klasse definiert werden.
Klienten sind Mitglieder anderer Klassen.

Zugriffsmodifikatoren: public, private, protected

Zugriffsmodifikatoren legen fest, wer auf Klassen, Attribute oder Objekte zugreifen kann. Damit können z.B. einzelne Attribute vor absichtlichen oder versehentlichen Veränderungen von außen geschützt werden.

public
Öffentlich sichtbar; Mitglieder der Klasse (d.h.: Eigenschaften, Methoden), Kind-Klassen und andere Klassen können auf die jeweiligen Mitglieder, die public sind, zugreifen.
UML-Symbol : +

protected
Geschützte Sichtbarkeit: Klienten (= Mitglieder anderer Klassen) können protected Mitglieder nicht nutzen, Mitglieder von Unter- und Basisklassen können sie benutzen.
UML-Symbol: #

private
Privat sichtbar: Mitglieder können innerhalb von Klassen auf private Mitglieder zugreifen. Unterklassen können nicht auf die privaten Mitglieder zugreifen.
UML-Symbol: -

Beispiel für Zugriffsmodifikatoren als UML-Diagramm

Erläuterungen für die Mitglieder der Klasse Artikel:

  • Eigenschaft artikelnummer und Methode getArtikelnummer sind public, damit von allen abgebildeten Klassenmitgliedern zugreifbar
  • Eigenschaft artikelname und Methode setArtikelnummer sind protected, damit nur von Mitgliedern der Klassen Artikel und der Unterklasse Aktionsartikel zugreifbar
  • Eigenschaft lagerbestand und Methode setLagerbestand sind private, damit nur innerhalb der Klasse Artikel zugreifbar.

Getter und Setter

Um Attribute dennoch von außen verändern zu können, benutzt man Get- und Set-Methoden (mehr: “Getter” und “Setter”).

Warum Zugriffsschutz nützlich ist

Neben den allgemeinen Sicherheitsaspekten nennt Skulschus 2007 folgendes Beispiel:

Am einfachsten lässt sich vorstellen, dass es Mitglieder geben kann, denen nur eine Hilfsfunktion zukommt.

Wenn man bspw. eine Klasse erstellt, welche DB-Ergebnisse in Form einer UL- und OL-Liste zurückgibt …
Es ist überaus nützlich, wenn Klienten diese Hilfsfunktion gerade nicht aufrufen können, denn sie können sinnvoll mit LI-Elementen ohne zugehörige Eltern-Elemente keine HTML-Ausgabe erstellen. Darüber hinaus kann es sein, dass man in jedem Fall die äußere Sicht auf die Klasse beibehalten will, um Klientenquelltext nicht ändern zu müssen, aber die Struktur der Klasse mit Blick auf Abfrageverarbeitung und Erstellung der LI-Elemente vielleicht doch ändern will. Je weniger Klienten über Klassen und die Programmierung von Algorithmen wissen, desto besser ist dies für die Wartbarkeit der Software. Der Klient soll dagegen viel eher zwei sehr schöne Methoden namens getUL() und getOL() aufrufen können, die perfekte HTML-Ausgaben erzeugen. Daher sollte man die getLI()-Methode viel besser private programmieren, damit sie nur innerhalb der Klasse genutzt werden kann. (S. 35)

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Übungen: OOP/UML - Zugriffsmodifikatoren *****