progettare buone gerarchie



Documenti analoghi
Lezione 4. Modello EER

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

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

Il modello EER comprende tutti i concetti di modellazione del modello ER, cui si aggiungono:

Soluzione dell esercizio del 2 Febbraio 2004

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

Traccia di soluzione dell esercizio del 25/1/2005

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

Progettazione del Software

Modulo 4: Ereditarietà, interfacce e clonazione

Il Modello Relazionale

MODELLO RELAZIONALE. Introduzione

UML Diagrammi delle classi. UML Diagramma classi 1

Object Oriented Software Design

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

Corso di Informatica

Progettare una base di dati che permetta di gestire il problema descritto nel seguito, nei seguenti punti:

Concetti di base di ingegneria del software

Corso di Informatica

Progettazione : Design Pattern Creazionali

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:

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

I Sistemi Informativi

Strumenti di modellazione. Gabriella Trucco

Capitolo 2. Operazione di limite

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

Capitolo 13: L offerta dell impresa e il surplus del produttore

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011.

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Derivate Limiti e funzioni continue

Object Oriented Programming

Diagrammi dei package

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

LE FUNZIONI A DUE VARIABILI

Lezione 2. Il modello entità relazione

Progettaz. e sviluppo Data Base

Rappresentazione grafica di entità e attributi

Dispensa di database Access

2 FUNZIONI REALI DI VARIABILE REALE

Dalla progettazione concettuale alla modellazione di dominio

Alessandra Raffaetà. Basi di Dati

Programmazione a Oggetti Lezione 10. Ereditarieta

Ingegneria del Software: UML Class Diagram

Progettazione di Basi di Dati

CONTINUITÀ E DERIVABILITÀ Esercizi proposti. 1. Determinare lim M(sinx) (M(t) denota la mantissa di t)

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

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

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Lezione 8. La macchina universale

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

1 Giochi a due, con informazione perfetta e somma zero

Funzioni. Funzioni /2

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

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

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

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

Realizzazione di una classe con un associazione

Progetto PI , passo A.2 versione del 6 febbraio 2007

Università degli Studi di Trieste

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

Modelli 1D/2D Modelli 1D/3D. Modelli 2D/3D Modelli 3D/3D. Spline Bezier B Spline NURBS Nuvole di punti e triangoli. Caterina RIZZI

UML Unified Modeling Language

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

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

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

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Si formulino le seguenti interrogazioni tramite il linguaggio SQL:

Elementi di semantica operazionale

(anno accademico )

object oriented analysis

Modello dei Dati ENTITÀ-RELAZIONE (ENTITY-RELATIONSHIP) é l insieme di concetti, simboli, regole che useremo per rappresentare il modello concettuale

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Struttura di un programma Java

Modellazione dei dati in UML

RMI Remote Method Invocation

Corso di. Dott.ssa Donatella Cocca

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Progettazione ad oggetti

Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto:

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

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

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Elementi di semantica denotazionale ed operazionale

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

UML: Class Diagram. Ing. Orazio Tomarchio

UML Component and Deployment diagram

LE FORME GEOMETRICHE dalle scatole alle forme

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

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Identificare le classi in un sistema

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Programmi e Oggetti Software

Oggetti Lezione 3. aspetti generali e definizione di classi I

FUNZIONE. Si scrive: A B f: A B x y=f(x) (si legge: f funzione da A in B) x f y= f(x)

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Transcript:

progettare buone gerarchie 1 generalizzazione permette di definire dettagli del modello a vari livelli di astrazione 2

generalizzazione le istanze delle classi più specifiche sono istanze anche delle classi generali ecco perché tale relazione viene detta anche is-a (è-un) in termini di diagramma di Venn: Shape Polygon Ellipse Spline 3 generalizzazioni complete e incomplete incomplete Shape Polygon Ellipse Spline complete Shape Polygon Ellipse Spline 4

sottoclassi sovrapposte esempio di classi sovrapposte (overlapping) Poligoni Triangoli Poligoni Regolari più classificazioni indipendenti Poligoni Triangoli Quadrangoli Pentagoni Regolari Convessi 5 generalizzazioni: notazione UML discriminator attenzione, queste sono classi astratte! se nulla è detto le classi si considerano disgiunte esercizio: disegna il diagramma di Venn della gerarchia UML mostrata sopra 6

polimorfismo è il più importante aspetto implementativo del concetto di generalizzazione istanze di classi derivate possono essere usate come istanze di classi più generali supportato da tutti i linguaggi object oriented alle volte con delle limitazioni es. in C++ solo per oggetti puntati estremamente importante per la buona strutturazione dei modelli/progetti/sistemi 7 polimorfismo: esempio Registro reportbollo() 1 Veicolo gettarga(): String calcolabollo(): Money Automobile 0..* {incomplete} Camion calcolabollo(): Money Registro::reportBollo() ListOfVeicolo g; // g inizializzata forall v elements of g print v.gettarga(), v.calcolabollo() quali parti del modello (o del codice) si devono modificare se......si aggiunge un tipo di veicolo?...si elimina un tipo di veicolo?...un tipo di veicolo cambia caratteristiche? 8

generalizzazione come relazione è un un quadrato è un tipo di rettangolo, usereste la generalizzazione per modellare il fenomeno? Rettangolo getarea(): real getperimetro(): real getaltezza(): real getlarghezza(): real Quadrato getarea(): real getperimetro(): real getaltezza(): real getlarghezza(): real in un quadrato altezza e larghezza sono uguali 9... fate attenzione ed ora? Rettangolo getarea(): real raddoppiaaltezza(a) modifier Quadrato getarea(): real raddoppiaaltezza(a)!? non fidatevi mai dell interpretazione comune di è un per decidere la correttezza di una generalizzazione! specialmente in presenza di metodi modifier. 10

conformance: 100% rule tutte le caratteristiche delle classi o interfacce più generali sono (devono essere) proprie anche delle più specifiche attributi, associazioni, comportamento Payment amount: Money Sale Cash Payment Credi Card Payment Check Payment amount: Money amount: Money amount: Money implicito 11 conformità tra interfacce (o principio di sostituzione di Liskov) date due interfacce A e B B si dice conforme ad A se B contiene almeno tutti i metodi di A per ciascun metodo M A di A considero il corrispondente metodo M B di B, devono valere le seguenti implicazioni logiche pre M A pre M B cioè ogni volta che è lecito chiamare M A è lecito anche chiamare M B post M A post M B A B cioè ogni volta che faccio affidamento su post M A potrei fare affidamento su post M B poiché tutto ciò che è vero dopo una chiamata a M A lo è dopo una chiamata a M B 12

conformità: esempio 1 l interfaccia Rettangolo contiene i metodi post: ritorna l altezza e lo stato non è cambiato post: ritorna la larghezza e lo stato non è cambiato l interfaccia Quadrato contiene i metodi post: ritorna l altezza e l altezza è uguale alla larghezza e lo stato non è cambiato post: ritorna la larghezza e la larghezza è uguale all altezza e lo stato non è cambiato Quadrato è conforme a Rettangolo? 13 conformità: esempio 2 l interfaccia Rettangolo contiene i metodi post: ritorna l altezza e lo stato non è cambiato post: ritorna la larghezza e lo stato non è cambiato l interfaccia Quadrato contiene il metodo getlato(): real post: ritorna il lato del quadrato e lo stato non è cambiato quadrato non ha le operazioni getaltezza() e getlarghezza() Quadrato è conforme a Rettangolo? 14

conformità: esempio 3 l interfaccia Rettangolo contiene i metodi setaltezza(a: real ) pre: a è un real post: l altezza del rettangolo è a e la larghezza non è cambiata l interfaccia Quadrato contiene i metodi post: ritorna l altezza e l altezza è uguale alla larghezza post: ritorna la larghezza e la larghezza è uguale all altezza quadrato ha la stessa setaltezza() Quadrato è conforme a Rettangolo? lo stato di Quadrato è sempre consistente? 15 esercizio progetta le interfacce di quadrato e di rettangolo in modo che si possa leggere l altezza e la larghezza di rettangoli e quadrati si possano ottenere rettangoli per modifica dell altezza o della larghezza a partire da un dato rettangolo si possano ottenere quadrati che abbiano lato doppio rispetto ad un dato quadrato il principio di sostituzione sia soddisfatto 16

soluzione «interface» Rettangolo getaltezza(): real getlarghezza(): real modifyaltezza(real): Rettangolo modifylarghezza(real): Rettangolo «interface» Quadrato ereditato da Rettangolo doublelato(): Quadrato Quadrato fornisce anche i seguenti metodi ereditati getaltezza(): real getlarghezza(): real modifyaltezza(real): Rettangolo modifylarghezza(real): Rettangolo tali metodi sono coerenti con gli obiettivi della classe Quadrato 17