Design GRASP Flashcards

1
Q

Cosa significa l’acronimo RDD?

A

Responsibility-Driven Development

Cioè

Progettazione Guidata dalle Responsabilità

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cos’è RDD?

A

Progettazione a oggetti basata su:

  • Responsabilità
    gli oggetti hanno responsabilità
  • Ruoli
    la capacità che un oggetto ha di partecipare ad una relazione con un altro oggetto
  • Collaborazioni
    gli oggetti collaborano per raggiungere un obiettivo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Come può essere la granularità delle responsabilità?

A
  • Fine
    Quando si tratta di aggiungere un metodo a una classe
  • Grossa
    Quando si tratta di progettare numerose classi
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Che tipi di responsabilità esistono?

A
  • Responsabilità di fare

- Responsabilità di conoscere

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quando si parla di “Responsabilità di fare” di che si tratta?

A
  • Fare qualcosa esso stesso, come eseguire un calcolo
  • Dare inizio a un’azione in altri oggetti
  • Controllare e coordinare le attività di altri oggetti
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quando si parla di “Responsabilità di conoscere” di che si tratta?

A
  • Conoscere i propri dati privati incapsulati
  • Conoscere gli oggetti correlati
  • Conoscere cose che può derivare o calcolare
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quando si assegnano le responsabilità?

A

Durante la modellazione e la codifica

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cosa significa l’acronimo GRASP?

A

General Responsibility Assignment Software Patterns

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cos’è GRASP?

A

I pattern GRASP danno un nome e descrivono i principi base per la progettazione di oggetti e l’assegnazione di responsabilità

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cos’è il pattern Information Expert?

A

Il pattern Information Expert fornisce i modelli generali associati all’assegnazione delle responsabilità agli oggetti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cosa si intende per responsabilità?

A

Si intende una astrazione di ciò che fa un oggetto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Come intende l’UML una responsabilità?

A

Un contratto o un obbligo di un classificatore

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Come si assegnano le responsabilità?

A
  • Si identificano le responsabilità e si considerano una alla volta
  • Ci si chiede a quale oggetto va assegnata
  • Ci si chiede come fa l’oggetto a soddisfare la responsabilità, se da solo o collaborando
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quali sono i principali pattern GRASP?

A
  • Creator
  • Information Expert
  • Low Coupling
  • High Cohesion
  • Controller
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quali altri pattern GRASP ci sono?

A
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Cos’è un pattern?

A

E’ una coppia problema/soluzione ben conosciuta e con un nome

17
Q

Con cosa si definisce un pattern?

A
  • Nome
  • Problema
  • Soluzione
18
Q

Quale problema risolve il pattern creator?

A

Chi crea un oggetto A

19
Q

Per il pattern creator, quante e quali condizioni devono essere vere per fare sì che un oggetto B crei un oggetto A?

A
  • B contiene oggetti di tipo A
  • B registra A
  • B utilizza strettamente A
  • B possiede i dati per l’inizializzazione di A (quindi B è un information expert)
20
Q

Cosa si chiede il pattern Information Expert?

A

Qual è un principio di base per assegnare responsabilità agli oggetti?

21
Q

Che risposta si da il pattern Information Expert?

A

Assegno una responsabilità alla classe che possiede le informazioni necessarie per soddisfarla

22
Q

Cosa non deve comportare l’assegnamento di responsabilità?

A

L’aggiunta di nuove dipendenze tra classi e quindi un incremento dell’accoppiamento

23
Q

Cosa si chiede il pattern Low Coupling?

A

Come ridurre l’impatto dei cambiamenti?

24
Q

Come si risponde il pattern Low Coupling?

A

Assegno le responsabilità in modo tale che l’accoppiamento rimanga basso, uso questo criterio quando devo valutare delle alternative

25
Quale problema risolve il pattern Controller?
Qual è il primo oggetto oltre allo strato UI a ricevere e coordinare una operazione di sistema?
26
Come risolve il problema il pattern Controller?
Assegna le responsabilità a un sistema che | o rappresenta il sistema complessivo oppure rappresenta lo scenario di un caso d'uso
27
Usando il controller, come vanno implementate le funzioni di sistema?
Utilizzando altri oggetti SW che verranno "chiamati" dal controller, così da aumentare la coesione
28
Cos'è la coesione?
Una misura di quanto sono correlate le operazioni di un elemento SW da un punto di vista funzionale
29
Cosa si chiede il pattern High Cohesion?
Come mantenere gli oggetti focalizzati, comprensibili e gestibili
30
Come risolve il problema il pattern High Cohesion?
Assegna le responsabilità in modo tale che la coesione rimanga alta