AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse in Klasse

Ein Thema von LoL · begonnen am 3. Jun 2005 · letzter Beitrag vom 3. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
LoL
(Gast)

n/a Beiträge
 
#1

Klasse in Klasse

  Alt 3. Jun 2005, 11:11
hi

Ich habe eine Klasse die ich von TLineSeries abgeleitet habe. Als eigenschaft habe ich eine andere Klasse asl Eigenschafts-kontainer von TPersistent abgeleitet. Wie kann ich nun in einer Funktion der Klasse von TPersistent auf die Funktionen der Übergeorneten Klasse zugreifen?

Delphi-Quellcode:
type
  TProcessDescription = class(TPersistent)
  private
    {eigenschaften}
  public
    procedure machwas;
  end;

  TdddLineSeries = class(TLineSeries)
  private
    { Private declarations }
    FProzDesc : TProcessDescription;
    procedure SetProzDesc(Value : TProcessDescription);
  protected
    { Protected declarations }
  public
    { Public declarations }
    property ProzDesc : TProcessDescription read FProzDesc write SetProzDesc;

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
  end;

procedure TProcessDescription.machwas;
begin
  //auf TdddLineSeries zugreifen?
end;
//////////////////////////////////////////////////////////////////////////////
procedure TdddLineSeries.SetProzDesc(Value : TProcessDescription);
begin
  if not(CompareMem(@Value, @FProzDesc, sizeof(Value))) then
    FProzDesc := Value;
end;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Klasse in Klasse

  Alt 3. Jun 2005, 11:25
Hi,

Dir fehlen irgendwie die Grundlagen zur objekt-orientierten Programmierung.
Lies mal: http://www.dsdt.info/grundlagen/sprache/oo3.php
Thema Vererbung, weiterlesen bis virtuelle Methoden.

Der Konstruktor von TdddLineSeries ist übrigens nicht richtig; nur Klassen, die von TComponent
abgeleitet wurden haben den Übergabeparameter AOwner.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: Klasse in Klasse

  Alt 3. Jun 2005, 11:32
TdddLineSeries kennt TProcessDescription, weil das da deklariert wird.

TProcessDescription kennt TdddLineSeries allerdings nicht, da TdddLineSeries eine erbende Klasse von TProcessDescription ist. Eine Klasse kennt immer nur die Methoden/Variablen/etc. der übergeordneten Klasse.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#4

Re: Klasse in Klasse

  Alt 3. Jun 2005, 11:49
Du könntest beim Erstellen von FProzDesc eine Referenz auf das TdddLineSeries-Objekts mitgeben und im FProzDesc speichern. Dann kannst du auf die öffentlichen Methoden des TdddLineSeries-Objekts zugreifen.
Ob das aber so besonders sinnvoll ist wage ich zu bezweifeln. Das Ganze führt auf Dauer doch nur zu Chaos und hebelt irgendwie die OOP aus.
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#5

Re: Klasse in Klasse

  Alt 3. Jun 2005, 13:35
Hmm nun wie macht man das denn dann eigentlich grunsätzlich wenn man in ne Komponente eine Property unterbringen will die wiederrum untereigenschaften enthält die ovn unterschiedlichen typen sind? Das dient ja im Prinzip nur zur übersihtlichkeit da man die eigenschaften die zusammengehören gruppiert. Das sind doch dann auch Klassen oeder wie wird das gemacht?
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#6

Re: Klasse in Klasse

  Alt 3. Jun 2005, 13:43
Ich bin nicht sicher ob ich dich hier richtig verstehe, aber wenn du nur Eigenschaften gruppieren willst, würde sich doch auch ein Record anbieten
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Klasse in Klasse

  Alt 3. Jun 2005, 13:44
Hallo
flogo hat den richtigen Ansatz geliefert.
So wird der Ansatz umgesetzt:
Delphi-Quellcode:
type
  TdddLineSeries = class; // forward Deklaration von TdddLineSeries

  TProcessDescription = class(TPersistent)
  private
    {eigenschaften} 
    FParent : TdddLineSeries;
  public
    constructor Create(aParent : TdddLineSeries);
    procedure machwas;
  end;

  ...

  TdddLineSeries = class(TLineSeries)

  constructor TProcessDescription .Create(aParent : TdddLineSeries);
  begin
  ...
    FParent:=aParent;
  ...
  end;

  ...
  constructor TdddLineSeries.Create(...);
  begin
  ...
  FProcessDescription:=TProcessDescription.Create(Self);
  ...
  end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#8

Re: Klasse in Klasse

  Alt 3. Jun 2005, 14:02
Danke sehr!
funktioniert wunderbar
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#9

Re: Klasse in Klasse

  Alt 3. Jun 2005, 14:18
Zitat von LoL:
hi

Ich habe eine Klasse die ich von TLineSeries abgeleitet habe. Als eigenschaft habe ich eine andere Klasse asl Eigenschafts-kontainer von TPersistent abgeleitet. Wie kann ich nun in einer Funktion der Klasse von TPersistent auf die Funktionen der Übergeorneten Klasse zugreifen?

Delphi-Quellcode:

procedure TdddLineSeries.SetProzDesc(Value : TProcessDescription);
begin
  if not(CompareMem(@Value, @FProzDesc, sizeof(Value))) then
    FProzDesc := Value;
end;
darauf kannst auch verzichten ... ein einfaches

Delphi-Quellcode:
if FProzDesc <> Value then
  FProzDesc := Value;
tuts auch.
achja und "sizeof(value)" wäre ja "sizeof(classinstance)" klassen sind pointer und die größe von pointern wäre 4 - also würdest du WENN du das schon mit dem comperemem so machst nur die ersten 4 bytes vergleichen
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#10

Re: Klasse in Klasse

  Alt 3. Jun 2005, 15:02
Zitat von barf00s:
achja und "sizeof(value)" wäre ja "sizeof(classinstance)" klassen sind pointer und die größe von pointern wäre 4 - also würdest du WENN du das schon mit dem comperemem so machst nur die ersten 4 bytes vergleichen
Nur der Genauigkeit wegen: Es gibt Objektinstanzen(TObject.Create) und Klasseninstanzen (TClass.Create), beides mal wird ein Pointer zurückgeliefert, aber TClass.Create.Create macht erst das was TObject.Create macht, nämlich ein Objekt erzeugen.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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