In ADT geht das über die "quick fixes" (STRG+1)msfox hat geschrieben: ↑09.01.2024 21:32In Eclipse bei Java gibt es z.B. im Context-Menü die Möglichkeit, sich für die Attribute der Klasse einfach die GETTER und SETTER generieren zu lassen. Das vermisse ich in der SE80 immer. Ich habe allerdings noch nicht probiert, ob das auch über Eclipse für ABAP geht.
In dem Fall geht es ja auch tatsächlich ums "Verstecken". Oder man könnte auch sagen: Kapseln. Die Schnittstelle der Methode ändert sich ja nicht! Und das bietet der Klasse genau die Möglichkeit, die man mit direktem Zugriff auf Variablen nicht hat, nämlich selbst entscheiden zu können, wie die Daten verwaltet und nach außen gegeben werden. Bestes Beispiel ist m.E.n. das Lesen von Informationen erst zu dem Zeitpunkt, an dem sie angefordert werden (durch Aufruf der Methode GET).DeathAndPain hat geschrieben: ↑23.01.2024 12:40
- Es ist üblich, Attribute mit einer SET-Methode zu verändern und mit einer GET-Methode wieder aus dem Objekt auszulesen. Dadurch kann man das Attribut in den privaten Bereich der Klasse packen, so dass es von außen nicht zugänglich ist. Man erhält eine Information, die im Objekt versteckt ist mit der Folge, dass die Methoden des Objektes sich unterschiedlich verhalten können, wenn sie mit denselben Parametern aufgerufen werden, je nachdem, welche zusätzlichen Informationen in den privaten Attributen des Objektes versteckt sind und von der Methode genutzt werden. Damit wird eine saubere Schnittstellenkapselung in meinen Augen konterkariert. Die Technik erinnert sehr an das Verstecken von Informationen im ABAP Memory, was dann von anderen Programmen und Unterroutinen ausgelesen wird und wo nachher auch keiner mehr nachvollziehen kann, wie das alles zusammenhängt und wo die Werte herkommen, mit denen plötzlich gearbeitet wird.
Das ist in der Tat so. OO Programmierung ist reich an Tücken, weil es viele Verknüpfungen gibt, die nicht direkt erkennbar sind. Dafür gibt es jedoch Konzepte, die man lernen kann und sollte (Design pattern). Es ist einigermaßen ungerecht, die klassische ABAP-Programmierung mit OO zu vergleichen und zu sagen: ohne OO war es leichter. Motoren waren früher auch einfacher zu warten. Das heißt aber nicht, dass ich wieder einen Käfer-Motor von 1970 in meinem Auto haben möchte...DeathAndPain hat geschrieben: ↑23.01.2024 12:40
- Verstehen und warten kann man solch Objekt daher nur, wenn man die Funktionen der in der Klasse enthaltenen Atribute genau kennt und verstanden hat. Damit das Ganze wartbar ist, müssten diese daher penibel und gut verständlich dokumentiert werden und das an einer Stelle, die jeder wiederfindet (vorzugsweise also direkt online in der Klassendokumentation). Da dies aber in der Realität niemand macht, sind OO-Programme, die richtig mit Objekten arbeiten, oft extrem schwer zu verstehen und für Leute, die sie nicht programmiert haben, sehr schwer (teils unmöglich) zu warten.
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag (Insgesamt 2):
a-dead-trousers • black_adept
Richtig. Und das ist ein Nachteil und nichts anderes, auch wenn OO-Apologeten gerne etwas anderes behaupten.
So dass man sich mit dieser Heimlichtuerei (vor anderen, die den Code später verstehen oder gar warten sollen) jede Menge Probleme schaffen kann, nur um sich selber auf die Schulter klopfen zu können, wie modern man doch programmiere.Und das bietet der Klasse genau die Möglichkeit, die man mit direktem Zugriff auf Variablen nicht hat, nämlich selbst entscheiden zu können, wie die Daten verwaltet und nach außen gegeben werden.
Weil die heutigen Motoren deutlich leistungsfähiger sind. Das sehe ich aber im Bereich der Klassenattribute nicht; die schaffen nur Nachteile. Die von Dir genannten "Vorteile" halte ich für rein ideologischer Natur: Da hat irgendein Professor gesagt, sowas sei gut, also halten es alle für gut. In der Praxis haben wir dadurch Programme, die viel schlechter zu warten sind.Dafür gibt es jedoch Konzepte, die man lernen kann und sollte (Design pattern). Es ist einigermaßen ungerecht, die klassische ABAP-Programmierung mit OO zu vergleichen und zu sagen: ohne OO war es leichter. Motoren waren früher auch einfacher zu warten. Das heißt aber nicht, dass ich wieder einen Käfer-Motor von 1970 in meinem Auto haben möchte...
Was genau ist daran nachteilig? Du kannst ja trotzdem in die Methode reinsehen... Es wird nichts versteckt, es wird nur klar abgegrenzt.DeathAndPain hat geschrieben: ↑24.01.2024 19:13Richtig. Und das ist ein Nachteil und nichts anderes, auch wenn OO-Apologeten gerne etwas anderes behaupten.