Seite 1 von 1

eigene (abgeleitete) Klassen und Parameter

Verfasst: Do, 17. Apr 2008 11:16
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

Re: eigene (abgeleitete) Klassen und Parameter

Verfasst: Do, 17. Apr 2008 13:00
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.

Verfasst: Do, 17. Apr 2008 13:00
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

Verfasst: Do, 17. Apr 2008 13:12
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