UML Diagrammi delle classi. UML Diagramma classi 1



Documenti analoghi
Object Oriented Software Design

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Modellazione dei dati in UML

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Realizzazione di una classe con un associazione

Java: Compilatore e Interprete

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Guida all uso di Java Diagrammi ER

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Identificare le classi in un sistema

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA CONCETTUALE LE ASSOCIAZIONI

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Progettazione : Design Pattern Creazionali

Introduzione agli Abstract Data Type (ADT)

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Inizializzazione, Assegnamento e Distruzione di Classi

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

UML Unified Modeling Language

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

Concetto di Funzione e Procedura METODI in Java

Traccia di soluzione dell esercizio del 25/1/2005

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

MODELLO E/R. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

UML: Class Diagram. Ing. Orazio Tomarchio

Prova di Laboratorio di Programmazione

Funzioni in C. Violetta Lonati

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Elementi di UML (7): Diagrammi dei componenti e di deployment

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Modulo 4: Ereditarietà, interfacce e clonazione

Oggetti Lezione 3. aspetti generali e definizione di classi I

GESTIONE DEI PROCESSI

Capitolo 2. Operazione di limite

Programmazione a Oggetti Lezione 10. Ereditarieta

Rappresentazione grafica di entità e attributi

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Esercizi della lezione 5 di Java

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Esercitazione n 4. Obiettivi

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

4 3 4 = 4 x x x 10 0 aaa

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Visibilità dei Membri di una Classe

NOZIONI DI BASE DEL DIRITTO IL DIRITTO COME INSIEME DI REGOLE

Ingegneria del Software: UML Class Diagram

Introduzione a Classi e Oggetti

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Object Oriented Programming

Anno 1. Le relazioni fondamentali (equivalenza, d'ordine, inverse, fra insiemi)

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Progettaz. e sviluppo Data Base

dall argomento argomento della malloc()

Active Directory. Installatore LAN. Progetto per le classi V del corso di Informatica

Informatica (Basi di Dati)

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

SWIM v2 Design Document

Programmazione a Oggetti Modulo B

Diagrammi dei package

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

La progettazione concettuale: il modello ER. 17/12/2007 Unità di Apprendimento A2 1

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Concetti di base di ingegneria del software

Algoritmi di Ricerca. Esempi di programmi Java

Lezione 4. Modello EER

Uso di base delle funzioni in Microsoft Excel

Introduzione alla programmazione in C

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

UML Component and Deployment diagram

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

risulta (x) = 1 se x < 0.

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Le variabili. Olga Scotti

ALGEBRA DELLE PROPOSIZIONI

Esempi di esercizi d esame

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Concetti preliminari teorici per il corso di Access Avanzato - Sc.Elem Falcone - PON Prof. M. Simone

Claudia Raibulet

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Informatica

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

PIL : produzione e reddito

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercizio 1: trading on-line

Programmazione Orientata agli Oggetti in Linguaggio Java

Supermarket Progetto di Programmazione Febbraio 2010

Il file seme o file modello del disegno

MODELLO E/R. Modellazione dei dati

Transcript:

UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio sufficientemente ricco per descrivere i concetti che ci servono. Passiamo in rassegna i vari elementi che possono comparire in questo tipo di diagramma Cercheremo di riportare il codice Java corrispondente ai vari elementi grafici UML Diagramma classi 2

Classi In UML una classe è rappresentata da un rettangolo diviso in 3 sottosezioni: nome, attributi e operazioni Solo il nome è obbligatorio, le altre sezioni possono essere definite in fasi successive Versione completa Versione ridotta Nome Attributi Operazioni -... +...() Finestra Finestra UML Diagramma classi 3 Classi: dettagli della notazione Molteplicità Visibilità - privato # protetto + pubblico Finestra -dimensioni[2] : int = (100,100) #visibile[1] : bool = false +Finestra(in l : int, in h : int) +Nascondi() +Mostra() Valori iniziali Ambito di classe (metodi static e costruttori) Parametri Ambito di istanza UML Diagramma classi 4

Attributi Gli attributi hanno una struttura di questo tipo: visibilità nome molteplicità: tipo = valoreiniziale Solo il nome è obbligatorio La visibilità può essere: private (-) protected (#) package (~) public (+) La molteplicità si indica con la notazione tipica degli array: [n] Un eventuale sottolineatura indica che l attributo appartiene ad un ambito di classe (static) e non di istanza E possibile indicare un valore iniziale UML Diagramma classi 5 Operazioni Le operazioni sono i metodi della classe e hanno una struttura del tipo: visib nome(nomeparam: tipoparam, ): tiporestituito Anche per le operazioni solo il nome è obbligatorio Le visibilità sono uguali a quelle degli attributi La sottolineatura indica metodi static e costruttori I parametri possono essere preceduti da un modificatore che indica la direzione di uso: in: parametro in ingresso (per valore) out: parametro di uscita (serve per restituire un risultato: per riferimento) inout: parametro di ingresso e uscita (per riferimento) UML Diagramma classi 6

Classi e metodi astratti Le entità astratte vengono rappresentate in corsivo: questo vale sia per le classi che per i metodi: Employee -name : String +getname() : String +calcpay() : double abstract class Employee public getname() return name; public abstract double calcpay(); private String name; UML Diagramma classi 7 Interfacce Le interfacce hanno rappresentazione simile a quella delle classi Vengono identificate tramite lo stereotipo «interface» Manca la sezione degli attributi I metodi sono in corsivo (astratti) Esiste anche una rappresentazione grafica compatta costituita da un tondino e da una linea «interface» Command +doit() Command Versione estesa Versione compatta interface Command void doit (); UML Diagramma classi 8

Relazioni In UML una relazione è definita come: Una connessione semanticamente significativa tra elementi di modellazione Nei diagrammi delle classi troviamo 3 tipi di relazioni: Dipendenze (relazioni d uso) Associazioni (associazione semplice, aggregazione, composizione) Generalizzazioni e realizzazioni (ereditarietà fra classi e implementazione di interfacce) UML Diagramma classi 9 Dipendenze Una dipendenza è una relazione tra due elementi dove un cambiamento ad uno di essi (fornitore) può influenzare o fornire informazioni necessarie all altro (cliente) Il tipo più comune è la relazione d uso che esprime un rapporto client-server fra due classi o fra una classe e un interfaccia Si rappresenta con una linea tratteggiata e con lo stereotipo «uses» (che di solito però viene omesso) UML Diagramma classi 10

Relazione d uso tra classi Una relazione d uso fra due classi si ha nei seguenti 3 casi: Un metodo di Class1 ha un parametro di tipo Class2 Un metodo di Class1 restituisce un valore di tipo Class2 Un metodo di Class1 usa un oggetto di tipo Class2 ma non come attributo. L esempio più comune del terzo caso si ha quando in un metodo di Class1 si dichiara una variabile locale di tipo Class2 Class1 Class2 UML Diagramma classi 11 Relazione d uso fra una classe e un interfaccia Nel caso di una classe e di un interfaccia la relazione d uso ha un significato più generico Indica semplicemente che la classe invoca uno o più metodi definiti nell interfaccia Talvolta si parla di relazione client-of «interface» Interface1 Class3 UML Diagramma classi 12

Associazioni Un associazione è una relazione fra classi Può essere caratterizzata da: Nome Nomi dei ruoli Molteplicità Navigabilità ruoli navigabilità nome Azienda -Datore impiega -Impiegato Persona 1 * molteplicità UML Diagramma classi 13 Nomi e ruoli Un associazione può essere indicata con un nome o semplicemente con i nomi dei ruoli Sia nome che ruoli sono facoltativi La freccetta accanto al nome indica la direzione di lettura del nome: Il termine impiega ha senso se si legge l associazione da destra a sinistra Si potrebbe invertire la direzione di lettura cambiando anche il nome dell associazione in è impiegato UML Diagramma classi 14

Molteplicità La molteplicità è un vincolo la cui funzione è qualla di limitare il numero di oggetti di una classe che possono partecipare ad un associazione in un dato istante Un azienda impiega molte persone Azienda Persona 1 * Ogni persona lavora per una sola azienda UML Diagramma classi 15 Molteplicità: attenzione all interpretazione La presenza del numero 1 (ornamento) vicino alla classe Azienda vuol dire due cose: Una persona può lavorare solo per un azienda per volta Una persona deve per forza lavorare per un azienda Quindi: E ammesso che una persona lavori per più aziende in tempi diversi Se vogliamo che una persona possa essere disoccupata dovremo scrivere 0..1 anziché 1 UML Diagramma classi 16

Espressioni di molteplicità La molteplicità può essere espressa: Con un solo simbolo (0 1 *) Con un intervallo (0..2 1..*) Con una lista di simboli o intervalli separati da virgole (0..3,5,6..9) Esempi: 0..1 1 0..* * 1..* Zero o uno Esattamente uno Zero o più Zero o più (attenzione!) Uno o più 1..6 Da uno a 6 1..3,7,19..* Da 1 a 3, oppure 7 oppure da 19 in su UML Diagramma classi 17 Esempio di molteplicità Un azienda deve avere esattamente sette dipendenti Un dipendente lavora solo per un azienda e non può essere disoccupato Azienda -datorelavoro 7 -dipendente Una persona può essere correntista di un numero qualsiasi di conti correnti (anche nessuno) 1 1 -correntista Persona -delegato 1..* Una persona può essere delegata ad operare su un numero qualunque di conti (anche nessuno) Un conto corrente può avere uno ed un solo correntista 0..* ContoCorrente 0..* Per ogni conto ci possono essere uno o più delegati UML Diagramma classi 18

Associazioni riflessive E piuttosto comune che una classe abbia un associazione con se stessa Ciò significa che oggetti della classe possono avere collegamenti con altri oggetti della stessa classe L esempio tipico è quello di una struttura ad albero (per esempio un file system): una cartella può essere collegata a file o a cartelle figlie -padre Cartella File 0..1 1 0..* Associazione riflessiva 0..* -sottocartella UML Diagramma classi 19 Navigabilità La navigabilità, indicata con una punta di freccia su un lato dell associazione, indica una direzione nella relazione Specificando la navigabilità si riduce la dipendenza fra le classi: i legami bidirezionali sono critici Associazione Associazione navigabile class Employer //... private Employee itsworker; class Employee //... private Employer itsboss; class Employee //... private BenefitsPackage itsbenefits; class BenefitsPackage //... Non c è un riferimento all immpiegato UML Diagramma classi 20

Aggregazione e composizione Oltre all associazione semplice di cui abbiamo parlato esistono altre due relazioni di tipo analogo: l aggregazione e la composizione Entrambe sono relazioni part-of, in cui un oggetto di una classe diventa parte di un oggetto dell altra Rispetto all aggregazione nella composizione ci sono dei vincoli in più: La parte può appartenere a un solo oggetto (vincolo di esclusività) La parte nasce e muore assieme all oggetto che la contiene (vincolo sulla gestione del tempo di vita). Aggregazione e composizione vengono rappresentate come associazioni con un rombo (rispettivamente bianco e nero) vicino alla classe contenitore UML Diagramma classi 21 Esempio su aggregazione e composizione Un esempio classico per comprendere la differenza è quello dell automobile: sia il telaio che le gomme sono parti dell auto Ma la relazione con il telaio è più stretta: il telaio può appartenere ad una sola auto e nasce e muore assieme all auto Automobile Aggregazione Composizione 4 1 1 1 Gomma Telaio UML Diagramma classi 22

Esempio su aggregazione e composizione 2 Vediamo l implementazione della classe Automobile: class Automobile private Gomma gomme[]; private Telaio telaio; public Automobile() telaio = new Telaio();... public Gomma getgomma(int n) return Gomme[n]; public void setgomma(gomma g; int n) gomme[n] = g; Gestione tempo di vita Non c è settelaio(): non è possibile cambiare il telaio di un auto UML Diagramma classi 23 Ereditarietà (Generalization) Counter #val : int +inc() : void +reset() : void +getvalue() : int BiCounter +dec() : void public class Counter protected int val; public void reset() val = 0; public void inc() val++; public int getvalue() return val; public class BiCounter extends Counter public void dec() val--; UML Diagramma classi 24

Implementazione di interfacce (Realization) «interface» Drawable +draw() Circle +Draw() interface Drawable public void draw(); class Circle implements Drawable public void draw()...... UML Diagramma classi 25