[ALG] Design van objecten die elkaar kennen

Pagina: 1
Acties:

  • jopie1983
  • Registratie: November 2003
  • Laatst online: 25-02-2024
Ik heb een probleem met het design van 2 objecten die elkaar moeten kennen in een gedistribueerd systeem. Ik heb een class Robot die een methode Robot.setServer(Server sim) en een class Server met Server.setRobot(Robot rob).
Het probleem ontstaat nu bij het compilen. Want als ik Robot compileer klaag hij dat hij Server niet kent, en omgekeerd.

Wat ik nu doe is Robot compileren zonder die method, vervolgens Server compileren en dan Robot hercompileren met die method. Dat werkt, maar het geeft het gevoel dat er iets fout is in het design. Heb al verschillende dingen proberen te bedenken, maar kom er gewoon niet onderuit dat Robot Server moet kennen en Server Robot. Als er iemand een mooi OO-design truukje weet om dit op te lossen hoor ik het graag. :) Heb zelf al verschillende boeken doorzocht, maar kan niet echt een oplossing vinden. Ik heb ook niet echt een idee op wat je zou kunnen zoeken.

  • TheDuke
  • Registratie: Juni 1999
  • Niet online
forward declarations ?

  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 13:25
het hangt ook van de taal af waar je in bezig bent (kon niet uit je post afleiden).

Maar evt. kan je bij een van de 2 classes de andere als void pointer oid meegeven, en in de implementatie dan casten naar het goede type

A software developer is someone who looks both left and right when crossing a one-way street.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Of abstracte classes of interfaces gebruiken. Maar zoals MerijnB al zegt hangt het een beetje van de taal af.

We adore chaos because we like to restore order - M.C. Escher


  • jopie1983
  • Registratie: November 2003
  • Laatst online: 25-02-2024
Ik gebruik Java, en heb net gauw gekeken wat forward declaration is, en denk niet dat het kan in Java.
Ik denk dat ik een oplossing gevonden heb door gebruik te maken van interfaces, waarbij ik de methods die de objecten van mekaar gebruiken in de verschillende interfaces zet. Is eigenlijk hele simpele oplossing en stom van me dat ik er niet eerder aan gedacht heb 8)7, maar soms zie je door het bos de bomen niet meer. :)