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
Q

Quale problema risolve il pattern Controller?

A

Qual è il primo oggetto oltre allo strato UI a ricevere e coordinare una operazione di sistema?

26
Q

Come risolve il problema il pattern Controller?

A

Assegna le responsabilità a un sistema che

o rappresenta il sistema complessivo oppure rappresenta lo scenario di un caso d’uso

27
Q

Usando il controller, come vanno implementate le funzioni di sistema?

A

Utilizzando altri oggetti SW che verranno “chiamati” dal controller, così da aumentare la coesione

28
Q

Cos’è la coesione?

A

Una misura di quanto sono correlate le operazioni di un elemento SW da un punto di vista funzionale

29
Q

Cosa si chiede il pattern High Cohesion?

A

Come mantenere gli oggetti focalizzati, comprensibili e gestibili

30
Q

Come risolve il problema il pattern High Cohesion?

A

Assegna le responsabilità in modo tale che la coesione rimanga alta