Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gleiche Objekte in Zusammenarbeit? OOP-4-dummies (https://www.delphipraxis.net/103451-gleiche-objekte-zusammenarbeit-oop-4-dummies.html)

everdream 15. Nov 2007 21:54


Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich hab ne Frage zur OOP,...

Ich möchte mehrere Objekte einer Klasse erzeugen und diese dann in meinem Hauptprogramm handeln. Ich frage mich, ob ein Objekt auf's andere zugreifen kann, obwohl sie ja theoretisch nichts voneinander wissen.

Ist sowas nur mit dem Zwischenschritt über die darüberliegende Ebene, also das Hauptprogramm, zu lösen oder gibt es auch einen eleganteren weg?

habe das ganze nochmal aufgemalt, zur besseren Verständlichkeit. Ich drücke mich gelegentlich leider unzureichend aus :angel2:


Vielen Dank schonmal!

mkinzler 15. Nov 2007 21:57

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Du könntest der Klasse ja einen 'Content' spendieren.

everdream 15. Nov 2007 22:03

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Öhm, najaaa,... Warum nicht? Wo erfahre ich, was das is und wie es das macht, was ich will?

mkinzler 15. Nov 2007 22:06

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Andere Sprachen, wie z.B. Java haben einen classcontent. D.H die Klasse kennt alle ihre Instanzen. Das könntest du nachbauen. Im Konstruktor müsstest du die Instanz dann in eine Liste o-ä- Schreiben, dann könntest du zur Laufzeit von jedem Objekt auf die anderen Objekte gleichen Typs zugreifen.

everdream 15. Nov 2007 22:10

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Hm, also ne Art Liste mit Verweisen? Klingt irgendwie nach patchwork, find ich...

Für sowas muss es doch ne Lösung geben, die in Delphi so mehr oder weniger schon vorgesehen ist. Wie würdet ihr das denn machen, wenn ihr halt irgendwas schreiben wolltet, wo die Instanzen in irgendeiner Form auswirkungen aufeinander haben? Simulationen oder so.

Pfoto 15. Nov 2007 22:17

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Hallo everdream!

ich würde versuchen, die Abhängigkeiten zwischen Objekten so gering wie möglich halten,
um bei nachträglichen Änderungen nicht Huddel zu bekommen.

Was ich in meinem Programm mache, ist eine Schnittstelle zu übergeben
(dessen Instanz natürlich auch ein Objekt darstellt). Aber so kannst du
die Methode der Schnittstelle aufrufen und klammerst dich nicht direkt an
eine Methode des Objektes.

Hoffe, ich habe Dein Anliegen richtig verstanden...

Gruß
Pfoto

everdream 15. Nov 2007 22:21

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Zitat:

Zitat von Pfoto
...ist eine Schnittstelle zu übergeben (dessen Instanz natürlich auch ein Objekt darstellt).

Das versteh ich noch nicht ganz. Soll ich da ein weiteres Objekt schaffen?

Pfoto 15. Nov 2007 22:46

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
Zitat:

Zitat von everdream
Zitat:

Zitat von Pfoto
...ist eine Schnittstelle zu übergeben (dessen Instanz natürlich auch ein Objekt darstellt).

Das versteh ich noch nicht ganz. Soll ich da ein weiteres Objekt schaffen?

Ja, ein gemeinsames Objekt, von dem du Objekt A ableitest
und das Objekt B z.B. als Parameterangabe aufnehmen kann.

Ein gutes Beispiel ist das sog. Command-Pattern.

Mal ganz grob:

Delphi-Quellcode:
TCommand = class
public
  procedure execute;
end;

TKonretesKommando = class(TCommand)

Wenn nun ein anderes Objekt, z.B. ein Thread
ein Objekt der Klasse TCommand übergeben bekommt,
kann dieser Thread das Kommando ausführen,
ohne konret etwas von diesem wissen zu müssen.

Du kannst also damit sehr flexibel auch andere
Objekte übergeben oder die Funktionalität des
Kommandos ändern -- und dem Thread-Objekt in diesem
Beispiel, ist das völlig schnuppe.


Gruß
Pfoto

everdream 15. Nov 2007 22:52

Re: Gleiche Objekte in Zusammenarbeit? OOP-4-dummies
 
:gruebel: Wie genial... da werde ich mir jetzt erstmal einige Gedanken drum machen und dann irgendwann auch mal schlafen gehen xD

Vielen Dank erstmal für die Tipps! :-D :-D


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