Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Aiuto "circolo vizioso" di creazione di oggetti che si devono conoscere reciprocament

    Salve,
    avrei un problema per l'istanziazione di oggetti che devono conoscersi in un "circolo vizioso".
    Il sistema è composto da diverse stazioni che processano dei diversi job, e comunicano tra di loro attraverso lo scambio di messaggi. Il sistema è stato implementato utilizzando la logica ad Attori (forniti dal nostro docente del corso), questo a puro titolo informativo. Il mio problema risiede nel fatto che non riesco a passare gli oggetti al momento della costruzione, proprio per questa interdipendenza reciproca. Vi mostro la chiamata dei costruttori:
    LA stazione1 deve conoscere il Router, il Router deve conoscere la stazione2 e la stazione3 e queste ultime devono conoscere la stazione1.
    Come risolvo il problema?!
    Maria

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Crei il Router (senza dire quali sono le stazioni).
    La classe Router contiene un metodo: addStation (Stazione stazione);
    Dopo aver creato la Stazione, la registri al Router.

    Non ho ben chiaro perché le stazioni debbano conoscersi tra loro...puoi spiegarti meglio?
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Bisognerebbe sapere se stazione1, stazione2 e stazione3 sono dello stesso tipo di classe, diversa da router, e se gli basta conoscere 1 sola altra stazione. E bisognerebbe sapere se sono regole che non cambi mai (altrimenti bisogna fare un approccio diverso).

    Rimanendo sul semplice e ponendo che siano regole che non cambi mai e che stazione1, stazione2 e stazione3 siano di tipo Stazione, allora nella classe Stazione fai:

    codice:
    void setStazioneConnessa(Stazione stazioneConnessa) {
        this.stazioneConnessa = stazioneConnessa;
    }
    void setRouter(Router router) {
        this.router = router;
    }
    e nella classe Router crei due metodi:
    void setStazioneConnessa1 e void setStazioneConnessa2

    poi nel luogo dove crei questi oggetti fai:
    stazione1.setRouter(router);
    router.setStazioneConnessa1(stazione1);
    router.setStazioneConnessa2(stazione2);
    stazione2.setStazioneConnessa(stazione1);
    stazione3.setStazioneConnessa(stazione1);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.