![]() |
Was ist ein Objekt ?
Code:
Was ist der Untschied zwischen einer klasse und einem Object ? Außer, dass man objecte nicht createn/freen kann ?!??
{Ich meine sowas hier :}
type TBlub = object varBlub1, varblub2: typ1; // weitere Variablen, Konstanten // und Methoden ! end; Ist mir ein wenig peinlich solch eine Frage zu stellen :oops: Hätte wahrscheinlich im Info-Unterricht besser aufpassen sollen :) Achja: Ich hab schon ein wenig gesucht nur nichts gefunden :( MfG Franz |
Re: Was ist ein Objekt ?
Das war die alte OOP von TP. Sollte man nicht mehr verwenden.
|
Re: Was ist ein Objekt ?
Ist aber eigentlich mächtiger als Klassen. Objects ähneln C++-Klassen: Du kannst sie sowohl auf dem Stack als auch auf dem Heap anlegen, es gibt Vererbung, virtuelle Methoden...
|
Re: Was ist ein Objekt ?
Zitat:
|
Re: Was ist ein Objekt ?
hmm verstehe ...
EDIT: Naja, was das "mächtiger" angeht: sie sind in meinen Augen nicht flexibel ! Oder gibt es da einen weg, sie zu freen ? Danke |
Re: Was ist ein Objekt ?
Natürlich sind sie mächtiger. Du kannst sie wie Klassen behandeln, oder wie Records:
Delphi-Quellcode:
Die Syntax ist zwar ziemlich seltsam, aber es funktioniert. Objects entsprechen praktisch den erweiterten Records aus Delphi 2006 (oder gab es die schon früher? :gruebel:), zusätzlich ist aber Vererbung möglich.
TWuppdi = object
Foo: Integer; procedure Bar; constructor Create(FooVal: Integer); end; procedure TWuppdi.Bar; begin Writeln(Foo); end; constructor TWuppdi.Create(FooVal: Integer); begin Foo := FooVal; end; procedure Proc; var Wupp1: TWuppdi; Wupp2: ^TWuppdi; begin //als Record Wupp1.Foo := 5; Wupp1.Bar; //als Klasse New(Wupp2, Create(8)); try Wupp2.Bar; finally Dispose(Wupp2); end; end; |
Re: Was ist ein Objekt ?
Objects entstanden ja aus Record. Ich finde diese aber nicht mächtiger. Die erweiterten Records sind eher an diese von .Net angelegt und sollen Objects ersetzten. Die Aussage das diese mächtiger als Classes sind ist aber missverständlich da die "neue" OOP viele weitere Features besitzt. Ich hoffe ja das Klassenoperatoren auch Einzug in die Klassen hält.
|
Re: Was ist ein Objekt ?
Ohne Vererbung kann man Objects nicht ersetzen, da dann wichtige Features wie Polymorphie und virtuelle Methoden fehlen. Klar, es fehlen bei Objects einige wichtige Dinge wie die Operatoren is und as, es ist auch deutlich weniger RTTI dabei (das hindert einen auch daran, is und as nachträglich zu implementieren), aber grundsätzlich ist es ein tolles Feature, "lebendige" Objekte auf dem Stack ablegen zu können wie in C++.
|
Re: Was ist ein Objekt ?
Ich glaube, ihr antwortet gerade an der Frage vorbei. Es geht um den Unterschied Klasse / Objekt.
Eine Klasse entspricht einem Bauplan für die Daten. Eine Klasse beinhaltet Strukturen um Daten zu speichern und auch gleichzeitig Methoden um diese Daten zu manipulieren. Darin unterscheiden sich unter anderem zum Beispiel Klassen von Records. Objekte sind Instanzen in denen sich die Klassen manifestieren bzw. Objekte sind die lebenden Objekte, die dann mit den realen Daten arbeiten können. |
Re: Was ist ein Objekt ?
Luckie, es geht um das Schlüsselwort Object, nicht um Objekte im Sinne von Instanzen einer Klasse.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz