Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a. 2013-2014

Documenti analoghi
Catia Trubiani. Laboratorio di Ingegneria del Software a.a

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

UML Diagrammi delle classi. UML Diagramma classi 1

Modellazione dei dati in UML

Sequence Diagram e Collaboration Diagram

Modulo 4: Ereditarietà, interfacce e clonazione

Lezione 4. Modello EER

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

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

Corso di Informatica

Organizzazione degli archivi

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

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Dalla progettazione concettuale alla modellazione di dominio

Progettazione orientata agli oggetti

Object Oriented Software Design

Ingegneria del Software: UML Class Diagram

UML Unified Modeling Language

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

Informatica (Basi di Dati)

UML: Class Diagram. Ing. Orazio Tomarchio

Guida all uso di Java Diagrammi ER

Diagrammi dei package

Soluzione dell esercizio del 2 Febbraio 2004

Object Oriented Programming

Esercitazione n 4. Obiettivi

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

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Concetti di base di ingegneria del software

Capitolo 13. Interrogare una base di dati

Progettazione : Design Pattern Creazionali

Basi di dati. Le funzionalità del sistema non vanno però ignorate

Diagrammi di Interazione

Esercitazione di Basi di Dati

Oggetti Lezione 3. aspetti generali e definizione di classi I

Identificatori delle entità

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Programmazione a Oggetti Lezione 10. Ereditarieta

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

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Rappresentazione grafica di entità e attributi

Progettazione Logica. Progettazione Logica

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni

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

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

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

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

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

SQL/OLAP. Estensioni OLAP in SQL

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Progettazione dei Dati

Esercizio data base "Biblioteca"

GESTIONE DEI PROCESSI

Progettaz. e sviluppo Data Base

Database. Si ringrazia Marco Bertini per le slides

Java: Compilatore e Interprete

Parola chiave extends

Progettazione di Basi di Dati

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Concetto di Funzione e Procedura METODI in Java

MODELLO E/R. Modellazione dei dati

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Alessandra Raffaetà. Basi di Dati

Realizzazione di una classe con un associazione

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

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

Reti di Calcolatori. Il Livello delle Applicazioni

GUIDA AL SOCIAL CARE

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

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

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

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

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

Esercitazione su UML Ingegneria del Software - San Pietro

Corso di Informatica

La Progettazione Concettuale

Progettazione di una base di dati Ufficio della Motorizzazione

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Progettazione del Software A.A.2008/09

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

PROGETTAZIONE CONCETTUALE

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

Presidenza del Consiglio dei Ministri

La Metodologia adottata nel Corso

Progettazione di basi di dati. Progettazione di basi di dati. Ciclo di vita dei sistemi informativi. Fasi del ciclo di vita [1]

PROGETTAZIONE DI UN DATABASE

DATABASE RELAZIONALI

Progettazione concettuale

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Identificare le classi in un sistema

Claudia Raibulet

Tipi di Dato Ricorsivi

Protezione. Protezione. Protezione. Obiettivi della protezione

Programmazione a Oggetti Modulo B

Database 1 biblioteca universitaria. Testo del quesito

I Sistemi Informativi

Per utilizzare il sistema VCP il programmatore deve inserire una porzione di codice di VCP nella sua applicazione.

Transcript:

Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM)- Università degli Studi dell Aquila catia.trubiani@univaq.it Class Diagram Il Class Diagramviene usato per modellare la struttura statica di un sistema ed è costituito da: entità + relazioni Una classedescrive una entitàda modellare, ed è caratterizzata: (1) da un nome (2) degli attributi (3) delle operazioni sugli attributi 2 1

Classe Modella una famiglia di entità del dominio di applicazione le proprietà (attributi) il comportamento (operazioni) Raggruppa un insieme coeso di entità Alcuni esempi: mammifero, autoveicolo, grafo... 3 Un esempio di classe: car (1/2) un esempio di classe e i suoi attributi 4 un esempio di entità concrete (ISTANZE) appartenenti alla stessa classe 2

Un esempio di classe: car (2/2) attributidi una classe e tipo di dato associato agli attributi un esempio di classee le sue operazioni 5 Altri esempi di classe attributo di classe: il valore di questo attributo è uguale per tutte le istanze perché l attributo è condiviso. operazione di classe: il valore restituito dall operazione è uguale per tutte le istanze perché l operazione è condivisa. 6 3

Cosa rappresenta un classdiagram?! È un disegno?! A cosa serve?! nome attributi operazioni 7 Perché modellare un sistema?? Il disegno del sistema diventa CODICE che lo implementa 8 Class Diagram Codice Java (per esempio) 4

Un altro esempio di classe: sensor e la sua traduzione in Java 9 Nome di una classe Definisce il nome di un entità stringa di testo semplice stringa path(prefisso + :: + <nome_classe>) Convenzione lettera iniziale maiuscola 10 5

Come rappresentare il nome di una classe in Java 11 Attributi di una classe Gli attributi modellano le proprietà di una classe e per ogni attributo viene definito l insieme di valori (tipo) che esso può assumere Le proprietà sono condivise tra tutti gli oggetti appartenenti a quella classe, vale a dire che tutte le istanze hanno quella classe come tipo Nel nostro esempio: un sensore è caratterizzato da identificativo (univoco) frequenza di rilevamento della misura 12 6

Come rappresentare gli attributi di una classe in Java 13 Operazioni di una classe Le operazioni manipolano lo stato degli oggetti (ovvero il valore degli attributi) Hanno una segnatura: un tipo, un nome e una lista di parametri Operations compartmentspecifica cosa può fare una classe (e non come), ovvero che servizi offre Ad esempio il nostro sensore : setsamplingfrequency, getmeasure, 14 7

Come rappresentare le operazioni di una classe in Java 15 Visibilità di un elemento della classe 16 8

Visibilità per attributi/metodi PUBLIC: attributo/metodo che può essere usato ed è visualizzato all esterno della classe nella quale è definito. PRIVATE: attributo/metodo che NON può essere usato e NON è visualizzato all esterno della classe nella quale è definito. PROTECTED: attributo/metodo che può essere usato ed è visualizzato solo dalle classi che hanno una relazione di generalizzazione con la classe nella quale è definito. 17 Public, private, protected?! Obiettivo: nascondere le scelte che possono essere soggette a cambiamenti Chiaramente REGOLA PRATICA : gli attributi in genere sono privati, le operazioni possono essere pubbliche l interfaccia delle operazioni deve essere stabile vanno definite operazioni di get/set per accedere agli attributi privati Principio di information hiding(encapsulation) separazione tra interfaccia e implementazione 18 9

Come rappresentare la visibilità (public/private) in Java 19 Come rappresentare la visibilità (protected) in Java NOTA BENE: protectede privatesembrano equivalenti, non è cosi. La differenza c'è con la relazione di generalizzazione. 20 10

Visibilità degli elementi di una classe 21 Attributi ed operazioni delle classi 22 11

Come rappresentare attributi ed operazioni di una classe in Java 23 come accederli da un altra classe Class Diagram Il Class Diagramviene usato per modellare la struttura statica di un sistema ed è costituito da: entità + relazioni Le relazionidi base in un classdiagram corrispondono alla definizione delle possibili interazioni tra le classi di un modello una relazione tra una classe A ed una classe B significa che (in qualche modo) A può comunicare con B Il tipo di relazione definisce il modo di comunicazione tra due classi 24 12

Class Diagram Mostra un insieme di classi, interfacce e le relazioni tra loro dipendenza, associazione, aggregazione, composizione, generalizzazione Può essere visto come un grafo dove i nodi sono classi/interfacce e gli archi sono relazioni Possono contenere anche packageo sottosistemi (usati per raggruppare elementi) 25 Class Diagram Modella la struttura statica di una applicazione elementi specificati e/o composti a design time Si usa per modellare: gli elementi di una applicazione (vocabolario) una classe è l astrazionedi un elemento nel dominio del problema Semplici collaborazioni una classe non vive da sola ma si relazionacon altre al fine di fornire, cooperativamente, un comportamento complesso 26 13

Relazioni in un Class Diagram Una relazione rappresenta una connessione tra gli elementi di uno o più domini Nei class diagram si specificano relazioni tra : classi, oggetti, interfacce, package, etc... Una relazione fornisce un percorso di comunicazione tra gli elementi del diagramma 27 Relazioni in un Class Diagram 28 14

Generalizzazione Relazione tra una classe più generale ed una più specifica padre super-classe figlia sotto-classe Rappresentata da una freccia con triangolo bianco (verso la super-classe) Una sotto-classe eredita tutte le caratteristiche della super-classe is-a-kind-of 29 Alcuni esempi di generalizzazione Il veicolo è una classe generale (superclasse) derivata per classi specifiche (sotto-classi) tramite l ereditarietà (generalizzazione). 30 15

Generalizzazione e polimorfismo La classe Car eredita l attributo color e l operazione drive. L'operazione viene ridefinita nelle classi car e boat. La classe vehicle è astratta, ed è anche segnato. 31 Generalizzazione in Java public class TempSensor extends Sensor { private int temp; private TemperatureScale scale;... } 32 16

Quando usare la generalizzazione PRINCIPIO DI SOSTITUIBILITA' Se q(x) è una proprietà che si può dimostrare essere valida per oggetti x di tipo T, allora q(y) deve essere valida per oggetti y di tipo S dove S è un sottotipo di T. Che riformulato in termini più quotidiani: Data una super-classe T di S, in tutti i contesti in cui si usa un'istanza di T, deve essere possibile utilizzare una qualsiasi istanza di S (o di una qualunque altra sotto-classe a qualsiasi livello) la sotto-classe deve avere la stessa semantica della super-classe 33 Generalizzazione e classi Problema : modellare una famiglia di sensori. In particolare sensori di temperatura e di luminosità Soluzione : definizione delle entità classi definizione delle caratteristiche comuni operazioni ed attributi 34 17

35 Generalizzazione e classi astratte Parzialmente definite modellare operazioni che hanno la stessa semantica ma che saranno implementate da metodi differenti Non è mai possibile istanziare una classe astratta Si possono (si devono) dichiarare puntatori classi astratte polimorfismo Generalizzazione e polimorfismo in Java // Errore Sensor s = new Sensor(); // OK Sensor t= new TempSensor(); // OK Sensor l = new LightSensor(); l.setmuteon(); // OK l.getmeasure (); // OK t.getmeasure (); // OK 36 ATTENZIONE: anche se l e t sono dello stesso tipo, le chiamate si riferiscono a implementazioni diverse 18

Generalizzazione e classi astratte Una classe è astratta se il flagabstractdell'elemento è impostato a true Non c'è una simbologia grafica univoca vaper la maggiore!! 37 Generalizzazione e visibilità in Java 38 SOLO le sottoclassi POSSONO riferire gli elementi dichiarati protected nelle superclasse. 19

Interfacce Collezioni di operazioni che sono utilizzate per specificare un servizio di una classe o di un componente Definisce solo la segnatura delle operazioni Le operazioni possono avere attributi di visibilità (come nelle classi) Non tutti i linguaggi hanno interfacce C++ NO, Java SI 39 Associazione Relazione strutturale tra oggetti di classi differenti Può essere simmetrica (navigabile nelle due direzioni) Una associazione può essere ricorsiva, ovvero tra oggetti della stessa classe binaria o N-aria (è poco usata) Rappresentata mediante una linea continua che collega le classi in relazione Di fatto indica la possibilità che una classe possa inviare messaggi a quelle associate 40 20

Un esempio di associazione tra classi Una compagnia di assicurazioni ha molti contratti di assicurazione (zero-a-molti). Un cliente può avere molti contratti di assicurazione (zero-a-molti). Un contratto di assicurazione è connesso ad un unica compagnia di assicurazioni. Il contratto di assicurazione è legato a molti (uno-a-molti) clienti. 41 Altri esempi di associazione Un autore utilizza un computer. La classe Author è in associazione con la classe Computer. Una persona può avere molte (zero-a-molti) automobili. Una macchina può essere di proprietà di molte (uno-a-molti) persone. 42 Un'associazione navigabile dice che una persona può possedere molte vetture, ma non dice nulla su quante persone possono possedere una macchina. 21

Associazione in Java Un associazione può avere: un nome, il ruolo degli operandi, stereotipo cardinalità 43 Associazione in Java public class Sink { private String name; private IP_Address address; public String getname(); public IP_Address getaddress(); } public class NetworkAdapter{ private Sink s; } 44 22

Aggregazione E una relazione di tipo gerarchico : una classe che rappresenta una entità autonoma una classe che rappresenta che aggrega l' entità autonoma Esempio: auto = motore + 4 ruote + scocca +... altre cose Denominata anche: relazione whole-part Rappresentata mediante una linea tra la classe aggregante e quella aggregata. All'estremità della classe aggregante, la linea ha un rombo bianco 45 Alcuni esempi di aggregazione La marina militare contiene molte navi da guerra. Alcune navi da guerra possono essere rimosse ed è ancora una marina. Alcune navi da guerra possono essere aggiunte, ed è ancora una marina. Una squadra è composta da membri del team. Una persona potrebbe essere un membro di molte squadre. Si tratta di un esempio di aggregazione condivisa, dove le persone sono le parti condivise. 46 23

Aggregazione l'aggregazione non impone vincoli sul ciclo di vita degli elementi aggregati le aggregazioni circolari sono semanticamente errate A aggregab B aggregac C aggregaa 47 Aggregazione in Java public class Cluster { private Vector<Sensor> vsensor; public Cluster (Vector<Sensor> s){ this.vsensor= s; } } 48 24

Composizione E un aggregazione forte Le istanze composte non devono essere create con l istanza della classe componente Una volta create, le istanze composte seguono il ciclo di vita dell istanza che le compone Dipendentemente dall'ambiente di sviluppo: la classe composita elimina le parti in un momento antecedente alla propria distruzione (in C++) l'implementazione è strutturata in modo che le istanze create con la composizione siano distrutte (con il garbage collector in Java) 49 Alcuni esempi di composizione Il rombo scuro mostra la relazione di composizione, che vuol dire che finestra contiene (è aggregata di) molti menu, pulsanti, caselle di riepilogo, e descrizione testuale. Tutti i tipi di composizione possono avere un nome. 50 25

Composizione Conseguenze : Un oggetto può essere parte di un solo oggetto composto alla volta, mentre nella relazione di aggregazione una parte può essere condivisa tra più oggetti composti. È rappresentata mediante una linea tra la classe che compone (whole) e quella componente (part). All'estremità della classe che compone, la linea ha un rombo nero. 51 Composizione in Java public abstract class Sensor { private NetworkAdapter na; public Sensor (NetworkAdapter net){ this.na = new NetworkAdapter(); /* Copy the state of net * into this.na */ } } 52 26

Dipendenza È una relazione tra due elementi dove il cambiamento di un elemento può causare il cambiamento nell altro non necessariamente è implicato il viceversa Rappresentata mediante una linea tratteggiata che collega le classi in relazione 53 Questions? catia.trubiani@univaq.it 54 27