Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OOP konform 2->1 (https://www.delphipraxis.net/90295-oop-konform-2-1-a.html)

Antigo 14. Apr 2007 20:46


OOP konform 2->1
 
Hi,
Ich möchte eine Funktion haben, der ich 2 Instanzen einer Klasse übergebe, und die dann eine neue Instanz der Klasse zurückgibt.
Delphi-Quellcode:
function foo(a,b:TKLasse):TKlasse;
....
c:=foo(a,b);
Wie implementiere ich das ganze jetzt OOP konform? sollte foo eine Methode von TKlasse, so dass ich dann quasi aufriefe:
Delphi-Quellcode:
function TKLasse.foo(b:TKLasse):TKLasse
...
c:= a.foo(b);
oder kann ich die funktion einfach losgelöst von der Klasse TKLasse in die selbe Unit reinpacken?

wie würdet ihr das machen.

danke schonmal :)

mkinzler 14. Apr 2007 20:56

Re: OOP konform 2->1
 
Beides ist möglich. Ich würde die Methode wählen

Muetze1 14. Apr 2007 20:56

Re: OOP konform 2->1
 
Definier dir einfach nur einen zusätzlichen Constructor in der Klasse, welche 2 Instanzen der Klasse als Parameter hat.

Antigo 14. Apr 2007 21:01

Re: OOP konform 2->1
 
Zitat:

Zitat von Muetze1
Definier dir einfach nur einen zusätzlichen Constructor in der Klasse, welche 2 Instanzen der Klasse als Parameter hat.

super, auf die Idee bin überhaupt nicht gekommen :)

allerdings gibt es verschieden Funktionen die 2 Instanzen der Klasse benötigen und eine Instanz zurückgeben. Gibts ne möglichkeit die alle unterzubringen ohne das es unübersichtlich wird?


danke schonmal an euch beide :)

Muetze1 14. Apr 2007 21:03

Re: OOP konform 2->1
 
Wenn es unterschiedliche Funktionen sind mit unterschiedlichen "Aktionen" aber gleichen Parametern, warum definierst du dir nicht einfach einen Enum der die Aktion angibt und packst den noch als 3. Parameter mit in den Aufruf?

Antigo 14. Apr 2007 21:10

Re: OOP konform 2->1
 
ok, die denkweise gefällt mir, wär ich auch nicht drauf gekommen. danke :)


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