Introduzione a UML. + Classi e oggetti. Ingegneria del Software B a.a /2010 Laura Semini. Ruolo dell analisi e della progettazione

Documenti analoghi
Ingegneria del Software 6. Classi e oggetti. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Alcuni diagrammi. OCL (Object Constraint Language)

1. UML 2 ed il Processo Unificato

Indice. Prefazione. 3 Oggetti e Java 53

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring

UML I diagrammi implementativi

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Introduzione ad UML E.

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

SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni

Funzioni, Stack e Visibilità delle Variabili in C

Programmazione ad Oggetti

Programmi e Oggetti Software

Programmi e Oggetti Software

UML come abbozzo. Introduzione all UML. UML come linguaggio x programmi. UML come progetto dettagliato

Laboratorio di Sistemi Software UML per Design Patterns e Refactoring

SOMMARIO. DIAGRAMMI DELLE CLASSI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova. Introduzione. Proprietà e Operazioni

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

I Diagrammi di Flusso OO

Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2006/2007

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Programmazione ad oggetti

Introduzione a UML. obiettivo di questa introduzione

Analisi e diagrammi di struttura: esercizi

Progettazione del Software

UniRoma2 - Ingegneria del Software 1 1

Il PROCESSO UNIFICATO

Ingegneria del Software 3. Analisi dei requisiti. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Analisi Orientata agli Oggetti

Tipi di Dati Astratti

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione con Java

Ingegneria del Software

Progettazione di basi di dati

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Sistemi Informativi I Strumenti - UML

Linguaggi, Traduttori e le Basi della Programmazione

Microsoft Visio 2002 UML Sergio Colosio

UML e i linguaggi di programmazione non OO

Introduzione alle Basi di Dati

Introduzione alla programmazione Object Oriented. Luca Lista

Introduzione alla OOP Object Oriented Programming

Ingegneria del Software

Ingegneria del Software

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Introduzione a UML. Obiettivi. Unified Modeling Language. Gli autori di UML. Cos è UML. Cos è UML (cont.) Unified Modeling Language

Linguaggi di Modellazione & UML

LE BASI DI DATI. Prima parte Premesse introduttive I MODELLI DEI DATI

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

14 - Metodi e Costruttori

Unità A2. Progettazione concettuale. Obiettivi. Astrazione. Astrazione per aggregazione

R. Orsini - A. Roncato - F. Dalla Libera

Basi di dati a oggetti

FONDAMENTI DI INFORMATICA

Diagrammi di classe e sistemi orientati agli oggetti

Fondamenti di Informatica T-1

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

Modellazione dei dati in UML

Elena Baralis 2007 Politecnico di Torino 1

Introduzione Programmazione Java

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Basi di Dati. Progettazione di una Base di Dati. Progettazione di una Base di Dati

Informatica I. Ingegneria Medica. Prof. Diego Salamon

SISTEMI INFORMATIVI TERRITORIALI DATABASES -LEZIONE 3

Basi di Dati Concetti Introduttivi

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Progettazione di basi di dati

Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

oggetti: Cenni generali Programmazione ad Ingegneria Informatica e dell'informazione Michelangelo Diligenti

Definizione di classi. Walter Didimo

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

Modellazione funzionale con Data Flow Diagram

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Le Basi di dati: progettazione concettuale

Object Oriented Programming

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Ingegneria del Software 8. Diagrammi di attività. Dipartimento di Informatica Università di Pisa A.A. 2014/15

SOMMARIO CHE COS È UML

Introduzione alla programmazione

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Corso di Informatica

UML Diagrammi delle classi. UML Diagramma classi 1

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Principi di Progettazione del Software a.a

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

Silvia Crafa

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

Ereditarietà e Polimorfismo

Transcript:

Introduzione a UML + Classi e oggetti Ingegneria del Software B a.a.. 2009/2010 Laura Semini 1 Ruolo dell analisi e della progettazione Most of the popular approaches to the SW development are currently evolutionary analisi peliminare analisi e progettazione realizzazione Strumenti automatici di supporto alla realizzazione Necessità di un maggior supporto alle attività di analisi e progettazione. 2

UML Unified Modelling Language Metodo Booch OOD OMT, Object Modelling Technique (Rumbaugh) OOSE (Jacobson): linguaggio di modellazione OO Standard OMG (Object Management Group) consorzio di aziende (CORBA) standard non proprietario UML 2.0 ufficializzato nel 2005 3 Generalità Modellazione in tutte le fasi del processo di sviluppo Applicabile a molti tipi di progetti e domini Indipendente dal linguaggio di sviluppo dal modello di processo Unificazione a livello di linguaggio non a livello di metodo 4

Visualizzazione Obiettivi di UML Comunicazione e comprensione Specifica e documentazione Descrizione del sistema in tutti i suoi livelli Realizzazione Supporto all automazione della codifica 5 Concetti di UML Modello: astrazione di (parte di) un sistema ESEMPIO: Auto il modellino mignon, il progetto della stessa la formula per il calcolo dello spazio di frenata Modello statico: Descrive gli elementi del sistema e le loro relazioni Modello dinamico: Descrive il comportamento del sistema nel tempo Progetto (o anche disegno) Insieme dei modelli: le diverse dimensioni del sistema Esistono disegni con preponderanza modelli statici: DB dinamici: sistemi di controllo, di calcolo Vista: descrizione di un aspetto di un modello 6

Caratteristiche dei modelli UML Tolleranza a inconsistenze e incompletezza Supporto al dialogo tra le parti interessate Meccanismi di strutturazione (package) Personalizzazione mediante stereotipi Strumenti di supporto disponibili sul mercato 7 Come usare UML Un progetto può essere realizzato come: Abbozzo (sketch) Progetto dettagliato (blueprint) Eseguibile (UML come linguaggio di programmazione) Secondo due prospettive Software: elementi UML corrispondono a el.ti sw Concettuale: dominio 8

9 Metamodello di UML Per specificare la sintassi e la semantica Gli utilizzatori sono i costruttori dei tools e i modellatori esperti. UML descrive il proprio metamodello in UML, come alcuni compilatori che vengono utilizzati per compilare se stessi. Stile semi-formale che combina linguaggio naturale e formale. Esiste una rappresentazione XML del metamodello che si chiama XMI (XML Metadata Interchange) 10

Elementi di base di UML 11 I concetti del dominio Modello statico modellati mediante classi e relazioni Realizzazione del sistema classi di realizzadione, componenti e nodi Assenza degli aspetti dipendenti dal tempo 12

Modello dinamico Modella il comportamento delle entità descritte nel modello statico Il modello dinamico si basa su quello statico 13 Diagrammi Rappresentazione grafica di un insieme di elementi del modello secondo una certa vista Grafo Vertici Archi elementi del modello relazioni 14

Diagrammi delle classi degli oggetti delle componenti di struttura composita di macchina a stati dei casi d uso di attività di sequenza di dislocazione dei packages 15 Diagrammi e modelli I diagrammi si usano per costruire i modelli I diagrammi non sono i modelli Un modello è un grafo di elementi semantici Un diagramma è un grafo di elementi visuali che rappresentano gli elementi semantici Negli strumenti di supporto Un modello è la struttura su cui si opera Un diagramma è una struttura di presentazione Non eliminare un elemento solo da un diagramma 16

Una classe cattura Classi e oggetti un concetto nel dominio del problema o della realizzazione Una classe descrive un insieme di oggetti con caratteristiche simili cioè oggetti che hanno lo stesso tipo Un oggetto è un entità caratterizzata da Un identità Uno stato Un comportamento 17 Classificatori e istanze Le classi sono classificatori Gli oggetti sono istanze Modellare a livello dei classificatori significa vincolare i modelli a livello di istanza 18

Classificatori e istanze (continua) In teoria i modelli a livello di istanza possono esistere solo in un ambiente definito dai modelli a livello dei classificatori Le variabili in un linguaggio fortemente tipato possono vivere solo in un ambiente in cui il tipo è definito In pratica UML è più flessibile Si possono introdurre oggetti senza definirne le classi UML tollera le inconsistenze 19 Classi UML vs entità (DB) DB: le classi sono intese come collezioni. Sottointeso che ci sono più istanze. ci sono operazioni per visitare tutte le istanze. Da cui, per esempio, nome singolare vs nome plurale. La differenza è significativa più in prospettiva di progettazione che di descrizione del dominio. In progettazione OO e quindi in UML uso ListaDiQcosa come aggregato di Qcosa Un esempio dal dominio: Catena * Supermercato Supermercati 20

Esempio: classi Una società è formata da dipartimenti e uffici Un dipartimento ha un direttore e più dipendenti Un dipartimento è situato in un ufficio Esiste una struttura gerarchica dei dipartimenti Le sedi sono uffici 0..1 dipendente Dipartimento 1..* Persona nome: String getdata() getphoto() * Società * 1..* 1..* 1..* 1 direttore 1 locazione 1..* 1 Ufficio Sede 21 Esempio: oggetti Una società reale, ACME Ha due Uffici Il dipartimento vendite è a New York I dipartimenti Ricerca&Sviluppo e Servizi sono a San Francisco acme: Società o1: Ufficio o2: Ufficio nome = New York nome = Frisco d1: Dipartimento d2: Dipartimento nome = Sales nome = R&D d3: Dipartimento nome = Services 22

Sintassi della classe Nome (UpperCamelCase) Libro attributi (lowercamelcase codice: int operazioni (lowercamelcase) cambiacodice(newcode: int) sottosezioni (compartments) 23 Se non interessano attrib. e operazioni Libro 24

Sintassi della classe nome (maiuscolo) attributo privato LibroDellaBiblioteca attributo pubblico - codice: int + titolo: String operazione privata operazione pubblica - cambiacodice(newcode: int) + gettitolo( ): String sottosezioni (compartments) 25 Semantica Un oggetto è un entità caratterizzata da Un identità, uno stato, un comportamento L identità si vede a livello di istanza Gli attributi definiscono lo stato dell oggetto Le operazioni definiscono il suo comportamento 26

Spazio dei nomi Un classificatore è uno spazio di nomi Gli elementi contenuti hanno un nome unico. Per esempio un Package è un costrutto di strutturazione può contenere package innestati e altri elementi (classi, diagrammi ). 27 Visibilità Un elemento è visibile all esterno dello spazio di nomi che lo contiene, in accordo con il suo tipo di visibilità + public: tutti # protected: i discendenti - private: solo nell elemento stesso ~ package: nello stesso package 28

Sintassi attributi visibilità nome: tipo [molteplicità]= valoreiniziale {proprietà} obbligatorio molteplicità: array di valori colore: Saturazione [3] nome: String [0..1] 0 per permettere valore null [1] può essere omesso proprietà {ordered} {>=0} 29 Visibilità di attributi e operazioni In modo simile alla visibilità della classe + public: accessibile ad ogni elemento che può vedere e usare la classe # protected: accessibile ad ogni elemento discendente - private: solo le operazioni della classe possono vedere e usare l elemento in questione ~ package: accessibile solo agli elementi dichiarati nello stesso package 30

Esempi numero di tipo intero n: Integer numero intero positivo n: Integer{>= 0} contatore positivo, inizialmente a 0 n: Integer =0 {>= 0} 31 Esempi Punti del quadrante positivo, pubblico + puntiquadpos : Integer [2] {>= 0} sequenza ordinata di 10 interi compresi tra 3 e 33, privato - seq: Integer[10] {>= 3, <= 33, ordered} 32

Sintassi operazioni visibilità nome (listaparametri) : tiporitorno {proprietà} obbligatori può essere vuota listaparametri default direzione nome: tipo = default in, out, inout valore assegnato al parametro in assenza di argomento 33 Esempi Metodo pubblico che restituisce la somma di 2 interi + sum (a: Integer, b: Integer) : Integer sum con 10 valore di default del secondo parametro + sum (a: Integer, b: Integer =10) : Integer Metodo privato che restituisce un oggetto di tipo Gra - gra () : Gra 34

attributi e operazioni con ambito di classe (statici) sottolineati Classe + numeroistanze : Integer =0 + sum (a: Integer, b: Integer) : Integer 35 Esempio 36

Diagrammi degli oggetti nome lista attributi sottolineato solo 2 sottosezioni Sotto sezione attributi opzionale 37 Diagrammi degli oggetti: nome nomeoggetto: Nomeclasse minou: Gatto nomeoggetto minou : Nomeclasse : Gatto nomeoggetto: Nomeclasse, Nomeclasse minou: Gatto,Cantante 38

Diagrammi degli oggetti: attributi nomeoggetto: nomeclasse attr1: tipo = valore attr2: tipo = valore attr3: tipo = valore singoli attributi opzionali Il valore può essere omesso Il tipo è ridondante e può essere omesso 39 Classi e Oggetti Punto x : Real y: Real colore: Saturazione [3] p1: Punto x =3,14 y= 2,78 x =1 y= 2 p2: Punto 40

Individuare le classi di analisi Cosa sono le classi di analisi Come sono fatte Tecniche per individuarle Nome-verbo CRC 41 Cosa sono le classi di analisi Corrispondono a concetti concreti del dominio: Per esempio i concetti descritti nel glossario Normalmente, ciascuna classe di analisi sarà raffinata in una o più classi di progettazione. Evitare di introdurre delle classi di progettazione 42

Classi di analisi: caratteristiche Astrazione di uno specifico elemento del dominio Numero ridotto di responsabilità (funzionalità) Evitare le classi onnipotenti Attenzione quando si chiamano sistema, controllore,... Evitare funzioni travestite da classi Evitare gerarchie di ereditarietà profonde (>=3) Coesione e disaccoppiamento Tenere responsabilità simili in una classe Limitare interdipendenze tra classi 43 Classi di analisi: livello di dettaglio Operazioni e attributi solo quando veramente utili Le classi di analisi dovrebbero contenere attributi e operazioni ad alto livello Limitare la specifica di tipi, valori, etc. Non inventare mai niente! 44

Identificazione delle classi Problema classico delle prime fasi di sviluppo Approccio data driven Si identificano tutti i dati del sistema e si dividono in classi (ad esempio mediante identificazione dei sostantivi) Approccio responsibility driven Si identificano le responsabilità e si dividono in classi (ad esempio mediante CRC Cards) 45 Analisi nome-verbo Sostantivi classi o attributi Verbi responsabilità o operazioni Passi: 1. Individuazione delle classi 2. Assegnazione di attributi e responsabilità alle classi 3. Individuazione di relazioni tra le classi 46

Problemi ricorrenti : Analisi nome-verbo Tagliare le classi inutili Trattare i casi di sinonimia Individuare le classi nascoste cioè le classi implicite del dominio del problema che possono anche non essere mai menzionate esplicitamente In un sistema di prenotazione di una compagnia di viaggi si potrebbe parlare di prenotazione, richiesta, ma tralasciare il termine ordine 47 Tagliare le classi inutili 1. Elenco dei sostantivi 2. Eliminazione dei sostantivi riconosciuti come Sinonimi Eventi o operazioni Metalinguaggio Inutili Attributi (sistema) (estranei al sistema) (titolo del libro...) 48

Quidditch Il preside di Hogwarts, Albus Silente, chiede la realizzazione di un sistema per la visualizzazione e l archiviazione dei punti segnati durante le partite del campionato di Quidditch del collegio. Il sistema deve permettere di gestire i seguenti eventi: inizio partita, goal (con punti realizzati e nome del realizzatore), cattura del boccino (con punti realizzati e nome del cercatore), fine partita. Vengono inseriti dall aiuto arbitro. Siccome si possono portare le bacchette magiche in campo il sistema dovrà garantire opportuna sicurezza. Sinonimi Eventi o operazioni Metalinguaggio Inutili Attributi 49 CRC Cards Class, Responsibilities, Collaboration Cards Ideate da Ward Cunningham e Kent Beck (Smalltalk) come una tecnica per insegnare a programmatori con esperienza in linguaggi non--oo a pensare in termini di oggetti. Non fanno parte di UML, ma sono utili per realizzare i diagrammi UML 50

Responsabilità CRC Cards Una funzionalità che la classe deve realizzare Collaboratore Le classi che partecipano alla realizzazione di una data responsabilità 51 Struttura delle CRC Cards La notazione usata per rappresentare le CRC cards è la seguente: fare una tabella con il nome della classe in cima, sotto a sinistra le responsabilità e a destra, per ogni responsabilità, I collaboratori. Copia di libro Responsabilità Collaboratori Mantenere lo stato di una particolare copia di un libro Informare il libro su prestiti e restituzioni Libro 52

Syllabus Arlow Capitolo 1. tranne 1.9.4 (per ora) Capitolo 7 Capitolo 8, tranne 8.2 e 8.4.3. 53