SUPER [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
SUPER [ERLEDIGT]
Hm,
irgendwie habe ich das wohl in den falschen Hals bekommen. Ich war bis gerade der Meinung, dass man mit SUPER: die oberste Klasse aufrufen kann. Ich möchte gerne eine Methode überschreiben, aber zwischendurch die überschriebene Methode benutzen. Geht das unter Xbase++, oder bringe ich was durcheinander? Ich stehe derzeit wirklich auf dem Schlauch.
irgendwie habe ich das wohl in den falschen Hals bekommen. Ich war bis gerade der Meinung, dass man mit SUPER: die oberste Klasse aufrufen kann. Ich möchte gerne eine Methode überschreiben, aber zwischendurch die überschriebene Methode benutzen. Geht das unter Xbase++, oder bringe ich was durcheinander? Ich stehe derzeit wirklich auf dem Schlauch.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER
Hallo Manfred,
mit SUPER werden bei xBase 1.90355 (vorher gab es SUPER noch nicht) bei abgeleiteten Methoden die entsprechenden Methoden der Superklassen aufgerufen.
Achtung!
Beiist B eine Superklasse von C, A jedoch KEINE Superklasse von C!
Also wird mit SUPER in einer abgeleiteten Methode von C auch NUR die entsprechende Methode in B (mit den gleichen Parametern) aufgerufen!
Alternativ könnte man auch selbst die Methode der Superklasse aufrufen (geht auch in xBase 1.90331):
Im letzteren Fall kann man auch die Methode der Klasse A aufrufen (sicher nur sehr selten sinnvoll):
Uli
mit SUPER werden bei xBase 1.90355 (vorher gab es SUPER noch nicht) bei abgeleiteten Methoden die entsprechenden Methoden der Superklassen aufgerufen.
Achtung!
Bei
Code: Alles auswählen
CLASS A
...
CLASS B FROM A
...
CLASS C FROM B
Also wird mit SUPER in einer abgeleiteten Methode von C auch NUR die entsprechende Methode in B (mit den gleichen Parametern) aufgerufen!
Alternativ könnte man auch selbst die Methode der Superklasse aufrufen (geht auch in xBase 1.90331):
Code: Alles auswählen
METHOD C:Linie()
LOCAL xResult
...
xResult := ::B:Linie()
...
RETURN( xResult )
Code: Alles auswählen
METHOD C:Linie()
LOCAL xResult
...
xResult := ::B:Linie()
::A:Linie()
...
RETURN( xResult )
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SUPER
nicht die oberSTE (also Basis-Klasse) sondern nur eine Ebene also die direkte Super-Klasse.Manfred hat geschrieben:Ich war bis gerade der Meinung, dass man mit SUPER: die oberste Klasse aufrufen kann.
Angenommen
XbpSle() => MySuperSle() => MyKleinSle() => MeineAktuelleKlasse()
SUPER:.... steht hier für
::MyKleinSle:....
Laut DOKU kann man auch einfach
SUPER
also ohne etwas danach schreiben, bei meinen Tests ist dann aber der Debugger um eine Zeile verrutscht.
Möglich dass dies mittlerweile korrigiert wurde
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER
Ja,
das denke ich doch auch so, aber irgendwas mache ich da wohl verkehrt.
SUPER wird als Fehler, bzw. undeklariert angemeckert und wenn das Programm dann an die Stelle kommt steigt es mit einer Fehlermeldung aus. Muß denn oDialog weggelassen werden? Kann ich mir nicht vorstellen, woher soll denn dann der Compiler wissen, was ich aufrufen will?
das denke ich doch auch so, aber irgendwas mache ich da wohl verkehrt.
Code: Alles auswählen
oDialog := haupt():new()
oDialog:machedas()
SUPER:oDialog:machedas()
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SUPER
Manfred
:: / SELF und SUPER funktionieren immer nur INNERHALB der Methode ...
Normale Variablen (LOCAL, PUBLIC, PRIVATE) haben kein SUPER
:: / SELF und SUPER funktionieren immer nur INNERHALB der Methode ...
Normale Variablen (LOCAL, PUBLIC, PRIVATE) haben kein SUPER
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER
Hm,
dachte ich mir. Aber wie komme ich an die überschriebene Methode dran?
dachte ich mir. Aber wie komme ich an die überschriebene Methode dran?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SUPER
Nachdem du das so fragst, bin ich mir fast ein bischen unsicher ... vorausgesetzt, die Methoden sind exported (sonst geht gar nix von außen):
oDlg:IrgendEineMethode() ...
oDlg:SUPER:IrgendEineMethode() ... das sollte gehen, habe es aber nicht probiert
oDlg:XbpDialog:IrgendEineMethode() ... sowas geht, z.B. bei combobox braucht man das um zum SLE zu kommen ...
oDlg:IrgendEineMethode() ...
oDlg:SUPER:IrgendEineMethode() ... das sollte gehen, habe es aber nicht probiert
oDlg:XbpDialog:IrgendEineMethode() ... sowas geht, z.B. bei combobox braucht man das um zum SLE zu kommen ...
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER
Nö,
wird auch angemeckert als unbekannte Variable.
also oDialog:super:machwas()
wird auch angemeckert als unbekannte Variable.
also oDialog:super:machwas()
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER
Aaaber,
wenn man
aufruft, dann geht es.
Hubert war schneller.
Wäre mit Super aber einfacher, denn evtl. weiß man ja nicht immer, wie die Superklasse heißen könnte, wenn es was Fremdes ist.
wenn man
Code: Alles auswählen
oDialog:namedereigenensuperklasse:machewas()
Hubert war schneller.
Wäre mit Super aber einfacher, denn evtl. weiß man ja nicht immer, wie die Superklasse heißen könnte, wenn es was Fremdes ist.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Diese Vorgehensweise widerspricht der Kapselung von Klassen!
Es wundert mich, das xBase++ so etwas erlaubt. Meines Erachtens handelt es sich um einen Compilerfehler .
Uli
Es wundert mich, das xBase++ so etwas erlaubt. Meines Erachtens handelt es sich um einen Compilerfehler .
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Exportierte Methoden wurden ja genau deswegen exportiert, weil der Endanwender etwas mit denen machen will
Ansonsten hätte der Ersteller protected oder gar hidden gewählt
Ansonsten hätte der Ersteller protected oder gar hidden gewählt
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Hallo Hubert,brandelh hat geschrieben:Exportierte Methoden wurden ja genau deswegen exportiert, weil der Endanwender etwas mit denen machen will
Ansonsten hätte der Ersteller protected oder gar hidden gewählt
das verstehst Du falsch!
Wenn Du eine Klasse ableitest und eine bereits bestehende Methode neu schreibst, wird die bisherige Methode dadurch gekapselt!
Wenn Du "protected" oder "hidden" wählst, kann außerhalb der Klasse nicht mehr auf die Methode zugegriffen werden. Und das will der Ersteller in diesem Fall ja NICHT.
ABER der Ersteller MUSS eine Möglichkeit haben, in einer abgeleiteten Klasse den Zugriff auf die Methode der SUPER-Klasse zu verhindern! Und das ist sonst nicht möglich!
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Kleiner Tipp: Einfach mal "Das Konzept von SUPER" in der Doku lesen!
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Hallo Tom,Tom hat geschrieben:Kleiner Tipp: Einfach mal "Das Konzept von SUPER" in der Doku lesen!
irgendwie bin ich zu blöd, in der Dokumentation etwas über "SUPER" zu finden.
Wie heißt die Hilfe-Datei, die Du benutzt und welches Datum hat sie?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER [ERLEDIGT]
Uli,
ich kam auch erst darauf, als ich unter SUCHEn ging und da SUPER eintippte
ich kam auch erst darauf, als ich unter SUCHEn ging und da SUPER eintippte
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Hallo, Uli.
Ich benutze die Referenzdoku zu 1.9 SL1 (10.4.2009). Tatsächlich gibt es im Index keine Treffer zu "SUPER", aber die Suchanfrage "Das Konzept von SUPER" sollte Dich zum entsprechenden Thema führen.
Ich benutze die Referenzdoku zu 1.9 SL1 (10.4.2009). Tatsächlich gibt es im Index keine Treffer zu "SUPER", aber die Suchanfrage "Das Konzept von SUPER" sollte Dich zum entsprechenden Thema führen.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Hallo Tom,
die meisten Dateien haben bei mir auch das Datum 10.04.2009.
Aber die Hilfedatei xpplang20.chm im Verzeichnis Alaska/xppw32/help hat das Datum 03.05.2006. Ich finde auch nichts anderes
Heißt die Hilfedatei bei Euch auch so?
Uli
die meisten Dateien haben bei mir auch das Datum 10.04.2009.
Aber die Hilfedatei xpplang20.chm im Verzeichnis Alaska/xppw32/help hat das Datum 03.05.2006. Ich finde auch nichts anderes
Heißt die Hilfedatei bei Euch auch so?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SUPER [ERLEDIGT]
Uli,
im verzeichnis Book und dann xppref.hlp
im verzeichnis Book und dann xppref.hlp
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Danke!
Nichts desto trotz ist die Datei bei mir leider von 2006 .
Ich mach mich mal auf die Suche ...
Uli
Nichts desto trotz ist die Datei bei mir leider von 2006 .
Ich mach mich mal auf die Suche ...
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
immer wieder erfrischend solche Kommentare zu lesenUliTs hat geschrieben:das verstehst Du falsch!
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Ich arbeite damit bisher zwangsweise nur selten sondern mit der 1.90.311.Tom hat geschrieben:Hassu 1.9 ohne Ess-Ell-Eins, Uli?
Die 1.90.355 ist doch SL1 oder meinst Du noch etwas anderes?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Oh Sorry...brandelh hat geschrieben:immer wieder erfrischend solche Kommentare zu lesen
Ich wollte Dir nicht auf die Füße treten . Hätte wohl besser "Ich bin anderer Meinung" schreiben sollen .
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: SUPER [ERLEDIGT]
Hallo, Uli.
Ob das SUPER-Konzept erst mit SL1 (355) eingeführt wurde oder schon vorher, kann ich Dir nicht sagen (die Doku tut's nämlich auch nicht), aber ich finde in der Hilfe der 331 den entsprechenden Hilfetext auch nicht.
Ob das SUPER-Konzept erst mit SL1 (355) eingeführt wurde oder schon vorher, kann ich Dir nicht sagen (die Doku tut's nämlich auch nicht), aber ich finde in der Hilfe der 331 den entsprechenden Hilfetext auch nicht.
Herzlich,
Tom
Tom