• Non ci sono risultati.

1Classiastratte Classdiagram AzzoliniRiccardo2019-10-21

N/A
N/A
Protected

Academic year: 2021

Condividi "1Classiastratte Classdiagram AzzoliniRiccardo2019-10-21"

Copied!
4
0
0

Testo completo

(1)

Azzolini Riccardo 2019-10-21

Class diagram

1 Classi astratte

In UML, le classi astratte possono essere indicate:

• con lo stereotipo «abstract»;

• scrivendo il nome in corsivo.

«abstract»

FiguraGeometrica FiguraGeometrica

Anche le operazioni (metodi) astratte si scrivono in corsivo.

Una classe con almeno un’operazione astratta deve per forza essere astratta, ma può essere utile dichiarare come tale anche una classe che ha solo operazioni concrete, se non ha senso crearne delle istanze (ad esempio, perché è stata introdotta solo per raccogliere delle informazioni che altrimenti sarebbero state ripetute in varie altre classi).

1.1 Esempio e Composite Design Pattern

Si consideri un disegno composto da una o più figure. Per disegnare (visualizzare) se stesso, al disegno non serve sapere di che tipo sono le figure: è sufficiente che esso chiami il metodo “visualizza” di ciascuna figura.

1

(2)

1..*

0..1

1..*

1 3..*

Figura

# pos: Posizione + visualizza()

Disegno + visualizza()

Poligono + visualizza() GruppoFigure

+ visualizza()

+ figuraComponente

Linea

+ visualizza()

+ lineaComponente

• Il metodo visualizza della classe Figura è astratto, perché ogni tipo di figura deve essere visualizzato in modo diverso.

• Un poligono è formato da 3 o più linee.

• Esiste un tipo particolare di figura, GruppoFigure, che permette di raggruppare altre figure, e quindi di realizzare una struttura ad albero, perché aggrega più istan- ze della sua stessa superclasse. Questa è un’applicazione del Composite Design Pattern. Un altro esempio potrebbe essere la rappresentazione di una struttura di file e cartelle.

2 Associazioni derivate

Alcune associazioni sono calcolabili in base ad altri legami e/o ai valori degli attributi.

Esse sono chiamate associazioni derivate, e si indicano con il simbolo /, come gli attributi derivati.

Ad esempio, nel diagramma seguente, l’associazione “impiega” è calcolabile perché si ricava transitivamente dall’aggregazione e dall’associazione “lavora_per”:

1

1..*

1 1..*

Divisione Azienda

Persona lavora_per

/ impiega

2

(3)

Le associazioni derivate non devono essere segnate sempre (perché ce ne sarebbero trop- pe), ma solo quando sono importanti per il modello (ad esempio, l’associazione “impiega”

potrebbe essere segnata se Azienda avesse bisogno di un elenco generale del personale, oltre agli elenchi per ciascuna divisione).

Le associazioni derivate sono di fatto dati duplicati, quindi il codice che le gestisce deve assicurare che esse siano sempre aggiornate al variare dei legami/attributi in base ai quali sono calcolate.

3 Vincoli

Si possono porre vincoli sui valori degli attributi e sulle relazioni, scrivendoli tra paren- tesi graffe a margine delle classi/associazioni.

1..*

CampoDiAmmissibilità

Intervallo Inizio: int Fine: int

{Inizio < Fine}

{Non sovrapposti}

Alcuni vincoli sono specificati da UML, ma è ammesso anche testo libero. I vincoli possono porre restrizioni sia sullo stato di attributi/associazioni in un singolo istante, sia sulla loro evoluzione nel tempo, come ad esempio:

Ordine Priorità

{La Priorità può solo crescere}

Nelle associazioni “a molti”, i vincoli permettono anche di fissare un certo tipo di ordi- namento per i “molti” oggetti, che normalmente sarebbero invece considerati come un insieme non ordinato.

0..* 3..*

{in ordine ciclico}

Poligono HaPerVertice Punto

Un altro uso dei vincoli è per condizionare un’associazione rispetto a un’altra. Ad esempio:

3

(4)

0..5 0..1

0..1 0..1

Persona Auto

usa

guida {sottoinsieme}

Studente

Dormitorio

Appartamento {xor}

• {sottoinsieme} indica che gli oggetti legati dall’associazione “guida” devono essere anche legati dall’associazione “usa” (la Persona che guida un’Auto la sta anche usando);

• {xor} indica che uno Studente non può essere legato sia a un Dormitorio che a un Appartamento.

Infine, alcuni vincoli tra le associazioni si possono esprimere come particolari commenti.

Ad esempio:

1..*

impiegato

datoreDiLavoro

Persona 0..1 Azienda

capo 0..1 sottoposto

0..*

Persona.datoreDiLavoro = Persona.capo.datoreDiLavoro

Questo vincolo, il quale specifica che una Persona e il suo capo lavorano per la stessa Azienda, è scritto in Object Constraint Language (OCL), un linguaggio nato per rendere più rigorosa la specifica dei vincoli in UML, che però, in pratica, non ha avuto molto successo. Lo stesso vincolo potrebbe invece essere espresso in linguaggio naturale.

4

Riferimenti

Documenti correlati

Il Sindaco del Comune di Cernusco sul Naviglio (MI), con la richiesta in epigrafe, ha sottoposto all’attenzione della Sezione quesito in ordine all’applicabilità

1 Paziente non in grado di badare alla propria igiene, dipendente sotto tutti i punti di vista 2 E' necessario assisterlo in tutte le circostanze della igiene personale. 3

Con il primo motivo del ricorso introduttivo la ricorrente denunciava tramite una compendiosa rubrica, il rapporto di dipendenza che legava la stazione appaltante e i signori Roggio

nell'edificio dopo la costruzione di quest'ultimo per iniziativa di parte dei condomini, non rientra nella proprietà comune di tutti i condomini, ma appartiene in proprietà a quelli

• la costruzione di uno strumento dedicato per la comunicazione asincrona dei professionisti lungo il processo di cura (es. cartella clinica PDTA) e tra i diversi presidi della AO.

Genere: documentazione allegata Tipo: fotografia digitale colore Autore: Tosi, Luca..

È un punto importante: da un lato si prende atto che l’obbligatorietà dell’azione penale, da tempo, è un valore asimmetrico rispetto alla realtà ed ampiamente derogato nella prassi,

Il sistema operativo, quando c’è bisogno di eseguire un nuovo servizio (e quindi di mandare in esecuzione un nuovo processo) decide di mandarlo in esecuzione sul processore che