Klassennamen / Intefacenamen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
38 Beiträge • Vorherige Seite 3 von 3 (current)
38 Beiträge Vorherige Seite 3 von 3 (current)

Re: Klassennamen / Intefacenamen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Und alle das IF implementierende CL erben von der abstrakten Klasse?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Klassennamen / Intefacenamen

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
erp-bt hat geschrieben: Nein, Du musst das Interface als abstrakt definieren, da Du es sonst nicht in der konkreten Klasse implementieren kannst. Du kriegst dann dort die Meldung Methode Interface-Methode ist in der Klasse Abstrakte-Klasse implementiert und das ist ja nicht das was wir wollen. Die Option ist ja nicht umsonst da. Wenn Du das Interface in der abstrakten Klasse abstrakt definierst, kannst Du in der konkreten Klasse ganz normal die Interface-Methode implementieren und alles was gemeinsam ist eben in der abstrakten Klasse.

Ich habe es mir einfach zur Gewohnheit gemacht zu einem Interface auch gleich eine abstrakte Klasse zu definieren, da es mir schlicht und einfach das Leben erleichtert. Muss man ja nicht machen, wenn man auch sonst zurecht kommt. Ich habe die Erfahrung gemacht das es äußerst hilfreich ist eine abstrakte Klasse zu haben, in der man gemeinsame Typen/Attribute/Methoden definieren und implementieren kann. Ob das für einen selbst sinnvoll oder nutzbar ist, steht auf einen ganz anderen Blatt. Deswegen habe ich ja geschrieben, einfach mal ausprobieren.

Viele Grüße, Tapio

Ich sage nochmal : Deine Beschreibung ist nicht genau. Ein Interface an sich ist bereits abstrakt. Natürlich kann ich 5 Methoden im Interface definieren. In der Abstrakten Klasse implementiere ich z.b. 3 die eine gemeinsame Funktionalität darstellen( oder z.b. eine als abstrakt deklarierte immer aufrufen.) . 2 deklariere ich als abstrakt in der Klasse um si edann später zu redefinieren.

Dem Nutzen widerspreche ich ja auch nicht, denn ich nutze es ebenfalls.
"Code lügt nicht ^^"

Re: Klassennamen / Intefacenamen

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
ralf.wenzel hat geschrieben:Und alle das IF implementierende CL erben von der abstrakten Klasse?


Ralf
Falls Du mich meinst, ja alle konkreten implementierenden Klassen erben von der abstrakten Klasse.
...entwickelnder Berater...beratender Entwickler

Re: Klassennamen / Intefacenamen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Das hab ich aber selten. Normalerweise ist es so, dass implementierende Klassen aus völlig verschiedenen Vererbungsbäumen. Sonst kann ich die Methoden gleich in der Oberklasse definieren.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Klassennamen / Intefacenamen

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
gtoXX hat geschrieben:
Ich sage nochmal : Deine Beschreibung ist nicht genau. Ein Interface an sich ist bereits abstrakt. Natürlich kann ich 5 Methoden im Interface definieren. In der Abstrakten Klasse implementiere ich z.b. 3 die eine gemeinsame Funktionalität darstellen( oder z.b. eine als abstrakt deklarierte immer aufrufen.) . 2 deklariere ich als abstrakt in der Klasse um si edann später zu redefinieren.

Dem Nutzen widerspreche ich ja auch nicht, denn ich nutze es ebenfalls.
Hmm, jetzt gibt es also doch eine abstrakte Klasse die das Interface implementiert. Ob jetzt komplett abstrakt oder nur Teile davon lass ich einfach mal dahingestellt. Das hast Du ja vorher in Frage gestellt.
gtoXX hat geschrieben: Wozu noch eine Abstrakte Klasse ?
Ich persönlich sehe es halt als Vorteil an, wenn man nicht ständig das Interface anpassen muss, um dann evtl. gemeinsames Coding in einer abstrakten Klasse zu implementieren. Im BAdI-Fall habe ich ja sogar überhaupt nicht die Möglichkeit das Interface anzupassen und warum ich dann nicht das ganze Interface als abstrakt definieren soll, erschließt sich mir ehrlich gesagt nicht. Wie gesagt die Option ist ja nicht umsonst da.

Viele Grüße, Tapio
...entwickelnder Berater...beratender Entwickler

Re: Klassennamen / Intefacenamen

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
ralf.wenzel hat geschrieben:Das hab ich aber selten. Normalerweise ist es so, dass implementierende Klassen aus völlig verschiedenen Vererbungsbäumen. Sonst kann ich die Methoden gleich in der Oberklasse definieren.


Ralf

Natürlich kannst Du das. Aber nehmen wir mal an Du hast einen Filekonverter für verschiedene Formate. Die Konvertierung findet jeweils in einer spezifischen Methode der erbenden Klasse statt.
Deine Abstrakte Oberklasse enthält nur den Aufruf einer abstrakten Methode Convert. Davor und danach wiederum hast Du immer wieder das gleiche Coding. Dieses brauchst Du aber nur in der Abstrakten Klasse implementieren. Anstatt immer wieder in gleichartigen erbenden Klassen. So hälst Du dich stärker an das DRY - Prinzip.

Häufiger findest Du sowas z.b. in Frameworks. Z.b nutzen wir das aktuell für ein Framework, das nacheinander Aufgaben erfüllt. Dabei ist die Implementierung für das Logging etc immer gleich. Muss aber Dank der Vererbung nicht mehr in den Methode der jeweiligen Aufgabenklasse implementiert werden. Da steht nur noch das Coding der tatsächlich durchzuführenden Aktion.
"Code lügt nicht ^^"

Re: Klassennamen / Intefacenamen

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
erp-bt hat geschrieben:
Ich persönlich sehe es halt als Vorteil an, wenn man nicht ständig das Interface anpassen muss, um dann evtl. gemeinsames Coding in einer abstrakten Klasse zu implementieren. Im BAdI-Fall habe ich ja sogar überhaupt nicht die Möglichkeit das Interface anzupassen und warum ich dann nicht das ganze Interface als abstrakt definieren soll, erschließt sich mir ehrlich gesagt nicht. Wie gesagt die Option ist ja nicht umsonst da.

Viele Grüße, Tapio
Wier meinen schon das Gleiche im Endeffekt.
"Code lügt nicht ^^"

Re: Klassennamen / Intefacenamen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Da Zitieren am Telefon doof ist: DRY-Prinzip mache ich dann so, dass ich eine Serviceklasse habe, in denen das sich wiederholende Coding steht, weil ich eben nicht z. B. alle Subscriber auf eine Basisklasse zurückführen kann.


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
a-dead-trousers

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

3
Antw.
5001
Views
Klassennamen ermitteln
von mfromg » 24.03.2017 18:15 • Verfasst in ABAP Objects®

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 32 Minuten von edwin 7 / 159
Daten an Tabelle binden
vor 13 Stunden von Bright4.5 3 / 1485

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 32 Minuten von edwin 7 / 159
Daten an Tabelle binden
vor 13 Stunden von Bright4.5 3 / 1485

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821