UML: Class Diagram Corso IS I /03

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Progettazione concettuale
Unified Modeling Language
Recupero debito quarto anno Primo incontro
Progettazione concettuale
PHP.
UML: Class Diagram 1 Corso IS I /03
1 Semantica Operazionale di un frammento di Java: lo stato.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Le gerarchie di tipi.
Semantica Operazionale di un frammento di Java: lo stato
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Query OQL e XQUERY a confronto
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
Programmazione orientata agli oggetti OOP Object Oriented Programming
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 1 Sulla realizzazione dellereditarietà 4 Ereditarietà: statica / dinamica 4 Binding: statico.
UML: Esempio “Briscola” Corso IS I /03
UML: Extension Mechanism Corso IS I /03 Gianna Reggio Versione 0.0.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso.
Lezione XI Laboratorio di Programmazione. Ereditarieta Fondamentale proprieta dei linguaggi OO. Permette di specificare un nuova classe derivata da unaltra.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
LA PROGETTAZIONE DELLE BASI DI DATI
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
UML: Collaboration diagram Corso IS I /03 Gianna Reggio Versione 1.0.
Il linguaggio UML Luca Lista.
Astrazione procedurale ed eccezioni
Briscola.
Programmazione ad oggetti
Diagramma delle Classi
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Alberi.
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
1 Progettare un Tipo di Dato Astratto. 2 Scelte di Progetto (astrazione) 4 Caratteristiche degli oggetti –Modificabilità 4 Scelta delle operazioni –Realizzare.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
UML: Sequence diagram Corso IS I /03 Gianna Reggio Versione 0.0.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
UML: Constraints-OCL Corso IS I /03
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0.
Esercitazione. Problema Vogliamo definire in modo gerachico un tipo di dato che definisce Tabelle multi-dimensionali con un numero di righe variabili.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Esercitazione sull’ ordinamento 20 maggio 2003
Esercizi UML.
Eprogram informatica V anno.
Cloud informatica V anno.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
La programmazione ad oggetti
28/12/2001package 1 Package Pacchetti e interfacce.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

UML: Class Diagram Corso IS I - 2002/03 Gianna Reggio Versione 0.1

Class Diagram definisce molti usi le classi (degli oggetti utilizzati in un certo modello) le loro features attributi operazioni/metodi le loro mutue relazioni esistenza di associazioni tra i loro elementi specializzazione/inheritance aggregazione/composizione molti usi modellazione concettuale specifica del design descrizione dell’implementazione …...

Starting point basato sugli usuali concetti OO ispirato da classe oggetto specializazzione …. ispirato da diagrammi entity-relationship dal mondo database

Classe nome della classe compartimento degli attributi Carta seme: String valore: Int ritornaValore(): Int compartimento degli attributi compartimento delle operazioni permesso Carta seme: String valore: Int Carta ritornaValore(): Int Carta compartimento mancante: nessuna informazione su i suoi elementi compartimento vuoto: nessun elemento di quel tipo Carta

visibilità di attributi/operazioni private (-) visibile solo dentro la classe public (+) visibile solo dentro la classe e quelle associate ad essa (legate da associazioni [vediamo dopo]) protected (#) visibile solo dentro la classe e le sue sottoclassi (specializzazioni [vediamo dopo])

tipi di attributi ed operazioni tipi predefiniti nel corso useremo quelli di OCL (prossimamente) Int, String, Bool, Real, enumeration, … ogni classe definita nel modello corrente

Attributi - valore[0..1]: Int = 0 visibilità omessa = private molteplicità - valore[0..1]: Int = 0 valore iniziale tipo nome visibilità omessa = private molteplicità omessa = [1] tipo omesso = non importa quale è

Operazioni + cambiaVal(nVal:Int) + ritornaValore(): Int visibilità + cambiaVal(nVal:Int) + ritornaValore(): Int parametri nessun parametro nome ritorna un valore visibilità omessa = public parametri per valore e per riferimento il nome può essere omesso

Metodi È possibile specificare un’operazione dandone un “body” per mezzo di un method Carta seme: String valore: Int ritornaValore(): Int { if (valore is not empty) then return self.valore else return 0 }

Associazioni tra classi, in genere binarie relazione tra le istanze di tali classe vari ruoli, dipende dall’uso del class diagram Carta Seme Mazzo tipo 10..* 1 nomi dei ruoli haTipo carteDelTipo nome contiene * 1..54 molteplicità

Aggregazione/Composizione associazioni speciali per indicare che gli oggetti di una classe sono fatti/o contengono oggetti di un’altra aggregazione Carta Mazzo contiene 1..54 parti aggregato composizione richiede coincidenza delle vite dell’aggregato e delle parti partecipanti Giocatore Partita 4 parti aggregato

Generalizzazione (Specializzazione) Giocatore Mazziere generalizzato (superclasse, supertipo) specializzato (sottoclasse, sottotipo) qualunque numero di livelli gerarchia di tipi inheritance degli attributi e delle operazioni della superclasse interpretazione dipende dall’uso del class diagram

Specializzazione multipla Giocatore Mazziere Normale {predefined constraint} predefined constraint può essere complete/incomplete ogni sottoclasse è/non è stata specificata disjoint/overlapping sottoclassi sicuramente disgiunte/possibilmente sovrapposte

Association qualifier Partita Torneo partite 1..* 1 giocataNel comprende sapere quante partite si giocano ogni giorno? Partita Torneo partite 1..24 1 giocataNel comprende data: Date Qaulifier richiede che per ogni data un torneo comprenda fino a 24 partite

Association class Association & class Giocatore 1 Partita data: Date risultato: ... ritornaVincitore(): ... Association & class è un’associazione caratterizzata da attributi ed operazioni

Association: modificabilità Carta Mazzo contiene * 1..54 {changeability constraint} changeability constraint può essere changeable: le carte associate ad un mazzo possono essere aggiunte e tolte frozen: le carte associate ad un mazzo non possono essere aggiunte e tolte addOnly: le carte associate ad un mazzo possono essere solamente aggiunte se manca è changeable

Association: ordinamento Carta Mazzo contiene * 1..54 {ordering constraint} ordering constraint può essere ordered: le carte associate ad un mazzo sono in ordine unordered: le carte associate ad un mazzo non sono in ordine l’ordine non è fissato se manca è unordered

Association: navigabilità Carta Mazzo contiene * 1..54 l’associazione è navigabile nelle due direzioni (le istanze di Mazzo possono mandare messaggi alle istanze di Carta e viceversa) se interessa un solo verso si può mettere la freccia all’associazione Carta Mazzo contiene * 1..54 solamente le istanze di Mazzo possono mandare messaggi a quelle di Carte