eigene (abgeleitete) Klassen und Parameter

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

eigene (abgeleitete) Klassen und Parameter

Beitrag von Manfred »

Hi,

ich experimentiere mal wieder ein wenig und bin dabei auf eine Frage gestossen, die ich mir jetzt nicht richtig selbst beantworten kann.

Wenn ich mir eine eigene Klasse abgeleitet von einem XbasePart bauen möchte, dann habe ich mir gerade folgendes überlegt:

Die aPresParam z.B., die jeweils einem new() übergeben werden, könnten die auch in der jeweiligen Init Methode stehen, oder müssen die vorher belegt und dann mitgegeben werden? Oder macht man das dann evtl. über Default TO ? Oder ist das vollkommen egal, wie man es löst?

Ich hoffe meine Frage ist jetzt nicht zu kompliziert.

PS:Ich meine also, die Parameter als Klassenvariablen
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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: eigene (abgeleitete) Klassen und Parameter

Beitrag von brandelh »

Manfred hat geschrieben:PS:Ich meine also, die Parameter als Klassenvariablen
zuerst zum einfachsten, Parameter sind LOCAL Variablen und KEINE Klassenvariablen !

Wenn du in einer abgeleiteten Klasse Änderungen durchführen willst, musst du in den meisten Fällen die gleiche Methode der Basisklasse aufrufen. Wenn man es nicht macht, wird die Basismethode komplett ersetzt und nicht nur ergänzt oder geändert.

Hier ein Beispiel:

Code: Alles auswählen

CLASS MyClass FROM BaseClass  // nur mal so als Beispiel
...
METHOD MyClass:INIT(p1,p2,p3,p4,p5)
[color=red]    1. Anmerkung[/color]
    ::BaseClass:INIT(p1,p2,p3,p4,p5)  // gleiches Interface = gleiche Parameter
[color=red]    2. Anmerkung[/color]     
...
Je nach Sinn und Zweck, kann man in der abgeleiteten Klasse in der gleichnamigen Methode mehr oder weniger Paramter haben, aber meistens sind die Parameter von der Anzahl und Reihenfolge identisch. Wenn man weniger Parameter hat als man braucht, muss man diese halt selbst vorbelegen.

1. Vorbelegung oder Änderung von Parametern.

grundsätzlich sind diese Variablen entweder durch das aufrufenden Programm belegt oder NIL. An dieser Stelle kann man nun leicht Variablen vorbelegen oder Inhalte ändern. So könnte man z.b. seine Lieblingsgröße in aSize := {?,?} festlegen, unabhängig ob etwas anderes angegeben wurde, oder einfach nur einen Vorschlag mit DEFAULT machen, wenn der Parameter NIL ist. Hiermit kann man sich viel Arbeit sparen oder aber immer gleiche Ergebnisse erzwingen.

2. Änderung von Standardverhalten

häufig kommt es hier vor, dass das Standardverhalten geändert werden soll. Fast immer wird hier z.B. der oDLG:TITLE geändert, da dieser von den Standardroutinen nur irgendwie vorbelegt ist. Auch die activate Codeblocks von SLE etc. kann man hier ändern, sodass im XppFD Quellcode keine Änderungen gemacht werden müssen, die bei der nächsten Änderung durch XppFD verloren gingen.
Oder man kann hier die Positionierung oder Bezeichnung ändern, alles ist möglich.
Zuletzt geändert von brandelh am Do, 17. Apr 2008 13:03, insgesamt 1-mal geändert.
Gruß
Hubert
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo Manfred,

ich habe das in fast allen Fällen so gemacht, daß ich die Präsentationsparameter in meiner init()-Methode ebenfalls als Parameter angebe und diese dann durchreiche.

In einigen Fällen habe ich z.B., Schriftart, Farben in meiner Subklasse vorgegeben und übergebe diese dann beim init() der Superklasse. Meine eigene init()-Methode besitzt dann diesen Parameter nicht.

Es ist also (fast) alles möglich.

Gruß Gerd
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

ich bin auch schon wieder schlauer als vorhin. Im Moment experimentiere ich gerade damit herum, eine eigene Xbrowse Klasse zu erstellen. Dabei ist mir dann endlich einmal aufgefallen, das man ja XbpColumn auch noch "zerpflücken" kann. Ich stelle mal wieder fest: Ungeahnte Möglichkeiten tun sich da wieder für mich auf. :lol:

Mühsam nährt sich das Eichhörnchen
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!!
Antworten