AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language OOP: Designproblem, abhängige Klassen entwirren
Thema durchsuchen
Ansicht
Themen-Optionen

OOP: Designproblem, abhängige Klassen entwirren

Ein Thema von alzaimar · begonnen am 25. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 08:45
Hallo,

ich sitze gerade an einer Klassenbibliothek für einen Reportgenerator. Ich habe eine 'Oberklasse', die als Controller fungiert (globale Einstellungen, Nachschlagelisten etc.). Jede Klasse meiner Bibliothek hat einen Verweis auf diese Oberklasse, ungefähr so:

Delphi-Quellcode:
Type
  TMasterClass = Class;
  TSomeItem = Class
  fMaster : TMasterClass;
  End;

  TAnotherItem (TSomeItem)
  End;

  TSomeItemList = Class (TList)
  ...
  End;

  TAnotherItemList = Class (TList)
  ...
  End;

  ...
  TMasterClass = Class
  Private
    fSomeItemList : TSomeItemList;
    fAnotherItemList : TAnotherItemList;
  Public
    Property SomeItemList : TSomeItemList Read fSomeItemList;
    Property AnotherItemList : TAnotherItemList Read fAnotherItemList;
  End;
Nun wird die Unit langsam ziemlich lang und mir fällt keine Methode ein, wie ich das entwirren kann, denn die Basisklasse 'TSomeItem', von der alle anderen Klassen abgeleitet werden, enthält ja einen Verweis auf die Masterklasse, die in der logischen Struktur ganz oben/unten ist.

Ich hatte in einem früheren Verweis einen abstrakten Vorfahren der 'TMasterClass' in einer eigenen Unit deklariert und so die zyklischen Abhängigkeiten entwirrt, nur dann musste ich bei jeden Zugriff auf die Instanz der Masterklasse auf die konkrete Klasse casten, was programmiertipptechnisch blöd und imho kein gutes OOP-Design ist.

Also: Gibt es ein Pattern, ein paar Grundregeln, wie ich diese Geschichte elegant aufdröseln kann? Wie kann ich die einzelnen Nachfahren der 'TSomeItem' in eigene Units packen. Geht das überhaupt? Wenn ich mir die Unit 'DB' anschaue, meine ich fast, das das nicht so einfach ist...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von iKilledKenny
iKilledKenny

Registriert seit: 25. Apr 2007
Ort: Bergstrasse
49 Beiträge
 
Delphi 5 Professional
 
#2

Re: OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 08:52
Prinzipiell schon, wenn du die Funktionalität von TMasterClass in einem Interface kapselst, deinen einzelnen Items (TSomeItem, TAnotherItem) dann das Interface anstelle der konkreten Klasse übergibst und TMasterClass das Interface implementieren lässt.

In Delphi ist das ein bischen mühevoller als z.B. in C#, du musst dann TMasterClass von TInterfacedObject ableiten, aber es geht.

Wenn es allerdings nur darum geht, Referenzen auf seinen "Papa" zu haben, dann habe ich das immer mit TObject und einem TypeCast gemacht.

Delphi-Quellcode:
  TSomeItem = Class
    fMaster : TObject;
  End;
Alexander Stork
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 09:03
Dann müsste ich aber konsequenterweise alles über Interfaces lösen. Uff.

Vielleicht doch TypeCasting..
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von iKilledKenny
iKilledKenny

Registriert seit: 25. Apr 2007
Ort: Bergstrasse
49 Beiträge
 
Delphi 5 Professional
 
#4

Re: OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 09:29
Es kommt halt drauf an, ob die einzelnen Items wirklich ihren "Papa" kennen müssen, oft geht es ja auch ohne diese Referenz.
Alexander Stork
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: OOP: Designproblem, abhängige Klassen entwirren

  Alt 25. Jun 2008, 10:57
Des prüfe ich erstmal, vielleicht habe ich es mir zunächst zu einfach gemacht und steh nun vor dem Dilemma.

Ich bedanke mich zunächst für deine Denkanstöße.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 11:56 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