Attribute
Methoden und Attribute sind in der Klasse deklariert. Während Methoden ein Verhalten der Klasse beschreiben, sind Attribute die Eigenschaften der Klasse bzw. deren Instanzen/Objekte
Art Attribute
- Instanzattribute = die Attribute sind an die Instanzen der Klasse gebunden. Daher werden diese Attribute bei einer Instanzierung initialisiert
- Statische Attribute = die Attribute sind an die Klasse gebunden und nicht an die Instanzen der Klasse. So könnten hier z. B. die Anzahl der erzeugten Objekte der Klasse gespeichert werden. Werden neue Instanzen der Klasse erzeugt, behalten diese Attribute ihren Wert.
- Konstanten = konstante Werte
Sichtbarkeit Attribute
- PRIVATE = Attribute sind lediglich in der Klasse selbst sichtbar
- PROTECTED = Attribute sind in der Klasse, sowie durch die Instanz und deren Erben sichtbar
- PUBLIC = Attribute sind in der Klasse, deren Instanzen/Erben sowie auch außerhalb der Klasse sichtbar
Attribute können typisieren auf
- Data Dictionary-Objekte
- Tabellen
- Strukturen
- Datenelemente
- Datentypen
- Klassen
Instanzattribute
Eine Klasse ist sozusagen der Bauplan von einer Sache. Eine Referenzvariable in Bezug auf diese Klasse wird erzeugt durch den Befehl
Data: ref_var type ref of YCOC_SV_CLREP0002.
Ein Objekt/Instanz in Bezug auf diese Klasse, wo auch physischer Hauptspeicher zugewiesen wird, bewirkt folgender Befehl
Create object ref_var.
Statische Attribute
Statische Attribute sind Eigenschaften der Klasse und nicht der Instanz der Klasse. Wenn z. B. zu einer Klasse "Fuhrpark" jeweils ein Objekt der Klasse erzeugt wird, wenn ein neues Fahrzeug hinzukommt, ist es sinnvoll die Anzahl der Fahrzeuge in einem statischen Attribut zu speichern. Dies könnte im (Instanz-)Konstruktur der Klasse um einen Datensatz erhöht werden.
mv_counter_fzg = mv_counter_fzg + 1.
Read Only Attribut
Sofern ein Attribut "Public" ist und keine Konstante, kann das Attribut normal auch vom Aufrufer der Klasse geändert werden.
Möchte man nicht, dass von außerhalb der Klasse ein Attribut änderbar ist, kann man beim Attribut in der Klasse die Checkbox "Schreibg." (Read only) setzen.
Es kann aus Performancegründen sinnvoll sein ein Attribut auf "Public" zu setzen, damit der Aufrufer der Klasse direkt den Wert eines Attributs auslesen kann und nicht erst über eine GET-Methode den Wert auszulesen. Aber durch das Read Only-Flag wird die Veränderung des Wertes außerhalb der Klasse verhindert.
Anwendungsbeispiel Klassenattribut
Literatur
- ABAP Objects; Frank Wolf, S. 24f.