Dit is een erg lang verhaal maar ik hoop dat het hier op de goede plaats is en dat er zo op de zaterdag avond mensen zijn die zin hebben hier aandacht aan te geven. 
In het kort: Ik heb een vraag over hoe ik nette programma's schrijf.
Ik heb een tijdje geleden geleerd om bij een nieuw programma de GUI gescheiden te houden van methodes die op de achtergrond werken. Globaal houd het in dat de GUI het object kent dat naast zich zit. Zo kan het gemakkelijk methodes in dat andere object aanspreken die, zoals eerder gezegd, niet in de GUI thuishoren.
Mijn zorg is nu dat dit code opleverd die niet onafhankelijk is en is gebaseerd op het bestaan van bepaalde classes met bepaalde methodes boven zich en naast zich. En aangezien ik al eerder een programma heb geschreven dat werd beoordeeld als "spagetti"
wil ik het ook wel eens graag goed doen 
Ter verduidelijking een probleem waar ik vaak tegenaan loop...
Situatie schets
Ik heb een main waaronder een GUI en een manager hangt. (zie ook schema onderaan)
De manager zorgt voor het laden van het juiste plaatje (bekend door de <param>-tags).
De GUI zorgt voor het weergeven van het plaatje en heeft een knop om het volgende plaatje te laden.
De GUI kent de manager en de main doordat deze objecten aan hem meegegeven zijn:
De Manager kent alleen de main, op dezelfde manier meegeven.
Op deze manier kan ik gemakkelijk in de GUI bijvoorbeeld manager.loadImage(iImageNumber) aanspreken.
Maar nu voer ik dit nog verder door met het maken van meerdere layers in de GUI (JLayerdPane) waarin nieuwe objecten worden gemaakt.
3 stuks:
de background (een plaatje),
de controls (2 knoppen)
en displayImage (de laag waarin het plaatje wordt geladen).
En ook enkele van deze objecten kennen de Main en de Manager. Dit omdat controls ervoor moet zorgen dat de manager het plaatje laadt waarna DisplayImage het moet weergeven.
De totale situatie schematisch weergegeven:

Mijn vraag
Nu, gegeven de eventuele bezwaren die ik in de inleiding noemde:
is het slim, of beter gezegd netjes, om voortdurend bovenhangende objecten mee te geven naar onderen?
Of moet ik dit beperken tot GUI en Manager zodat deze over en weer objecten kunnen sturen. Terwijl in GUI een serie methodes zijn ingebouwd die zorgen dat de onderliggende classes worden aangestuurd.
En ifso, hoe moet ik er dan voor zorgen dat een event in Controls (knop ingedrukt) ervoor zorgt dat GUI een opdracht aan Manager geeft, zonder dat Controls de GUI kent?
In het kort: Ik heb een vraag over hoe ik nette programma's schrijf.
Ik heb een tijdje geleden geleerd om bij een nieuw programma de GUI gescheiden te houden van methodes die op de achtergrond werken. Globaal houd het in dat de GUI het object kent dat naast zich zit. Zo kan het gemakkelijk methodes in dat andere object aanspreken die, zoals eerder gezegd, niet in de GUI thuishoren.
Mijn zorg is nu dat dit code opleverd die niet onafhankelijk is en is gebaseerd op het bestaan van bepaalde classes met bepaalde methodes boven zich en naast zich. En aangezien ik al eerder een programma heb geschreven dat werd beoordeeld als "spagetti"
Ter verduidelijking een probleem waar ik vaak tegenaan loop...
Situatie schets
Ik heb een main waaronder een GUI en een manager hangt. (zie ook schema onderaan)
De manager zorgt voor het laden van het juiste plaatje (bekend door de <param>-tags).
De GUI zorgt voor het weergeven van het plaatje en heeft een knop om het volgende plaatje te laden.
De GUI kent de manager en de main doordat deze objecten aan hem meegegeven zijn:
code:
1
| gui = new Gui(this, this.manager); |
De Manager kent alleen de main, op dezelfde manier meegeven.
Op deze manier kan ik gemakkelijk in de GUI bijvoorbeeld manager.loadImage(iImageNumber) aanspreken.
Maar nu voer ik dit nog verder door met het maken van meerdere layers in de GUI (JLayerdPane) waarin nieuwe objecten worden gemaakt.
3 stuks:
de background (een plaatje),
de controls (2 knoppen)
en displayImage (de laag waarin het plaatje wordt geladen).
En ook enkele van deze objecten kennen de Main en de Manager. Dit omdat controls ervoor moet zorgen dat de manager het plaatje laadt waarna DisplayImage het moet weergeven.
De totale situatie schematisch weergegeven:

Mijn vraag
Nu, gegeven de eventuele bezwaren die ik in de inleiding noemde:
is het slim, of beter gezegd netjes, om voortdurend bovenhangende objecten mee te geven naar onderen?
Of moet ik dit beperken tot GUI en Manager zodat deze over en weer objecten kunnen sturen. Terwijl in GUI een serie methodes zijn ingebouwd die zorgen dat de onderliggende classes worden aangestuurd.
En ifso, hoe moet ik er dan voor zorgen dat een event in Controls (knop ingedrukt) ervoor zorgt dat GUI een opdracht aan Manager geeft, zonder dat Controls de GUI kent?
[ Voor 0% gewijzigd door mpegernie op 02-11-2002 22:49 . Reden: hmmm... rare tags ]
"The Major advances in civilization are processes that all but wreck the societies in which they occur." -A. N. Whitehead