AGB  ·  Datenschutz  ·  Impressum  







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

Klasse oder Record auf sich selbst?

Ein Thema von hronny · begonnen am 16. Mär 2009 · letzter Beitrag vom 29. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#1

Klasse oder Record auf sich selbst?

  Alt 16. Mär 2009, 23:07
Was ich möchte steht bestimmt schon irgendwo im Forum nur finde ich es nicht. Vielleicht habe ich auch nur einen Denkfehler. Ich möchte ein Record (oder Klasse egal) erzeugen, die wiederum sich als Eigenschaft hat. Ich dachte damit kann ich so eine Art Hierarchie erzeugen, so ähnlich wie es bei XML ist.
Delphi-Quellcode:
  TGroups = class(TObject)
    id: Integer;
    name: String;
    main: Integer;
    fgroup_sorted: Boolean;
    SubGroups: Array of TGroups;
  end;
Oder macht man das ganz anders?
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Klasse oder Record auf sich selbst?

  Alt 16. Mär 2009, 23:15
Zitat von hronny:
Ich dachte damit kann ich so eine Art Hierarchie erzeugen...
Du kannst dir das Leben einfach machen und von TComponent ableiten (TGroups = class(TComponent)).
TComponent hat die Properties Components[] und ComponentCount.
Damit kann jedes TComponent-Objekt beliebig viele Unterkomponenten enhalten.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Klasse oder Record auf sich selbst?

  Alt 16. Mär 2009, 23:25
Das ist soweit ok, allerdings würde ich mindestens noch einen Destruktor spendieren, der die enthaltenen Objekte freigibt. Und ich würde die Eigenschaften besser schützen, das ist ja gerade der Vorteil einer Klasse gegenüber einem Record.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 02:36
Zitat von hronny:
.. Ich möchte ein Record (oder Klasse egal) erzeugen, die wiederum sich als Eigenschaft hat.
Hallo,

kein Problem mit einer Klasse, und gut geeignet für Baumstrukturen. Beispiel:

Delphi-Quellcode:
type

  TCPAObject = class;

  TCPARootObject = class;

  TCPADataObject = class
    ObjCode : TCPACodeStr;
    Root : TCPARootObject;
    Parent : TCPADataObject;
    Next : TCPADataObject;
    KeyWord : TCPAKeyWordStr;
    Depth : integer;
 {$IFDEF DebugWindow} SeqNumber : integer; {$ENDIF}
    constructor create (pRoot : TCPARootObject; pParent : TCPAObject);
    procedure GetNextObject (var CO : TCPADataObject);
    end;

  TCPAObject = class (TCPADataObject)
    SubKeyWord : TCPAKeyWordStr;
    ItemNumber,StringNumber : integer;
    ActDetail : TCPADataObject;
    function NextChar : Char;
    procedure UnGetChar;
    ....
Hier wird nur das Root-Objekt erzeugt und eine XML-artig strukturierte (Text)Datei übergeben, dann erzeugen sich die Objekte selbst (abhängig von ObjCode) bis die Datei abgearbeitet ist.

Gruss Reinhard
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 20:14
Danke, das sind ja eine Menge Antworten in der kurzen Zeit . Jetzt muss ich mal hier durchspielen, was am besten ist.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#6

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 22:12
Ich glaube das was du suchst sind Listen:

Delphi-Quellcode:
PMeineListe = ^TMeineListe;
TMeineListe = record
  Wert1: String;
  Wert2: Integer;
  Selbst: PMeineListe;
end;
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 22:16
Aber ein Zeiger in der Instanz selber auf die eigene Instanz ist doch total sinnlos. Er wird eher Hier im Forum suchenverkettete Listen meinen.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#8

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 22:17
Vielleicht liegt das jetzt an meinen Geschmack und die OOP-Fetischisten werden mich jetzt steinigen , aber ist zur Verwaltung von Bäumen nicht eine Klasse, die einen Zeiger auf den Root kapselt und als Aufbau des Baums Records die aufeinander Zeiger enthalten sinnvoller? Bei der Benutzung von außen (außerhalb dieser Klasse) hat man dann trotzdem nur mit einem schönen Interface der Klasse zu kämpfen, während sie innen organisiert sein kann, wie sie will, und innen erspart man sich den nicht unbeträchlichen Overhead, für jedes Element ein Objekt zu erzeugen.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#9

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 22:18
Lol .. wer sagt dann das die Instanz auf sich "selbst" zeigt ?! Damit meinte ich nur, dass es vom selben Typ ist! Du könntest genauso Next, Previous hinschreiben .. das ist nukke.

MfG
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Klasse oder Record auf sich selbst?

  Alt 17. Mär 2009, 22:23
@Cyf:
Das würde aber nicht dem Ansatz von OOP entsprechen
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  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 04:22 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