AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Stilfrage - trennen "verarbeitenden Code" und Grafik/Dialoge
Thema durchsuchen
Ansicht
Themen-Optionen

Stilfrage - trennen "verarbeitenden Code" und Grafik/Dialoge

Ein Thema von VizeTE · begonnen am 8. Apr 2005 · letzter Beitrag vom 19. Apr 2005
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Stilfrage - trennen "verarbeitenden Code" und Graf

  Alt 8. Apr 2005, 14:50
Hallo Leute,

für die Wiederverwendbarkeit von Code ist es ja bekanntlich sehr förderlich wenn man die Benutzerschnittstelle (Formulare, Dialoge, ...) vom eingentlichen verarbeitenden Code trennt.
Da habe ich so kleine Stilprobleme und würde mich freuen wenn ihr mich an eurer Erfahrung teilhaben laßt.

Mal etwas konrekter:

Ich habe mein Hauptformular. Dies benutzt für die eigentlichen Arbeiten ein Objekt. Nun ist es aber hin und wieder erforderlich, daß der Benutzer für die Arbarbeitung Daten eingeben muß. Da das Benutzerinterface vom Code getrennt werden soll kommt es nicht in Frage, daß das Objekt für die Dialoge verantwortlich ist. Ich habe nun 3 Lösungsansätze wobei ich aber von keinen der Möglichkeiten vollends überzeugt bin.

1. Ich definiere ein Event (procedure of object), welches im Hauptformular bearbeitet wird. Dort wird der benötigte Dialog aufgerufen.
Vorteil:
- Das Objekt muß sich nicht im entferntesten um den Dialog kümmern
Nachteile:
- die Parameterlisten können recht lang werden
- die Events müssen im Hauptformular behandelt werden

2. Ich übergebe beim Aufruf einer Methode des Arbeitsobjektes die erforderliche Dialogklasse. In der Methode kann mit dem Dialog gearbeitet werden
Vorteile:
- ich habe nicht das Parameterproblem
- der Dialog kann ausgetauscht werden sofern die Schnittstelle kompatibel
Nachteile:
- die Trennung von Interface und Code wird aufgeweicht
- ich muß bei jedem Aufruf alle nötigen Dialoge übergeben, auch wenn diese nur manchmal tatsächlich benutzt werden

3. Ähnlich Ansatz 2 aber das Objekt bekommt eine Eigenschaft pro Dialog. Im Hauptformular wird der Dialog an das Objekt "angehangen".
Vorteile:
- ebenfalls wird das Parameterproblem umgangen
- Dialog kann ausgetauscht werden sofern die Schnittstelle kompatibel
Nachteile:
- der Dialog muß angehange sein damit der Ablauf funktionieren kann
- Trennung von Interface und Code wird auch hier aufgeweicht

So ich hoffe ihr versteht was ich meine. Für Anregungen, Meinungen usw. bin ich dankbar.

Ciao
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#2

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 8. Apr 2005, 14:57
Noch eine Variante:

Baue Dir ein Dialogobjekt, das Du mit Deinem Rechenobjekt verlinkst. Dann hast Du im Formular nur die beiden Objekte liegen. Du könntest eventuell die Texte auch frei definierbar machen. Letzlich hängt das aber alles daran, wie häufig Du diesen Code wiederverwendest.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 8. Apr 2005, 15:06
mmm...entspricht dieser Ansatz nicht meiner Lösung Nr 3, spricht das der Dialog per Property/Eigenschaft an das Objekt gehangen wird? (So hätte ich "linken" in diesen Zusammenhang umgesetzt)
Oder verstehe ich dich da falsch?

Ich weiß nicht ob das eindeutig rübergekommen ist...es soll nicht nur ein Ja/Nein-Dialog verwendet werden (Wobei dieser einfach Ansatz nicht auschgeschlossen werden muß). Aber auch komplexe Anwendungsfälle müssen abgedeckt werden.
  Mit Zitat antworten Zitat
Grendel
(Gast)

n/a Beiträge
 
#4

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 8. Apr 2005, 15:38
Du könntest deine Dialoge von einer gemeinsamen Basisklasse ableiten und diese als Typ des Propertys nutzen. Damit muss das Object nur die Basisklasse nicht aber die konkrete Implementierung kennen.
Über abstrakte Methoden oder Interfaces kannst Du dann die Kommunikation erschlagen.

Eine weitere Möglichkeit ist der Einsatz des MVC-Pattern (Model, View, Controller). Dabei ist der Controller die Schittstelle zwischen datenhaltendem Model und darstellenden View.

Bis neulich ...
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 12. Apr 2005, 09:28
Die Idee mit der Basisklasse wollte ich mit meinen Lösungsansätzen 2 & 3 ansprechen. Ich bin mir aber selbst noch nicht so recht klar ob das für mich eine gute Lösung ist. (nicht auf ein konkretes Problem bezogen sondern ob ich für mich sagen kann "das ist die Lösung")

Dieses MVC-Pattern klingt auch interessant. Ich habe schon mal versucht mir einen groben Überblick zu verschaffen. Das geht dann wohl mehr auf den Lösungsansatz 1 zurück.
Werde ich mir aber bei Gelegenheit nochmal genauer anschaun

Danke
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 12. Apr 2005, 09:35
Versuch doch einfach mal alle Lösungen. Die erste ist meistens nicht die Beste, aber nach und nach wirst du dich der perfelten Lösung immer mehr nähern. Fang an!

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#7

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 12. Apr 2005, 09:44
Zitat von Grendel:
Eine weitere Möglichkeit ist der Einsatz des MVC-Pattern (Model, View, Controller). Dabei ist der Controller die Schittstelle zwischen datenhaltendem Model und darstellenden View.
Hätte ich jetzt auch vorgeschlagen.
Interessantes Beispiel:

Der Controller selber kennt das Business-Object (das 'Rechenobjekt') und die View (also alle Forms und Dialoge).

Je nach Anwendungsart kann der gleiche Controller daher z.B. einen Dialog aufpoppen lassen oder aber gar in einer Webanwendung eine neue html-Seite generieren. Sollte die Anwendung komplett ohne Interaktion laufen (Batch-Betrieb) könnte der Controller sogar dazu angewiesen werden, immer nur die gleichen Informationen zu liefern die ein einziges mal vorgegeben werden etc.

Ich denke, das ist der sauberste Ansatz.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 19. Apr 2005, 08:20
Zitat von freak4fun:
Versuch doch einfach mal alle Lösungen. Die erste ist meistens nicht die Beste, aber nach und nach wirst du dich der perfelten Lösung immer mehr nähern. Fang an!
Das habe ich natürlich schon gemacht aber das war nicht so richtig erfolgreich. Funktioniert hat es schon aber der Lösungsweg hat mich nicht so richtig überzeugt.

Zitat von Phoenix:
Der Controller selber kennt das Business-Object (das 'Rechenobjekt') und die View (also alle Forms und Dialoge).

Je nach Anwendungsart kann der gleiche Controller daher z.B. einen Dialog aufpoppen lassen oder aber gar in einer Webanwendung eine neue html-Seite generieren. Sollte die Anwendung komplett ohne Interaktion laufen (Batch-Betrieb) könnte der Controller sogar dazu angewiesen werden, immer nur die gleichen Informationen zu liefern die ein einziges mal vorgegeben werden etc.
Wenn ich das MVC-Pattern richtig verstanden habe dann kenn aber das Buisnessobjekt nicht den konkreten Controller. Nur eine abstrakte Version, die über Veränderungen benachrichtigt werden kann.
Und da liegt, meiner Ansicht nach, das Problem. Ich möchte gern vom Businessobjekt einen Dialog/Formular aufpoppen lassen. Hier weiß ich keinen richtig guten Ansatz. Mir fallen nur die Lösungswege aus meinem ersten Posting ein.

(Wo liegt eigentlich der Unterschied zum Observer-Pattern? Das MVC scheint mir eher eine konkrete Anwendung des Oberservers)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Stilfrage - trennen "verarbeitenden Code" und

  Alt 19. Apr 2005, 09:24
Zitat von VizeTE:
Ich möchte gern vom Businessobjekt einen Dialog/Formular aufpoppen lassen.
Dann hast du keine MVC-Architektur mehr.

Zitat von VizeTE:
Wo liegt eigentlich der Unterschied zum Observer-Pattern? Das MVC scheint mir eher eine konkrete Anwendung des Oberservers
Der Observer dient der Koordinierung von aktiven Objekten. Der Controller der MVC-Architektur ist kein Observer, sondern die Befehlsschnittstelle deiner Anwendung.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:15 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