Datenkapselung
Klasse:
Zusammenfassung von Datenstrukturen und den darauf ausführbaren Operationen (Methoden) zu einem neuen Datentyp
Methoden und Daten können gegen Zugriff von außen (= aus Methoden anderer Klassen) geschützt sein (privat).
Klassen-Schnittstelle = Menge aller von außen sichtbaren Methoden und Daten.
Objekt:
Variable eines Klassentyps
Zustand des Objekts = Werte der internen Datenstrukturen
Beispiel:
Gerüst einer Klasse für Matrizen:
Klasse Matrix
öffentlich:
neu(nSpalten, nZeilen)
get(i, j)
set(i, j, value)
mult(matrix)
privat:
integer nRows, nCols
double[] val
Schnittstelle:
neue Matrix
Zugriff auf Elemente
Rechenmethoden
immer konsistent:
neu
prüft
nSpalten
,
nZeilen
set
/
get
prüft Indexbereich
kein direkter Zugriff auf Speicherbereiche
Implementierung kann sich ändern:
keine Index-Prüfung
Multiplikation mit Strassen-Algorithmus
Bemerkungen:
Änderung der Implementierung ändert nichts an Programmen, die die Klasse verwenden.
Objekte werden häufig dynamisch erzeugt.
Problem: Speicher nicht mehr gebrauchter Objekte muss freigegeben werden
vom Programmierer: delete-Methode (schnell, fehlerträchtig), z.B. in C++
vom Laufzeit-System: Garbage-Collection (langsam, einfach), z.B. in Java
Peter Junglas 8.10.1999