• Non ci sono risultati.

1Objectdiagram Objectepackagediagram AzzoliniRiccardo2019-10-22

N/A
N/A
Protected

Academic year: 2021

Condividi "1Objectdiagram Objectepackagediagram AzzoliniRiccardo2019-10-22"

Copied!
5
0
0

Testo completo

(1)

Azzolini Riccardo 2019-10-22

Object e package diagram

1 Object diagram

Un object diagram descrive le singole istanze delle classi (cioè gli oggetti) e delle associazioni (cioè i link) rappresentate in un particolare class diagram.

Esso è adatto a descrivere esempi o situazioni specifiche, dato che permette di fare una

“fotografia” delle istanze esistenti in un certo istante di tempo.

1.1 Oggetti

Ciascun oggetto (istanza di una classe) è caratterizzato da:

• nome dell’oggetto;

• classe di cui è istanza;

• valori degli attributi.

Nella rappresentazione grafica dell’oggetto, è obbligatorio indicare la classe di apparte- nenza, mentre il suo nome e i valori degli attributi sono opzionali.

Data una classe,

Order

una sua istanza si può raffigurare come:

: Order MyOrder: Order

MyOrder: Order number = 0 amount = 10000

(2)

1.2 Link

Un link è un’istanza di un’associazione, cioè una connessione fisica o concettuale tra due oggetti.

Italia: Repubblica Dario Fo: Persona

G.Napolitano: Persona cittadino

cittadino presidente

I link presenti in un object diagram devono rispettare le molteplicità delle associazioni di cui sono istanze.

2 Package diagram

I package sono contenitori, in generale, di elementi UML (spesso classi). Un packa- ge definisce un namespace, quindi i nomi degli elementi al suo interno devono essere diversi.

Graficamente, un package può essere rappresentato con vari livelli di dettaglio, come ad esempio:

Client

+ OrderForm

+ Order

+ TrackingForm + Database

+ LoggingService Server

GUI

I contenuti di un package si possono indicare anche con la notazione delle relazioni di annidamento:

(3)

Client

+ Order

+ OrderForm + TrackingForm

2.1 Motivazioni dei package

I package permettono di modellare sistemi complessi in modo gerarchico.

Ciascun package deve avere:

• alta coesione all’interno;

• interfacce precise e limitate.

In questo modo, esso fornisce una vista relativa a un determinato aspetto del problema, il quale può allora essere analizzato, sviluppato, ecc. in modo (per quanto possibile) indipendente dal resto del problema.

2.2 Relazioni tra package

Una relazione tra due package “riassume” relazioni multiple dello stesso tipo tra i singoli elementi che appartengono a tali package. In particolare, si possono definire relazioni di:

• generalizzazione, se esiste almeno una generalizzazione tra gli elementi dei due package;

• dipendenza, se esiste almeno una relazione di dipendenza tra gli elementi dei due package.

Esistono poi alcune relazioni che riguardano direttamente i package:

• Annidamento: un package può contenere altri package.

• Merge: è una relazione molto simile alla generalizzazione, con la quale i contenuti di due package vengono combinati in un unico package. Ad esempio, con il merge raffigurato nel diagramma seguente, il package A acquisisce anche le caratteristiche di B:

(4)

A «merge» B

Esso si può usare quando package diversi contengono elementi che hanno gli stessi nomi e rappresentano gli stessi concetti, ma (spesso) con definizioni diverse per scopi diversi.

Il merge permette di definire “delta” in package diversi e combinarli per ottenere un singolo package con tutte le caratteristiche necessarie.

2.2.1 Dipendenze

Le relazioni di dipendenza tra package devono essere esplicite: non è sufficiente che gli elementi di un package siano pubblici perché questi possano essere usati da altri package.

Inoltre, le dipendenze non sono transitive: se il package A può accedere a B, e B può accedere a C, non è detto che A possa accedere a C.

UML definisce due stereotipi per le dipendenze tra package:

• «access»: indica che gli elementi contenuti nel package target possono essere refe- renziati dal package client, ma è necessario usare come prefisso il nome del package target. In altre parole, «access» non modifica il namespace del client.

• «import»: aggiunge al namespace del package client gli elementi contenuti nel package target. Il client può quindi usare gli elementi importati come se fossero stati dichiarati localmente, ma in compenso non ci devono essere conflitti fra i nomi importati e quelli già presenti nel client, altrimenti il modello è mal formato.

ShoppingCart Auxiliary

Types

WebShop

«access»

«import»

«import»

Le relazioni di access e import possono riguardare anche i singoli elementi di un packa- ge:

(5)

Types

«datatype»

String

«datatype»

Integer

«datatype»

Time Program

«access»

«import»

In particolare, in un import di un singolo elemento, è possibile specificare un alias:

Types Shapes

«datatype»

Real

Circle radius: Double

«import»

Double

Riferimenti

Documenti correlati

As this package provides a way to box multi line math displays it can come as no surprise that using either \intertext 4 or \displaybreak inside the empheq environment makes no

There are two things on mathtools’ agenda: (1) correct various bugs/defeciencies in amsmath until these are fixed by the AMS and (2) provide useful tools for mathematical typeset-

For that reason amsmath makes sure that commands like \\ disallows spaces before the optional argument but at the same time it fails to provide “safe”

o Java contiene molte classi predefinite che sono raggruppate in categorie di classi e prendono il nome di package. o l’insieme di questi package è chiamato Java API (Java

Thus, the elements of any collection class can be accessed through the methods defined by Iterator, with similar cycles for different data structures, e.g.. sets

Plus pr´ ecis´ ement, il faut documenter le package dans sa globalit´ e, tous les fichiers de donn´ ees, toutes les fonctions publiques et toutes les invisibles (G´ en´ e-

 In Java il tipo base degli array può essere qualunque, sia primitivo sia riferimento.  Sono possibili “array

Per scrivere dati in un file si costruisce un oggetto di tipo PrintWriter , fornendo il nome del file:. PrintWriter out =