AGB  ·  Datenschutz  ·  Impressum  







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

[OOP]: TClassList / TObjectList

Ein Thema von mytar · begonnen am 8. Sep 2004 · letzter Beitrag vom 10. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#1

[OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 11:35
  • Was ist der Unterschied zu TClassList und TObjectList.
    Ich erkenne keinen Verwendungsunterschied.
    Ich bitte um eine kurze Erklärung.
  • In welchen Fällen ist TClassList, in welchen TObjectList zu empfehlen?
    Ich bitte um ein paar Beispiele.
Danke
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 11:38
[ ] Du erwartest tatsächlich eine Antwort auf diese Frage.
[X] Du willst Dich erstmal mit dem Unterschied zwischen Klassen und Objekten vertraut machen.

Nee, mal im Ernst: Eine Klasse ist ja kein Objekt. Eine Classlist beinhaltet Klassen, eine ObjectList nunmal Objekte.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 11:52
Zitat von Phoenix:
Nee, mal im Ernst: Eine Klasse ist ja kein Objekt.
Das wär aber mal was ganz Neues... Von was meinst du denn wäre TClass abgeleitet
Natürlich ist eine Klasse ein Objekt.

Gruß,
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 11:54
Zitat von Jelly:
Natürlich ist eine Klasse ein Objekt.
Hm... In Java oder .NET: Vielleicht. Aber auf keinen Fall in ObjectPascal. Eine Klasse ist quasi ein Bauplan, ein Objekt die Umsetzung davon.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 11:59
Zitat von Delphi Hilfe:
Die in der Unit System deklarierte Klasse TObject ist der absolute Vorfahr aller anderen Klassentypen. Sie definiert nur einige wenige Methoden einschließlich eines Grundkonstruktors und -destruktors. In System ist außer TObject auch noch der Klassenreferenztyp TClass deklariert.

TClass = class of TObject; Wenn Sie in der Deklaration eines Klassentyps keinen Vorfahren angegeben, erbt die Klasse direkt von TObject. Aus diesem Grund ist die Deklaration

Delphi-Quellcode:
TMyClass = class
 ...
end;
identisch mit

Delphi-Quellcode:
type TMyClass = class(TObject)
 ...
end;
Die zweite Variante verdient jedoch aus Gründen der Lesbarkeit den Vorzug.
Das interpretier ich als ganz deutlich, daß TObject der Urvater aller Klassen ist, und jede Klasse mindestens von TObject abgeleitet ist.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 12:03
Dem widerspricht ja auch keiner. Nur du jast gesagt dass eine Klasse identisch mit einem Objekt ist.
Zitat:
Natürlich ist eine Klasse ein Objekt.
Das ist aber nicht so. Ein Objekt ist die Instanz einer Klasse im Speicher. Dich bringt das Schlüssel wort Delphi-Referenz durchsuchenclass anscheinend etwas durcheinander.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 12:17
Bitte nicht [ot], ich kenne den Unterschied zwischen Klasse und Objekt.

Ich möchte eigentlich nur Beispiele wissen, wo man eine Instanz von TClassList oder eine von TObjectList verwendet.

Eigentlich müsste man ja immer nur Objekte speichern, also Instanz von TObjectList, oder nicht?
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 12:27
TClassList dürfte für Metaklassen geeignet sein, TObjectList für normale Objekte.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#9

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 12:35
Zitat von Chewie:
TClassList dürfte für Metaklassen geeignet sein, TObjectList für normale Objekte.
Genau. So wie es Objekt-referenzen gibt, gibt es auch klassen-referenzen. type TMyClass = class of TmyObject. Du kannst zB. eine liste mit 10 verschiedensten metaklassen erstellen und in einem ritsch die TClassList durchgehen und, ohne die kalsse explizit zu kennen, 10 verschiebene object instanzieren:
ClassList[i].create
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#10

Re: [OOP]: TClassList / TObjectList

  Alt 8. Sep 2004, 13:00
Zitat von Jelly:
Zitat von Delphi Hilfe:
TClass = class of TObject; Wenn Sie in der Deklaration eines Klassentyps keinen Vorfahren angegeben, erbt die Klasse direkt von TObject. Aus diesem Grund ist die Deklaration
Delphi-Quellcode:
TMyClass = class
 ...
end;
identisch mit
Delphi-Quellcode:
type TMyClass = class(TObject)
 ...
end;
Die zweite Variante verdient jedoch aus Gründen der Lesbarkeit den Vorzug.
Das interpretier ich als ganz deutlich, daß TObject der Urvater aller Klassen ist, und jede Klasse mindestens von TObject abgeleitet ist.
Das schon. Aber eine 'Class' ist nicht von TObject abeleitet, sondern nur der Klassentyp.
Deswegen steht da ja auch: TClass = class of TObject; , wobei es hier auf das 'class of' ankommt.

Zur ClassList bzw. ObjectList:

Delphi-Quellcode:
TMyClass = Class(TObject)
end;
TMyClassClass = class of TMyClass;
...

var
   i: integer;
   Klassen: TClassList;
   Objekte: TObjectList;
begin
   Klassen := TClassList.Create;
   i := Klassen.Add(TMyClassClass);

   Objekte := TObjectList.Create;
   Objekte.Add( Klassen[i].Create );
end;
Das hat zur Folge, das in der Liste Objekte nun genau ein Element vom Typ TMyClass ist, das über ein Element der Liste Klasse vom Typ TMyClassClass instanziert wurde.

TClassList wird daher auch gerne für ClassFactories eingesetzt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 20:43 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