Sto cercando di apprendere una corretta progettazione orientata agli oggetti, con relazioni di classe ed evitando modelli di dominio anemici [1]. Sto creando un'applicazione per archiviare e recuperare informazioni su "cyber-attacchi". Ci sono cinque classi rilevanti per questa domanda:
- Directory : la classe che rappresenta la raccolta dei dati indicati sotto
- Gruppo : un gruppo di aggressori noti per essere correlati l'un l'altro
- Hacker : una persona che effettua un attacco
- Attack : un attacco di hacking, che include informazioni quali la gravità e il costo per riparare il danno
- Tipo : gli attacchi sono classificati in questi tipi, ad esempio rifiuto del servizio, perdita di informazioni e così via. Questi tipi vengono inseriti dall'utente quando aggiungono un attacco.
I tipi di domande che gli utenti dell'applicazione chiedono sono:
-
Quali attacchi sono stati eseguiti da uno specifico hacker ? La risposta include informazioni sul danno di ciascun Attack , nonché su quale tipo ha.
-
per uno specifico gruppo , quali attacchi sono stati effettuati? Da chi, e quale è stato causato il maggior costo del danno?
-
Per uno specifico tipo , quali attacchi vengono fatti? Chi li ha fatti? Qual è il costo totale del danno?
Il modo ingenuo per risolvere questo problema includerebbe molte dipendenze circolari tra queste classi (ad esempio un hacker ha attacchi, ma anche gli attacchi hanno hacker e un tipo ha attacchi, ma un attacco ha anche un tipo e così via. ) Poiché le dipendenze circolari sono indesiderate, come risolverei questo con un design OO corretto?