[Delphi] ontwerpmodel: toegang tot objecten

Pagina: 1
Acties:

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 12:54

Tomatoman

Fulltime prutser

Topicstarter
Op dit moment ben ik een programma aan het bouwen, waarvan de complexiteit behoorlijk begint toe te nemen. Als er bijvoorbeeld op een Save-button gedrukt wordt, moeten de geopende tabellen worden opgeslagen in een XML-document, moet de interne documentnaam worden aangepast van Unnamed naar de naam die de gebruiker heeft getypt, moet de tekst op de statusbalk worden aangepast, moet de interne variabele Modified worden veranderd in False, enzovoort.

Daarbij zijn alle units in het project betrokken en tot dusverre riepen ze elkaar allemaal aan, waardoor ik het overzicht begon te verliezen. Daarom heb ik de toegang tot objecten drastisch beperkt. Er zijn nu nog maar twee objecten die vanuit alle units mogen worden benaderd: GUI en Data (zie het schema). Alle andere objecten (in het schema alleen MainForm) kunnen alleen nog maar worden benaderd door GUI. Dat gebeurt via interfaces. Zo kent GUI wel de declaratie van de interface IMain, maar niet de declaratie van het object TMain. Dat verhindert dat GUI de statusbalk in TMain direct kan benaderen, maar staat wel toe dat GUI de informatie op de statusbalk kan updaten via de interface method IMain.UpdateStatusbar().

Afbeeldingslocatie: http://home.planet.nl/~robin.gerrets/linked/object_access.gif

Inmiddels heb ik het overzicht over mijn code weer terug en ik denk dat ik op de ingeslagen weg verder ga, maar toch vraag ik mij af hoe anderen dat doen. Daarom: wat doen jullie om in Delphi het overzicht te behouden als allerlei objecten elkaar aanroepen?

Een goede grap mag vrienden kosten.


  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 12:10
-Interfaces defenieren ?:P
-Clusteren van functies
Eigenlijk het hele UML verhaal toepassen lijkt mij.

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 12:54

Tomatoman

Fulltime prutser

Topicstarter
Ehhh, het hele UML-verhaal toepassen? Iets specifieker misschien?

Een goede grap mag vrienden kosten.


  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 12:10
tomatoman schreef op 12 oktober 2002 @ 19:21:
Ehhh, het hele UML-verhaal toepassen? Iets specifieker misschien?
Zou ik wel willen, maar ik weet eigenlijk niet hoe ik dit compleet moet uitleggen (heb het immiddels op school gehad, en een boek leg je niet uit in een paar regels).

Het komt er eigenlijk op neer, dat jij nu een probleem hebt dat een heleboel objecten elkaar staan aan te roepen, waardoor een heleboel connecties door elkaar lopen.
Als je nou 1 tussenlaag zou maken, die al je calls afhandeld (publics) dan heb je dus 1 standaard toegang tot je functies, en die kun je dan consistent door je hele programma gebruiken.
Ik weet dat dit allemaal _heel_ abstract klinkt, maar ik hoop dat je een beetje een idee hebt wat ik bedoel.

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.