Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was ist ein Objekt ? (https://www.delphipraxis.net/117892-ist-ein-objekt.html)

mr_emre_d 27. Jul 2008 15:22


Was ist ein Objekt ?
 
Code:
{Ich meine sowas hier :}

type

TBlub = object
  varBlub1, varblub2: typ1;
// weitere Variablen, Konstanten
// und Methoden !
end;
Was ist der Untschied zwischen einer klasse und einem Object ? Außer, dass man objecte nicht createn/freen kann ?!??

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

mkinzler 27. Jul 2008 15:28

Re: Was ist ein Objekt ?
 
Das war die alte OOP von TP. Sollte man nicht mehr verwenden.

Apollonius 27. Jul 2008 15:32

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...

mkinzler 27. Jul 2008 15:34

Re: Was ist ein Objekt ?
 
Zitat:

Zitat von Apollonius
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...

Mächtiger?

mr_emre_d 27. Jul 2008 15:37

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

Apollonius 27. Jul 2008 15:48

Re: Was ist ein Objekt ?
 
Natürlich sind sie mächtiger. Du kannst sie wie Klassen behandeln, oder wie Records:

Delphi-Quellcode:
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;
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.

mkinzler 27. Jul 2008 15:53

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.

Apollonius 27. Jul 2008 15:56

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++.

Luckie 27. Jul 2008 16:07

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.

Apollonius 27. Jul 2008 16:09

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 00:01 Uhr.
Seite 1 von 3  1 23      

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