Analisi Orientata agli Oggetti

Documenti analoghi
Programmazione ad Oggetti

Ingegneria del Software

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

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

Il modello Entità/Relazioni (ER)

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Tecniche di sviluppo di progetti. Lezione 4: Diagrammi UML

Rappresentazione. Unified Modeling Language. Genesi dell UML. Principali Diagrammi UML. Unified Modeling Language (UML)

Progettazione orientata agli oggetti e UML

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

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

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

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Programmazione con Java

Progettazione orientata agli oggetti

Analisi e progettazione ad oggetti

Ingegneria del Software

Richiami su oggetti e OOP

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

Gerarchia di Generalizzazione. Esempio. Rappresentazione grafica. Cap. 4 - Modello E/R avanzato: Gerarchie di Generalizzazione/ specializzazione

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

Esercitazione di Basi di Dati

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

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Il modello Entity-Relationship: elementi avanzati

Prima di iniziare. Diamo qualche definizione :

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

SISTEMI INFORMATIVI TERRITORIALI DATABASES -LEZIONE 3

INTRODUZIONE ALLA PROGETTAZIONE. Patrizio Dazzi a.a

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

I Diagrammi di Flusso OO

Object-Oriented Programming

Informatica Industriale Modello funzionale: Informazione Modello Entità-Relazione

Introduzione alla OOP Object Oriented Programming

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Il modello Entity-Relationship: elementi avanzati

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

Programmazione ad oggetti

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO Regole di derivazione

Programmazione Orientata agli Oggetti

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

Introduzione alla programmazione Object Oriented. Luca Lista

Ingegneria del Software

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

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

Database. Cos è un database? Intro Tipi di entità Mapping ER/EER à Relazionale

Le Basi di dati: progettazione concettuale

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

Progettazione del Software

SISTEMI INFORMATIVI GEOGRAFICI (GIS)

Progettazione concettuale usando il modello Entità-Relazione (ER)

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Programma operativo Regione Lombardia/Ministero del Lavoro/Fondo Sociale Europeo, Obiettivo 3 Misura C3

I file utente sistema operativo nome

Elena Baralis, Claudio Demartini

IL MODELLO ENTITY RELATIONSHIP. il modello ER 1

Diagrammi di classe e sistemi orientati agli oggetti

diagrammi entità-relazioni

Modello Entità - Relazione. Basi di dati. Elena Baralis 2007 Politecnico di Torino D B M G D B M G2 D B M G4 D B M G6. Progettazione di basi di dati

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO Regole di derivazione Tabelle riassuntive

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

D B M G D B M G 2. Sistemi informativi. Progettazione di basi di dati

Modello Entità-Relazione

Il Dimensional Fact Model

Linguaggi di Programmazione I Lezione 4

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione è gestione di eventi

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Programmazione orientata agli oggetti Ereditarietà

Elena Baralis 2007 Politecnico di Torino 1

Progettare una base di dati. Progettare una base di dati

Oggetti e classi. Cos è un oggetto

Ereditarietà e polimorfismo

Algoritmi e Strutture Dati

IL MODELLO ENTITÀ- RELAZIONE. Gli altri costruttori

I modelli logici dei dati

Programmazione Java Avanzata Programmazione Object- Oriented in Java

UML I diagrammi implementativi

Lab metodi programmazione. Testi. Caratteristiche di Java. Paradigmi di programmazione. Linguaggio Java Progetto

Fondamenti di Informatica T-1

Il modello concettuale dei dati

UML GML- Classi di Oggetti

Basi di Dati - III. La costruzione di una base di dati. Progettazione concettuale di schemi. Esercizio: Segreteria studenti

POO in JAVA e Robot EV3

Linguaggi, Traduttori e le Basi della Programmazione

Basi di dati. Progettazione di basi di dati: Metodologie e modelli

Ereditarietà e Polimorfismo

RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

Lezione 3. Modellazione dei Dati mediante il Modello Entità Associazione (ER)

Programmi e Oggetti Software

Progettazione di basi di dati

CdL in Medicina Veterinaria - STPA AA

Programmi e Oggetti Software

Metodologie e Modelli di Progetto

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

Traduzione dello schema E-R in modello logico relazionale

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Le basi di dati. Lez. 2: Progettazione di un DB. Laboratorio di informatica gestionale

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

Transcript:

Generalità Concetti di base: Oggetto, Classe, Attributo, Operazione, Associazione, Aggregazione, Generalizzazione, Ereditarietà Il Diagramma delle Classi: notazione UML 1 Generalità Approccio all analisi del problema basato sul principio del partizionamento rispetto agli oggetti oggetti intesi come entità/ concetti del dominio del problema con un proprio stato (struttura dei dati) e comportamento (operazioni/funzioni) evoluzione del concetto di Tipo di dato Astratto Principali differenze dall approccio procedurale (orientato alle funzioni): nell approccio procedurale, struttura dati e funzioni sono debolmente connesse l approccio OO è applicabile a tutte le fasi di sviluppo, analisi, progettazione, codifica: cambia solo il livello di astrazione ma non i concetti e la notazione 2 1

Concetti fondamentali dell OO Un sistema OO è visto come una collezione di oggetti discreti che interagiscono attraverso i servizi che essi offrono Classe (di oggetti): incapsulamento di struttura dati e funzioni Relazione tra oggetti: associazione, aggregazione e generalizzazione Ereditarietà e polimorfismo (specifico della progettazione) 3 Oggetto Definizione generale un oggetto rappresenta una qualsiasi cosa (reale o astratta) che abbia un confine definito (concetto associato) Definizione più specifica un oggetto è qualcosa di identificabile, che ricorda il proprio stato, e che può rispondere a richieste di operazioni relative al proprio stato Proprietà dell oggetto: attributi (o variabili di istanza) che descrivono lo stato operazioni (o metodi) che descrivono il comportamento Gli oggetti interagiscono tra di loro richiedendo servizi o informazioni reciprocamente in risposta ad una richiesta, un oggetto può invocare una operazione che può cambiare il suo stato 4 2

Classe (di oggetti) Una classe rappresenta un gruppo di oggetti con proprietà simili (attributi), comportamento comune (operazioni), relazioni comuni con altri oggetti e semantica comune. I termini oggetto e istanza (di classe) sono interscambiabili Dal punto di vista formale una classe equivale al tipo di dato astratto (incapsulamento di dati ed operazioni sui dati) un oggetto è un elemento del tipo 5 Incapsulamento Nome classe Attributo 1 Attributo 2 Attributo 3 Operazioni Attributi Operazione 1 Operazione 2 Operazione 3 6 3

Classi e Oggetti Persona (Persona) Mario Rossi (Persona) Luigi Verdi (Persona) Fabio Bianchi Classe Oggetti 7 Attributi Un attributo è una proprietà statica di un oggetto nome, età, peso sono attributi della classe Persona colore, peso, anno, modello sono attributi della classe Auto Un attributo contiene un valore per ogni istanza l attributo età ha valore 24 nell oggetto Mario Rossi I nomi degli attributi devono essere unici all interno di una classe Il valore di un attributo non ha identità (non è un oggetto) tutte le occorrenze di 24 sono indistinguibili 8 4

Operazioni Un operazione è un azione che un oggetto esegue su un altro oggetto e che determina una reazione Le operazioni su di un oggetto operano sui dati incapsulati dell oggetto Tipi di operazione selettore (query): accedono allo stato dell oggetto senza alterarlo (es. lunghezza della classe coda) modificatore: alterano lo stato di un oggetto (es. appendi della classe coda) Operazioni di base per una classe di oggetti: costruttore: crea un nuovo oggetto e/o inizializza il suo stato distruttore: distrugge un oggetto e/o libera il suo stato 9 Operazioni.. Nome classe Nome operazione Nome operazione (lista argomenti): tipo risultato Persona nome età cambia-lavoro() cambia-indir() File nome dimensione ultimo_aggiorn. Stampa( ) Oggetto geometrico colore posizione muovi(delta:vettore) seleziona(p:punto):boolean ruota(angolo) 10 5

Legami e Associazioni Un legame rappresenta una relazione (fisica o concettuale) tra oggetti es. Mario Rossi lavora per Dipartimento di Informatica Un associazione descrive un gruppo di legami aventi struttura e semantica comuni es. Persona lavora per Dipartimento Le relazioni sono bidirezionali sebbene il nome della relazione faccia riferimento ad un unica direzione 11 Associazioni e legami Nazione nome ha per capitale Città nome Diagramma delle classi (nazione) nome=canada ha per capitale (Città) nome=ottawa Diagramma degli oggetti (nazione) nome=italia ha per capitale (Città) nome=roma 12 6

Molteplicità delle associazioni (notazione UML) La molteplicità specifica quante istanze di una classe possono essere associate con una singola istanza di un altra classe Il simbolo di molteplicità adiacente alla classe 2 indica quante istanze della classe 2 possono avere legami con una singola istanza della classe 1 classe1 nome associazione 1 classe2 Uno ed uno solo classe1 nome associazione classe2 Opzionale (zero o uno) 0..1 classe1 nome associazione 0..* classe2 molti (zero o più di uno) classe1 nome associazione 1..* classe2 Uno o più di uno 13 Classe associativa e attributi di legame E utilizzata per modellare proprietà delle associazioni Un attributo di una classe associativa contiene un valore per ogni legame E in genere usata nelle associazioni molti-a-molti File accessibile da 0..* 1..* Utente Accesso permess o 14 7

Ruoli I ruoli forniscono una modalità per attraversare relazioni da una classe all altra i nomi di ruolo per una classe sono posti alla fine della relazione con un altra classe i nomi di ruolo possono essere usati in alternativa ai nomi delle associazioni I ruoli sono spesso usati per relazioni fra oggetti della stessa classe Utente 0..*Utente autorizzato 0..* proprietario 0..* Directory contenitore contenuto contiene 15 Aggregazione La relazione di aggregazione è un associazione speciale che aggrega gli oggetti di una classe componente in un unico oggetto della classe la si può leggere come è composto da in un verso e è parte di nell altro verso Proprietà transitività: se A è parte di B e B è parte di C, allora A è parte di C antisimmetria: se A è parte di B, allora B non è parte di A dipendenza: un oggetto contenuto potrebbe non sopravvivere senza l oggetto contenente Un albero di aggregazione rappresenta una classe con più di una relazione di aggregazione 16 8

Aggregazione classe composta classe composta 0..* classe componente classe parte 1 0..* classe parte 2 17 Aggregazione: un esempio documento titolo 0..1 sottosezione 1 0..* sezione 0..* paragrafo 1..* frase 18 9

Generalizzazione/specializzazione La relazione di generalizzazione rappresenta una tassonomia delle classi la classe generale è detta superclasse ogni classe specializzata è detta sottoclasse Può essere letta come è un tipo di (verso di generalizzazione) può essere un (verso di specializzazione) Ogni oggetto di una sottoclasse è anche un oggetto della sua superclasse 19 Generalizzazione superclasse sottoclasse1 sottoclasse2 Notazione UML 20 10

Ereditarietà L ereditarietà è un meccanismo di condivisione delle proprietà degli oggetti in una gerarchia di generalizzazione Tutte le proprietà (attributi e operazioni) di una superclasse possono essere applicati alle sottoclassi (sono ereditati) generalizzazione ed ereditarietà godono della proprietà transitiva è possibile definire nuove proprietà per le sottoclassi è possibile ridefinire le proprietà ereditate (eredità non stretta) 21 forma geometrica colore posizione riferimento spessore tratto muovi( ) seleziona( ) ruota( ) mostra( ) forma adimensionale forma monodimensionale orientamen to forma bidimensionale orientamento tipo-riempimento scala( ) riempi( ) punto linea punt i final arco raggio angolo polilinea pun ti poligono numero lati vertici cerchio centr o 22 11

Ereditarietà multipla Una sottoclasse ha più di una superclasse ed eredita la proprietà da tutte le superclassi comoda nella modellizzazione ma può creare conflitti nella realizzazione persona docente studente non docente dottorando studente_cdl studente_du istruttore corso 23 Un insieme di linee guida per l analisi Come condurre l analisi? Non esistono algoritmi, ma solo linee guida per condurre l analisi I passi fondamentali secondo l approccio di Code e Yourdon Identificare gli oggetti Identificare le strutture Identificare gli attributi Identificare le associazioni Definire i servizi 24 12

Linee guida per Identificare gli oggetti A partire da una descrizione del problema, identificare gli oggetti candidati fra i nomi corrispondenti a: entità fisiche, dispositivi, eventi ricordati, ruoli giocati, organizzazioni, etc. Un candidato può essere scelto come un oggetto se il sistema ha bisogno di ricordare qualcosa riguardo all oggetto se il sistema ha bisogno di qualche servizio offerto dall oggetto, per svolgere le sue funzioni se l oggetto presenta molti attributi 25 Identificare le strutture Catturare le relazioni di generalizzazione-specializzazione e quelle di aggregazione (tutto-parti) identificare le classi più generali e derivare quelle più specializzate che aggiungono o ridefiniscono attributi/ servizi es. In una libreria, gli oggetti da leggere possono specializzarsi in libri, riviste, giornali identificare oggetti in relazione di tutto-parti con altri oggetti es. la libreria (il tutto) si compone degli oggetti libro, rivista, materiale audio-visivo 26 13

Identificare gli attributi Per ciascun oggetto, valutare quali sono gli attributi che risultano rilevanti nel dominio del problema es. uno stesso attributo dell oggetto Persona (es. Altezza) può essere rilevante o meno a seconda del problema analizzato Collocare correttamente gli attributi nelle gerarchie di oggetti un attributo comune ad una gerarchia di oggetti, dovrebbe essere definito all interno della classe più generale (la superclasse), mentre quelli specifici di un oggetto specializzato, andranno nella classe specializzata (la sottoclasse) 27 Identificare le associazioni Le associazioni devono descrivere relazioni permanenti fra oggetti delle classi, non transitorie, legate ad un evento passeggero es. Persona lavora per Dipartimento Qualunque dipendenza fra due o più classi è una associazione una classe richiede una qualche risorsa dell altra Un riferimento da una classe ad un altra può essere modellato come una associazione 28 14

Identificare i servizi Ciascun oggetto offre servizi ad altri oggetti che ne fanno richiesta mediante un messaggio Identificare prima i servizi necessari per creare, distruggere e modificare le istanze della classe questi servizi non sono in genere evidenziati sul modello ad oggetti quindi identificare gli altri servizi necessari al sistema per fornire le funzionalità desiderate 29 L esempio del Ristorante Obiettivi richiesti al sistema: automatizzare la produzione del conto ai clienti, ottenere statistiche sulle vendite, determinare discordanze fra le forniture ricevute e quelle consumate, automatizzare gli ordinativi delle forniture Dalla descrizione del dominio del problema e dagli obiettivi richiesti al sistema si ottiene un primo insieme di oggetti candidati: Ristorante, Proprietario, Conto, Menu, Ordine-Cliente, Fornitore, Ordine-Fornitore, Gestore-Ordini, Piatti. Vanno eliminati gli oggetti: Proprietario, Piatti, Fornitore... perchè il sistema non deve conservare alcuna informazione su di essi 30 15

Modello ad oggetti iniziale Gestione Forniture Ordine-Fornitore Ristorante Menu Ordine Conto 31 Passi successivi Il Ristorante costituisce una aggregazione di Menu e di Gestione-Forniture Un Menu è una aggregazione di molte Voci-Menu (nuovo oggetto) Un Ordine-Fornitore è un aggregato di molti Elementifornitura (nuovo oggetto) Tra Ordine-Fornitore ed Elementi-fornitura c è una associazione con un attributo quantità Scelta degli attributi e delle associazioni Scelta dei servizi 32 16

Gestore Forniture Credito-Fornitura( ) Debito-Fornitura( ) Ordine-Fornitore 1..* Produci-assegno() Elemento-fornitura Nome-elemento Prezzo-unitario Ristorante quan.forn. Statistiche( ) Report-discrepanze( ) Menu Voce Menu Nome Numero Prezzo 1..* Forniture-usate 1..* Ordine 1..* Produci-conto( quantità forn. 33 17