Progettazione del progetto OOP

-6

qui c'è il diagramma di classe UML

il metodo di iscrizione è usato per aggiungere un oggetto erbivoro agli osservatori della pianta. quando a una pianta viene detto di notificare, itloops attraverso tutti gli oggetti erbivori nella sua lista degli osservatori e dice ad ogni erbivoro di notare il suo stato attuale.

ma qui c'è un errore: sebbene il design consenta a un oggetto erbivoro di aderire a più oggetti vegetali, attualmente l'erbivoro non può sapere quale oggetto vegetale ha chiamato il suo metodo di notifica.

quindi come posso risolvere il diagramma UML in cui il metodo di notifica dell'erbivoro è passato a un riferimento all'impianto che sta inviando l'avviso?

    
posta Yunxiang Li 18.05.2016 - 06:15
fonte

2 risposte

3

Se si desidera un riferimento all'oggetto Plant nell'oggetto Herbivore notificato, modificare la firma di notify per includere un oggetto Plant.

notify(state: Maturity, plant: Plant) 
    
risposta data 18.05.2016 - 07:26
fonte
0

Risolvi questo problema aggiungendo una nuova classe e evitando di buttare troppi modelli di progettazione in cui non sono realmente veri nel dominio.

Per le piante, c'è una quantità di nuovi vapori, vapori fioriti e vapori fruttiferi. Ha anche un punto 2D per la sua posizione. Questa è una proprietà con un solo ottenimento visto che le piante non si muovono veramente. Lo stesso con quantità di fiori per vapore, frutta per vapore e quantità di semi per frutto. Un metodo che passa il tempo aggiornerebbe lo stato di quelle variabili. Metti metodi per provare a mangiare frutta e cerca di impollinare. Possono essere per prendere parametri per quantità di frutta da mangiare e quantità di fiori per impollinare rispettivamente.

Per la classe degli erbivori, falla avere un metodo interattivo che prende una pianta. L'impianto è un parametro out ed è un metodo astratto. L'erbivoro ha un punto e un metodo di spostamento che prende un rettangolo come la dimensione dell'abitudine. Ha un metodo booleano per cui at prende un punto e controlla se il suo punto ha lo stesso valore del parametro.

Vorrei aggiungere una classe di habitat. La classe ha una lista di piante e un elenco di erbivori. Ha anche un rettangolo per i suoi limiti. Ha un metodo di aggiornamento. Questo chiama il tempo passa il metodo per la pianta. Quindi sposta gli erbivori. Infine, il metodo controlla le collisioni e chiama il metodo interattivo degli erbivori.

    
risposta data 18.05.2016 - 13:58
fonte

Leggi altre domande sui tag