Progettare le classi nel modo giusto [chiuso]

2

Sto cercando di progettare le mie classi in modo ottimale per il seguente scenario. Una città ha linee metropolitane che coprono un numero di stazioni. Ci sono 4 linee rappresentate da 4 colori. L'utente deve inserire le stazioni di partenza e di arrivo e dovremmo restituire il percorso più breve da prendere e il costo del viaggio. Il costo è costante da una stazione alla stazione adiacente- $ 2. Se hanno bisogno di cambiare corsia, è necessario pagare $ 1 aggiuntivi.

Eccoleclassieimetodichehoprogettatoperquesto.

È un buon design? Quali miglioramenti possono essere apportati a questo per essere riutilizzabili e robusti? Quali principi orientati agli oggetti possono essere applicati per rendere questo design migliore?

qui è il link al mio diagramma di classe, se quello sopra non è chiaro link

    
posta Prasanna Aarthi 15.10.2014 - 20:02
fonte

1 risposta

6

Fondamentalmente una rete della metropolitana è una raccolta di linee, una linea è una raccolta di stazioni e una stazione una raccolta di intersezioni (1 o più stazioni collegate).

Potresti avere la tua rete metropolitana rappresentata da una hashMap di base con tutte le tue linee.

Le tue stazioni potrebbero essere modellate come una raccolta di intersezioni / sequenze

Subway network
 - Lines (hashMap could do it)

Line
 - Stations (hashMap could do it)

Station
 - Intersections (hashMap could do it)

Intersection (structured as a 2 sided linked list)
 - line
 - previous station
 - next station

Considerando il tuo modello di oggetto come lo hai presentato, dovresti evitare di usare profusamente get / set o finirai un con un anemico modello .

I tuoi metodi dovrebbero assomigliare a:

  • Linea :: calculateTravelPrice (Station1, Station2)
  • Linea :: interseca (linea)
  • Stazione :: isEndOfLine ()

Fondamentalmente lasci che ogni componente faccia ciò per cui è stato creato.

Dovrai pensare di più sul tuo dominio specifico e su ciò che devi essere in grado di fare, ma questa risposta potrebbe essere un buon inizio

    
risposta data 15.10.2014 - 21:19
fonte