Please enable JavaScript.
Coggle requires JavaScript to display documents.
Progettazione a oggetti #1 Lez. 8 - Coggle Diagram
Progettazione a oggetti #1
Lez. 8
OOD guidata dalla responsabilità
RRD =
Responsability Driven Design
OO = insieme di oggetti con responsabilità che collaborano
Responsabilità SW
Astrazione di ciò che fa o
rappresenta un elemento sw
(Es. Pos -> Calcola tot. vendita)
Tipi
Tipi
Di fare
Eseguire operazioni
Di conoscere
Dati che incapsula e classi
di cui ha visibilità
Collaborazione
Oggetto può collaborare con altri
per soddisfare responsabilità
Requisiti RRD
Identificare una responsabilità
Assegnarla ad un oggetto
Chiedersi come l'oggetto
possa soddisfarla
(In modo iterativo)
Pattern GRASP
Pattern = soluzione provata e applicabile ad un particolare problema di progettazione
Grasp = principi fondamentali per la progettazione di oggetti e assegnazione di responsabilità
Coppia:
problema -> soluzione esemplare
1-Information Expert
Oggetti sw devono svolgere operazioni associate ad informazioni che possiedono
Problema: principio base per assegnare responsabilità ad un oggetto?
Soluzione: a chi possiede direttamente o indirettamente informazioni necessarie
Se più oggetti, si
sceglie oggetto padre
2-Creator
Responsabilità di
creare oggetti sw
Problema: chi crea oggetto X
Soluzione: una
classe che ...
Dipende da X
Comprende o è
composta da X
Registra X
Usa strettamente X
Possiede dati necessari
per inizializzare X
3-Controller
Problema: qual è il primo oggetto oltre lo strato UI
a ricevere e coordinare un'operazione di sistema?
Gestione delle operazioni di sistema
Soluzioni
Un'istanza del caso d'uso in cui si
verifica l'operazione (session controller)
Il sistema complessivo
(facade controller)
In architetture complesse, può esserci strato intermedio tra presentazione e logica
4-High coesion
Problema: come mantenere oggetti
coesi, comprensibili e gestibili?
Soluzione: assegnare responsabilità mantenendo coesione alta
Es. più oggetti che
collaborano tra loro
Da usare per
valutare alternative
5-Low coupling
Problema: ridurre impatto
dei cambiamenti
Misura la probabilità che una modifica impatti su altri elementi
Soluzione: assegnare le responsaiblità in modo che l'accoppiamento non necessario rimanga basso