Redefinierte Methode - Attribute

Getting started ... Alles für einen gelungenen Start.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

Redefinierte Methode - Attribute

Beitrag von tseng (ForumUser / 8 / 1 / 0 ) »
Hallo,

besteht die Möglichkeit das ich bei einer geerbten Methode, welche ich redefinieren möchte, die Attribute erweitere? Irgendwie habe ich gelesen, dass die Änderung von Attributen nicht möglich ist, die Erweiterung hingegen schon. Wenn ich nun aber in der SE24 in die Attributansicht einer geerbten Methode gehe, erhalte ich den Hinweis, dass eine Änderung nicht möglich ist.

Im Grunde sollte eine Spezialisierung von geerbten Methoden in OO doch irgendwie möglich sein oder denke ich da komplett falsch?

Danke für eure Hilfe

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


Re: Redefinierte Methode - Attribute

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Nein, das geht nicht. Die Attribute sind Attribute der Klasse und können nicht redefiniert werden. Was du machen kannst, ist WEITERE Attribute in der erbenden Klasse anzulegen (was wohl mit "Erweiterung" gemeint ist).

Natürlich ist eine Spezialisierung von Methoden möglich, dafür dient ja der Mechanismus der Redefinition.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Redefinierte Methode - Attribute

Beitrag von tseng (ForumUser / 8 / 1 / 0 ) »
Genau dies ist mein Ziel, weitere Attribute an eine redefinierte Methode anhängen. Nur wie funktioniert das genazu? Sobald ich in die Attributansicht der redefinierten Methode gehe, kommt eine Meldung, womit dann auch der Änderungsmodus "deaktiviert" wird.

Re: Redefinierte Methode - Attribute

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
http://help.sap.com/saphelp_470/helpdata/de/dd/4049c40f4611d3b9380000e8353423/content.htm hat geschrieben:...
Redefinition von Methoden

Jede Unterklasse enthält die Komponenten aller Klassen, die im Vererbungsbaum zwischen ihr und dem Wurzelknoten liegen. Die Sichtbarkeit einer Komponente ist immer gleich und kann nicht geändert werden. Es besteht aber die Möglichkeit, die öffentlichen und geschützten Instanzmethoden aller vorangehenden Oberklassen mit dem Zusatz REDEFINITION der Anweisung METHODS zu redefinieren, um sie an die gewünschte Spezialisierung anzupassen. Dabei kann die Schnittstelle einer redefinierten Methode nicht verändert werden. Die Methode wird lediglich unter gleichem Namen neu implementiert.

Die Deklaration der Methode liegt weiterhin bei der Oberklasse und auch ihre vorhergehende Implementierung bleibt dort erhalten. Die Implementierung der Redefinition wird bei der Unterklasse zusätzlich erzeugt und verschattet die Implementierung der Oberklasse.
...
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Redefinierte Methode - Attribute

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Zusammengefasst:
In der Schnittstelle einer Methode werden PARAMETER definiert. ATTRIBUTE sind die Eigenschaften von Klassen und stehen nur "indirekt" mit Methoden in Verbindung als dass diese darauf zugeifen können.
In ABAP gibt es nur die Bestimmung einer Methode per NAME. Wohingegen in C und JAVA auch die PARAMETER einer Methode für deren Definition ausschlaggebend sind. Daher kann man die Schnittstelle einer Methode in einer Redefinition niemals verändern und das eigentlich in keiner Programmiersprache. Man kann nur z.B. in JAVA eine Methode anlegen die gleich heißt wie die ursprüngliche aber andere Parameter hat. Die ursprüngliche Methode wird dadurch jedoch NICHT redefiniert. Die ursprüngliche Methode ist also nach wie vor vorhanden und kann auch aufgerufen werden ohne dass die abgeleitete Klasse (direkt) Einfluss darauf nehmen kann.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Redefinierte Methode - Attribute

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
tseng hat geschrieben:Genau dies ist mein Ziel, weitere Attribute an eine redefinierte Methode anhängen. Nur wie funktioniert das genazu? Sobald ich in die Attributansicht der redefinierten Methode gehe, kommt eine Meldung, womit dann auch der Änderungsmodus "deaktiviert" wird.
Hallo,

wenn ich dich recht verstehe, befindest du dich doch in deiner Subklasse, in der du eine Methode der Superklasse redefiniert hast.

Definiere dir in deiner Subklasse deine notwendigen Attribute und eine Methode SET_MEINE_ATTRIBUTE. Das sollte funktionieren. dann rufst du aus deiner Redefinition die neu definierte Methode SET_MEINE_ATTRIBUTE auf. Alle notwendigen Parameter kannst du ja durchschleusen.

Oder habe ich das Problem falsch verstanden?

Grüße
Frank

Re: Redefinierte Methode - Attribute

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
tseng hat geschrieben:Genau dies ist mein Ziel, weitere Attribute an eine redefinierte Methode anhängen. Nur wie funktioniert das genazu? Sobald ich in die Attributansicht der redefinierten Methode gehe, kommt eine Meldung, womit dann auch der Änderungsmodus "deaktiviert" wird.
Bitte an die Tafel stellen und 100x schreiben "Attribute gehören zur Klasse, nicht zu einer Methode".

Was genau meinst du, wenn du "Attribute einer Methode" schreibst, dann können wir erstmal das Wording klären. Dann wissen wir nämlich alle, worüber wir sprechen.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Redefinierte Methode - Attribute

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
Ich vermute mal, er will die Signatur der geerbten Methode erweitern, also weitere Importing, Exporting oder was auch immer Parameter anhängen.

Lt. dem von Stefan gezeigten Ausschitt aus der SAP-Hilfe ist das ja nicht möglich.

Re: Redefinierte Methode - Attribute

Beitrag von tseng (ForumUser / 8 / 1 / 0 ) »
HI,

ja sorry, mein Fehler. Mir geht es genau um die Erweiterung der Signatur einer Methode (weitere Importparameter anhängen). Nicht die Attribute einer Klasse.
Aber wie ich anhand der Antworten erkennen konnte, ist es nicht möglich die Parameter einer Methode in der SubKlasse zu erweitern.

Danke und sorry für die missverständliche Ausdrucksweise

Re: Redefinierte Methode - Attribute

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
tseng hat geschrieben:HI,

ja sorry, mein Fehler. Mir geht es genau um die Erweiterung der Signatur einer Methode (weitere Importparameter anhängen). Nicht die Attribute einer Klasse.
Aber wie ich anhand der Antworten erkennen konnte, ist es nicht möglich die Parameter einer Methode in der SubKlasse zu erweitern.

Danke und sorry für die missverständliche Ausdrucksweise
Erweiterung der Signatur einer redefinierten Methode darf man nicht in ABAP, und das heißt Überladen (overloading). ABAP ununterstützt das nicht. Aber was kannst du machen um die Signatur einer Methode zu erweitern!, Du kannst einfach optionale Parameter in der Überklasse erweitern und in der Unterklasse verwenden.


Gruß
Ibo

Re: Redefinierte Methode - Attribute

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ibo hat geschrieben:Erweiterung der Signatur einer redefinierten Methode darf man nicht in ABAP, und das heißt Überladen (overloading). ABAP ununterstützt das nicht. Aber was kannst du machen um die Signatur einer Methode zu erweitern!, Du kannst einfach optionale Parameter in der Überklasse erweitern und in der Unterklasse verwenden.
Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden. Dieses Interface definiert alle notwendigen "Parameter" für die korrekte Verarbeitung der Methode als Attribute oder über SET-/GET-Methoden. Durch die implementierende Klasse kann man dann die so übergebenen "Parameter" noch verändern oder mehr "Parameter" an die aufgerufene Methode übergeben. In der redefinierten Methode muss man so nur noch den Parameter aus der Schnittstelle auf die benötigte Klasse umwandeln (casten) und schon man kann die zusätzlichen "Parameter" aus der implementierenden Klasse nutzen.

Wenn man in dieses Methoden-Schnittstelle-Interface-Konzept etwas Zeit investiert sollte man auch gänzlich ohne das CASTING auf die implementierende Klasse auskommen können. Somit schafft man es, dass weder der Entwickler der Methode noch der Entwickler der implementierenden Schnittstellen-Klasse die jeweils andere Implementierung (im Detail) kennen müssen.

lg ADT

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

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Redefinierte Methode - Attribute

Beitrag von ibo (ForumUser / 67 / 35 / 9 ) »
Hi ADT,
Respekt :up:
ich habe es noch nicht verwendet aber ich probiere es aus, das finde ich sehr interessant ;)

Re: Redefinierte Methode - Attribute

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
a-dead-trousers hat geschrieben:Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden.
DAS ist dann aber schon die hohe Schule - das kriegen viele Entwickler nichtmal als Benutzer der Klasse kapiert ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Redefinierte Methode - Attribute

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ralf.wenzel hat geschrieben:
a-dead-trousers hat geschrieben:Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden.
DAS ist dann aber schon die hohe Schule - das kriegen viele Entwickler nichtmal als Benutzer der Klasse kapiert ;)
Ich hab das jetzt in letzter Zeit schon bei einigen Neuentwicklung von SAP bzw. unserem Modul-Verantwortlichen (Cerner) gesehen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Redefinierte Methode - Attribute

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
a-dead-trousers hat geschrieben: Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden. Dieses Interface definiert alle notwendigen "Parameter" für die korrekte Verarbeitung der Methode als Attribute oder über SET-/GET-Methoden.
Hmm - ich finde das eigentlich gar nicht so schön. Es erfüllt sicherlich den Zweck, aber auch wenn SAP das selber verwendet zeigt das nur, dass sie selber das Overloading vermissen bzw. sich nur so zu behelfen wissen.
Aber gerade die Idee, dass man Pflichtparameter im Interface definiert um dann weitere Parameter via implementierender Klasse zur Verfügung zu haben stößt mir schon recht bitter auf. Dann kann doch gleich alle Methoden genau so definieren und sich die ganzen Schnittstellen von Methoden ganz sparen.
Zumal man hier in meinen Augen deutlich schönere Alternativen hätte:
Pflichtfelder braucht man eigentlich nicht über diese Krücke zu übergeben, da diese direkt in die Signatur der Methode eingehen sollten. Wenn man dann tatsächlich noch overloading unterstützen will kann man das ja von mir aus mit der o.a. oder einer alternativen Technik machen ( DataRef auf Struktur wäre wohl ähnlich geeignet ) - aber eben nur für den Nicht-Pflichtteil der Methode .
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

5
Antw.
4652
Views
Doppelte Attribute finden
von isensatus » 23.08.2018 10:56 • Verfasst in ABAP® für Anfänger
0
Antw.
1375
Views
Datei Attribute am Frontend lesen
von PI2301 » 27.10.2009 13:35 • Verfasst in ABAP® für Anfänger
0
Antw.
1603
Views
SRM eigene Attribute aus Org-Struktur entfernen
von jspranz » 20.02.2007 12:52 • Verfasst in Sonstige Module
8
Antw.
11110
Views
Aufruf statischer privater Attribute
von Hotzenplotz » 13.01.2018 18:28 • Verfasst in ABAP® für Anfänger
0
Antw.
3662
Views

Aktuelle Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 76
Trennen Strasse und Hausnummer
vor 5 Stunden von payten 13 / 10355
Dialog-Container mit Toolbar/Status
vor 19 Stunden von DeathAndPain gelöst 22 / 3346
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1141

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

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 76
Trennen Strasse und Hausnummer
vor 5 Stunden von payten 13 / 10355
Dialog-Container mit Toolbar/Status
vor 19 Stunden von DeathAndPain gelöst 22 / 3346
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1141

Unbeantwortete Forenbeiträge

User Exit EXIT_RQCPRM10_001
vor 3 Stunden von Manfred K. 1 / 76
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2702
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9284