Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vererbung in Delphi (https://www.delphipraxis.net/66273-vererbung-delphi.html)

Christian18 27. Mär 2006 16:48


Vererbung in Delphi
 
Hallo,

ich bin gerade mal wieder dabei mich mit Objektorientierter Programmierung (kurz OOP) zu beschäftigen. Ich will eine Mutter Klasse erstellen in der alle Informationen wie zum Beispiel:

- Application Name
- Standard Fenster (Breite, Höhe, Position, ...)

fest deklariert werden. In der Sub Klasse sollen dann diese Eigenschaften genutzt werden können. Meine Frage ich jetzt, ob dies so üblich ist, oder ob man sowas anderes realisiert. Ich meine ich glaube ich spare mir sehr viel Tipp arbeit, wenn ich eine Sub Klasse habe und diese ein Fenster erzeugen soll.
So jetzt zur realisierung. Habt ihr da ein paar vorschläge für mich wie ich das machen kann???

Vielen Dank im vorraus!

Mit freundlichen Grüßen

Christian18

3_of_8 27. Mär 2006 16:53

Re: Vererbung in Delphi
 
IMHO eher unüblich, aber egal.

Delphi-Quellcode:
type
  TMyParentClass=class
  private
    {Nur in dieser Klasse sichtbar}
  protected
    {Nur in dieser und in abgeleiteten Klassen sichtbar}
  public
    {Immer sichtbar}
    procedure DoFoo; dynamic;
  published
    {Auch im Objektinspektor sichtbar}
  end;

  TMyChildClass=class(TMyParentClass)
  public
    procedure DoFoo; override;
  end;
So geht Ableitung/Vererbung

Delphi-Quellcode:
type
  TApplicationInfo=class
  public
    ApplicationName: String;
    StdX, StdY, StdWidth, StdHeight: Integer;
  end;

Christian18 27. Mär 2006 16:56

Re: Vererbung in Delphi
 
Hallo,

erst einmal vielen dank für die schnelle antwort. und was muss ich haben, damit die Sub Klasse zum Beispiel auf den AppNamen der Mutter Klasse zugreifen kann???

MFG Christian18

mkinzler 27. Mär 2006 17:01

Re: Vererbung in Delphi
 
Die Attribute der "Mutterklasse" sind direkt auch Attribute der "Kindklasse" wenn sich die Klassendefinition der Kindklasse in der selben Unit befindet. Sonst müssen die Attribute/Methoden protected sein

Khabarakh 27. Mär 2006 17:09

Re: Vererbung in Delphi
 
@3_of_8: Wenn du Beispielcode postest, solltest du ihn auch erklären ;) .
Z.B. warum du...
Zitat:

Zitat von 3_of_8
Delphi-Quellcode:
    procedure DoFoo; dynamic;

...hier dynamich statt virtual verwendest.
Zitat:

Delphi-Quellcode:
type
  TApplicationInfo=class
  public
    ApplicationName: String;
    StdX, StdY, StdWidth, StdHeight: Integer;
  end;

...und hier keine Propertys verwendest :shock: . und keinen F-Präfix.

Christian18 27. Mär 2006 17:20

Re: Vererbung in Delphi
 
Hallo,

eine Frage habe ich mal no. Wenn ich die Tochterklasse erzeuge, wird dann automatisch auch die Mutterklasse erzeugt???

MFG Christian18

mkinzler 27. Mär 2006 17:23

Re: Vererbung in Delphi
 
Nein, warum auch! Die Tochterklasse hat ja alle Eigenschaften geerbt.
BTW. du solltest mal dein Wissen über OOP/Vererbung überprüfen.

mkinzler 27. Mär 2006 18:19

Re: Vererbung in Delphi
 
Ich habe mir deine Frage nochmal durchgelesen
Zitat:

...In der Sub Klasse sollen dann diese Eigenschaften genutzt werden können.
Willst du nun Eigenschaften veerben, wie der Betreff vermuten lässt? Oder willst du eine klasse in eine andere einbinden (Sub-classing)?

3_of_8 27. Mär 2006 19:15

Re: Vererbung in Delphi
 
Zitat:

Zitat von Khabarakh
...hier dynamich statt virtual verwendest.

Dynamic, virtual, ich wollte es für einen Anfänger nicht nur noch komplizierter machen. Außerdem steht das in der OH.

Und Propertys, F-Präfix sind in diesem einfachen Fall auch unnötig. Theoretisch wäre ein Record an dieser Stelle eh besser.

Khabarakh 27. Mär 2006 19:29

Re: Vererbung in Delphi
 
Zitat:

Zitat von 3_of_8
Zitat:

Zitat von Khabarakh
...hier dynamich statt virtual verwendest.

Dynamic, virtual, ich wollte es für einen Anfänger nicht nur noch komplizierter machen.

Dann nimm den Standard, nämlich virtual ;) .

Zitat:

Und Propertys, F-Präfix sind in diesem einfachen Fall auch unnötig.
Tut mir leid, aber dann schreibst du nicht (sauber) objektorientiert. Und da der Autor genau das lernen will, sollte man solchen Prozedural-OOP-Mischmasch in Beispielcodes vermeiden.
Zitat:

Theoretisch wäre ein Record an dieser Stelle eh besser.
Stimmt, damit kann man so gut OOP üben :roll: .

inherited 27. Mär 2006 19:42

Re: Vererbung in Delphi
 
Zitat:

Zitat von Khabarakh

Zitat:

Theoretisch wäre ein Record an dieser Stelle eh besser.
Stimmt, damit kann man so gut OOP üben :roll: .

Aber er wollte auch wissen, wie man es eigentlich machen würde, also können wir ihm doch raten, einen record zu benutzen :roll:

Khabarakh 27. Mär 2006 19:58

Re: Vererbung in Delphi
 
Zitat:

ich bin gerade mal wieder dabei mich mit Objektorientierter Programmierung (kurz OOP) zu beschäftigen.
Soweit ich ihn verstanden habe, ging es ihm allein darum, ob sein Weg der ideale Weg mithilfe der objektorientieren Programmierung, die er doch üben will, sei.
Was nun besser ist, kann man bei so wenig Informationen sowieso nicht festlegen.

Thorben77 27. Mär 2006 20:38

Re: Vererbung in Delphi
 
Auch wenns nicht 100%ig zum Thema ist:
Zitat:

Zitat von inherited
Aber er wollte auch wissen, wie man es eigentlich machen würde, also können wir ihm doch raten, einen record zu benutzen :roll:

Wer sagt, dass man es eigentlich nicht so macht, wie Khabarakh sagt :?: :roll:

Hansa 27. Mär 2006 21:23

Re: Vererbung in Delphi
 
Ich gehe mal hiervon aus :

Zitat:

Zitat von Christian18
- Application Name
- Standard Fenster (Breite, Höhe, Position, ...)

fest deklariert werden. In der Sub Klasse sollen dann diese Eigenschaften genutzt werden können.

Wegen eingestandenem Null Plan : dann eben bei Null anfangen. Nehme eine Form und schmeiße irgendwas drauf. Positioniere sie usw. Nun schiebst Du die in die Objektablage (rechte Maustaste, so benennen, daß man sie auch wiederfindet). Dann auf neu -> Weitere die Form suchen, anklicken und ganz wichtig : unten "vererben" auswählen ! Und nun guck Dir die neue Form an, also den Source. Das sind nur ein paar Zeilen. Die ist quasi leer. Als nächstes würde ich dann der Ur-Form ein spezielles Ereignis verpassen OnKeyPress oder so und das mit virtual deklarieren und das dann in der zweiten mit override neu deklarieren. Und nun gehe mal hin und verschiebe auf der ersten Form ein Steuerelement : es wird in der zweiten Form genauso aussehen. D.h. die Änderung wurde vererbt. Die Objektablage eignet sich ganz hervorragend für Anfänger, weil man direkt ein visuelles Ergebnis sieht. Und lasse Dich von Begriffen wie dynamic usw. nicht verwirrend. Das ist am Anfang völlig irrelevant. Wichtig ist da eher inherited, virtual und dann override. Aber auch das kommt nach dem grundlegenden Verständnis von Class.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz