AGB  ·  Datenschutz  ·  Impressum  







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

Delphi objektorientiert?

Ein Thema von Rapthor · begonnen am 16. Nov 2005 · letzter Beitrag vom 30. Nov 2005
 
Horst_59

Registriert seit: 24. Okt 2005
Ort: NMS
6 Beiträge
 
#22

Re: Delphi objektorientiert?

  Alt 29. Nov 2005, 19:05
Hallo,

Zitat von alzaimar:
Merke: Auch ein Prozeduraufruf ist eine Form der Kommunikation.
Mir ist nicht klar, wer bei einem Prozeduraufruf kommuniziert?
Objekte haben eine Identität und können entsprechend Nachrichten empfangen und senden.

Beispielhaft soll eine beliebige Liste als string ausgegeben werden.
Objektorientiert kann man sich vorstellen, dass alle Objekte in der Liste die Nachricht 'AsString' verarbeiten können (die Liste selbst auch).
Delphi-Quellcode:
5 AsString == '5';
'Test' AsString == 'Test';
ACar AsString == 'Opel Kadett';
with AList do begin
  Add(5);
  Add('Test');
  Add(ACar);
end;
AList AsString == '(''5''; ''Test''; ''Opel Kadett'')'
Prozedural sähe das ganze so ähnlich aus:

Delphi-Quellcode:
AsString(5) == '5';
AsString('Test') == 'Test';
AsString(ACar) == 'Opel Kadett';

AddNumberToList(AList,5);
AddStringToList(AList,'Test');
AddCarToList(AList,ACar);
AsString(AList) == '(''5''; ''Test''; ''Opel Kadett'')'
Der Unterschied ist der Zeitpunkt, zu dem bestimmt werden kann, welcher Code ausgeführt wird, um den String zu erzeugen. Prozedural geschieht dies mit Hilfe früher Bindung, also zur Compilezeit. Das heisst, es muss eine Prozedur für jeden Variablentyp existieren, der in einen String umgewandelt werden kann. In
AsString(AList) würde über die Liste iteriert, geprüft werden, was für ein Element drin ist und die richtige Prozedur aufgerufen. Wenn plötzlich auch Flugzeuge als String ausgegeben werden sollen, dann muss
AsString(APlane) implementiert werden, und die Prozedur zur Ausgabe der Liste angepasst werden.

Objektorientiert würde der Empfänger der Nachricht (APlane) entscheiden was zu tun ist. Alle anderen können sich darauf verlassen, dass das Objekt sich selbst am besten damit auskennt, was es selbst zu tun hat und müssen lediglich die Nachricht AsString kommunizieren. Erst zur Laufzeit wird durch den Empfänger der Nachricht bestimmt, was konkret geschieht.

Freilich kann dies auch mit Delphi so implemetiert werden, allerdings nicht prozedural, sondern objektorientiert. Hat ja niemand gesagt, dass das nicht unterstützt wird.

Gruß
Sebastian
Sebastian
  Mit Zitat antworten Zitat
 


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 13:30 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