Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Deklarationen? Logik? (https://www.delphipraxis.net/172458-deklarationen-logik.html)

Satyr 5. Jan 2013 12:53

Deklarationen? Logik?
 
Ich hoffe ich bin mit meinem Anliegen im richtigen Unterforum.

Ich verstehe nicht so recht die Logik, warum man mit Variablen unterschiedlich umgeht.

Als Beispiel:

Delphi-Quellcode:
var
 s:String;
 i:Integer;
 P:TPoint;
begin
[..]
Die 3 Variablen kann ich dann einfach so nutzen.
Anders aber zum Beispiel bei einer TStringList:

Delphi-Quellcode:
var
 liste:TStringList;
begin
 liste := TStringList.Create;
[..]
Da verstehe ich irgendwie nicht, warum ein Unterschied gemacht wird und ich erst noch das Create brauche. Oder habe ich etwas falsch verstanden?

mkinzler 5. Jan 2013 13:06

AW: Deklarationen? Logik?
 
Im ersten Beispiel handelt es sich um einfache Typen. Im 2. Codeschnipsel um eine Klasse. Bei der deklarierten Variable handelt es sich nur um eine Referenz (Zeiger), welche auf eine Instanz der Klasse weist. Ein Objekt ( Instanz) wird durch den Aufruf dessen konstruktors erzeugt.

Satyr 5. Jan 2013 13:13

AW: Deklarationen? Logik?
 
Mh... ist das auch der Grund weshalb ich mit
Delphi-Quellcode:
liste.irgendwas
dann mehr "hilfe" habe, statt alles per Hand machen zu müssen, wie bei normalen Variablen?

mkinzler 5. Jan 2013 13:17

AW: Deklarationen? Logik?
 
Variablen einfacher Typen beinhalten "nur" daten. Klassen enthalten auch Logik ( Methoden). Ich vermute mal, dass meinst du.

Satyr 5. Jan 2013 13:22

AW: Deklarationen? Logik?
 
Ah ok, ich glaube so versteh ich es. Danke :).
Aber eine andere kleine Frage schwirrt mir im Kopf rum.

Was ist der Unterschied zwischen
Delphi-Quellcode:
Button1.Click;
und

Delphi-Quellcode:
Button1Click(nil);
Der Effekt sieht für mich irgendwie gleich aus...

Popov 5. Jan 2013 13:23

AW: Deklarationen? Logik?
 
Um das was mkinzler sagte etwas plumper auszudrücken, Pascal ist von Hause aus keine OOP Sprache. s und i sind normale variablen, eben String und Integer, also können sie einfach deklariert werden. Objekte wie liste sind dagegen ein kleines Problem. Entweder bleibt es Pascal oder man erfindet einen neue Sprache. So wie es ist, ist es eigentlich noch fast Pascal (wurde ich sagen). liste ist nur eine Adresse auf das Objekt, letztendlich ein Integer. Somit wird keine Regel verletzt. Und später in Code wird das Objekt erstellt.

Zugegeben, doppelt gemoppelt, aber als Pascal erfunden wurde, da hat man OOP vergessen. Das kam erst später dazu. Also hat man ein Kompromiss gefunden.

mkinzler 5. Jan 2013 13:35

AW: Deklarationen? Logik?
 
Zitat:

Zitat von Satyr (Beitrag 1197748)
Ah ok, ich glaube so versteh ich es. Danke :).
Aber eine andere kleine Frage schwirrt mir im Kopf rum.

Was ist der Unterschied zwischen
Delphi-Quellcode:
Button1.Click;
und

Delphi-Quellcode:
Button1Click(nil);
Der Effekt sieht für mich irgendwie gleich aus...

Im ersten Fall rufst du die für den Klickevent deklarierte Methode auf ( auf die die Property verweist). Im 2. Fall rufst du die Methode direkt auf. Ändert man nachträglich die Property auf eine andere Methode wird trotzdem die alte aufgerufen. zudem macht dies so Pronleme, wenn mehrere Buttons oder andere Komponenten die selbe Methode benutzen, da du den Sender ja nicht mitgibst.

Zitat:

Zugegeben, doppelt gemoppelt, aber als Pascal erfunden wurde, da hat man OOP vergessen. Das kam erst später dazu. Also hat man ein Kompromiss gefunden.
Man hat es nicht vergessen, sondern OOP war damals unbekannt. Wirth hat mit Pascal eine Sprache entwickelt, welche damals als erste strukturierte Programmierung einsetzte. das obektorientierte Paradigma lam erst viel später. Delphi (Objectpascal) ist eine hybride Sprache, welche OOP alternativ unterstützt. Eibfache Typen gibt es aber auch in rein obkectorienntierten Sprachen wie Java und C#.

Satyr 5. Jan 2013 13:42

AW: Deklarationen? Logik?
 
Ich danke Euch beiden :).
Jetzt finde ich die Dinge logischer, die ich schon immer nutze, weil sie funktionieren auch wenn mir nicht klar war warum *g*.

Medium 6. Jan 2013 02:16

AW: Deklarationen? Logik?
 
Hier lohnt es sich vermutlich stark, sich mal ganz allgemein ein wenig mit dem Konzept der Klassen (bzw. OOP generell) literarisch auseinanderzusetzen. Das sind grundlegende Bausteine quasi aller relevanten Programmiertools von heute. (Ich weiss, nicht alle, aber wer Delphi, Java, C++ oder C# nutzt, hat das als täglich Brot. Scripten zähle ich hier mal nicht zu Programmieren ;))


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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