Programmazione con Java Astrazioni e UML Astrazioni Nella vita reale siamo abituati a osservare e descrivere oggetti a vari livelli di dettaglio Dai da mangiare a Fido Porta a passeggio il cane Di quale razza è quel cane? Bisogna amare gli animali Fido, cane, razza e animale sono denotazioni di oggetti a diverso livello di astrazione Astrazioni e UML 2
Classi e istanze Un oggetto con un insieme di proprietà Fido 7 kg nero abbaia morde chiama Un altro oggetto con un insieme di proprietà Pluto 36 kg bianco abbaia morde chiama Fido è un esemplare di cane Pluto è un esemplare di cane Astrazione instance of L oggetto modella le proprietà comuni di un insieme di oggetti quali attributi ha un cane come si comporta abbaia morde quali comandi può ricevere chiama Non è necessario descrivere separatamente Fido e Pluto: sono classificati come cani è quindi una classe Sappiamo già che Fido, in quanto cane, abbaia, morde e può essere chiamato personalizzare gli attributi: l oggetto di Fido è un cane nero il cui è 7 kg Astrazioni e UML 3 Classificazione e istanziazione Che legame esiste tra la classe e le sue istanze? Intuitivamente, è un concetto più astratto di Fido e Pluto Il legame è nei due sensi Classificazione: capire che Fido è un cane Definire la rappresentazione di un Istanziazione: creare istanze ( esemplari ) di Esempio: Fido, sapendo che è un cane, e specificando i dettagli (, ) Fido Pluto Astrazioni e UML 4 2
Astrazioni Il legame concettuale che esiste tra una classe e le sue istanze e un particolare esempio di astrazione Una astrazione è un procedimento concettuale per mezzo del quale Si definisce un concetto più generale (e in tal senso più astratto) a partire da concetti più elementari (e in tal senso più concreti) Rimuovendo dalla descrizione del concetto gli aspetti di dettaglio e particolari Mettendo in evidenza gli aspetti comuni e generali Astrazioni strutturali: modellano oggetti e relazioni fra oggetti Astrazioni e UML 5 Astrazioni di struttura Classificazione ( instance_of ) Lega istanze e classi La classe definisce le caratteristiche comuni degli oggetti di un insieme Ogni oggetto della classe possiede le proprietà definite dalla classe Esempio: Fido è un (esemplare di) Astrazioni e UML 6 3
Astrazioni di struttura 2 Generalizzazione ( is_a ) Lega una classe genitore (superclasse) a una o più classi figlie (sottoclassi) che ne sono sottoinsieme Ogni oggetto della sottoclasse appartiene anche alla superclasse Esempi I cani sono mammiferi La classe è una sottoclasse della classe Mammifero Gli oggetti di una classe appartengono anche a una classe più ampia Fido è un, quindi è anche un Mammifero Ogni esemplare di è anche un esemplare di Mammifero Ogni esemplare di possiede tutte le proprietà definite dalla classe e anche tutte le proprietà definite dalla classe Mammifero Astrazioni e UML 7 Astrazioni di struttura 3 Classificazione e Generalizzazione Attenzione: nel linguaggio comune, si usa è un in entrambi i sensi. Non confondere! Fido è un Fido è un oggetto concreto Un è un Mammifero un non è un oggetto concreto!!! Distinguere: Fido è un esemplare (instance_of) di è una sottoclasse (is_a) di Mammifero Astrazioni e UML 8 4
Astrazioni di struttura 4 Aggregazione ( part_of ) Lega una classe Aggregato con un insieme di classi Parti Ogni oggetto di Aggregato è costituito da oggetti delle classi Parti Caso particolare di Associazione Esempi: Un automobile comprende motore, carrozzeria, ruote Attenzione: non confondere aggregazione e generalizzazione! Un è un Mammifero (is_a) Un fa parte di un Branco (part_of) Un non è un Branco! Astrazioni e UML 9 Astrazioni di struttura 5 Associazione ( has_a ) Definisce una connessione logica fra oggetti di una classe e oggetti di un altra classe Esempi Classi:, Associazione: una è padrona di un Cani: Fido, Pluto Persone: Mario, Pino Mario è padrone di Fido Pino è padrone di Pluto Attenzione a non confondere Mario è padrone di Fido Fido non è parte di Mario Un non è una Astrazioni e UML 0 5
Formalismi di rappresentazione ER (Entity Relationships) entità relazioni nato nell area Basi Dati UML (Unified Modeling Language) classi proprietà relazioni comportamenti nato nell area Programmazione Esprimono concetti analoghi almeno per quanto riguarda le astrazioni di struttura usiamo UML Astrazioni e UML UML: diagramma delle classi Identificazione delle classi e delle relazioni fra le stesse: attività fondamentale in fase di analisi e di progetto Nome della classe Attributi Operazioni Astrazioni e UML 2 6
UML: diagramma degli oggetti Identificazione gli oggetti del sistema e dei loro stati durante la loro vita Nome oggetto Attributi specifici Fido : = nero = Fido = 0 Pluto : = marrone = Pluto = 5 Astrazioni e UML 3 Associazioni associazione possiede Un associazione è una linea che collega le classi coinvolte Astrazioni e UML 4 7
Associazioni possiede Nome: esprime il significato dell associazione Spesso è un verbo Opzionale (ma fortemente consigliato ) Astrazioni e UML 5 Associazioni ruolo ruoli cane possiede padrone Ruolo: esprime il ruolo giocato dal partner Spesso è un sostantivo o un aggettivo Opzionale (ma fortemente consigliato ) Astrazioni e UML 6 8
Associazioni cardinalità cane 0..* possiede cardinalità padrone 0.. Cardinalità: esprime quante istanze della classe possono essere associate all altra classe Molto importante Astrazioni e UML 7 Associazioni cardinalità Esempi di cardinalità Classe molti * Classe da a molti..* Classe da a 5..5 Classe esattamente 9 9 Classe nessuno o 0.. Classe o, o 4, o 6,4,6 Astrazioni e UML 8 9
Esempi cane 0..* possiede padrone 0.. luca : marco : mario : pippo : È corretto? piero : pluto : paperino : Astrazioni e UML 9 Esempi cane 0..* possiede padrone 0.. luca : marco : X mario : pippo : È corretto? piero : pluto : paperino : Astrazioni e UML 20 0
Esempi cane possiede padrone luca : marco : mario : pippo : È corretto? piero : pluto : paperino : Astrazioni e UML 2 Esempi cane possiede padrone X luca : marco : X mario : pippo : È corretto? piero : X pluto : paperino : Astrazioni e UML 22
Associazioni multiple Volo numero voliinpartenza * voliinarrivo parte atterra partenza arrivo si gl a Aeroporto * Associazione multipla: esplicita più associazioni tra una coppia di classe per arricchirne la descrizione se non la potessi usare, il diagramma sarebbe meno leggibile Astrazioni e UML 23 Associazioni a cappio ogni ha un numero qualsiasi di figli (che sono Persone) figlio 0..* madre ogni ha una madre (che è una ) Che problema ci vedete in questo diagramma? Astrazioni e UML 24 2
Associazioni Navigabilità Frigorifero contiene cibo Cibo capacità marca 0.. 0..* descrizione qta Navigabilità: esplicita chi vede cosa Come si vedrà, determina la modalità con cui viene realizzata l associazione Astrazioni e UML 25 Aggregazione lavoratore..* Azienda Relazione parte di Astrazioni e UML 26 3
Composizione Carrozzeria Auto Ruota 4 Motore È una relazione più forte L oggetto parte appartiene ad un solo tutto e le parti hanno lo stesso ciclo di vita dell insieme All atto della distruzione dell oggetto principale si ha la propagazione della distruzione agli oggetti parte Astrazioni e UML 27 Altri esempi Club * * Aggregazione Poligono 3..* Punto Composizione Astrazioni e UML 28 4
Generalizzazione Animale Leone Gatto Pesce Astrazioni e UML 29 Esercizio: classificazione, associazione e aggregazione testo Uno studente è caratterizzato dall avere una matricola, un e un cog. Possiede inoltre un libretto che contiene gli esami da lui sostenuti con data e voto i quali sono relativi a insegnamenti. Un insegnamento è caratterizzato da una denominazione, un codice identificativo e da un numero di CFU Astrazioni e UML 30 5
Esercizio: classificazione, associazione e aggregazione soluzione Studente cog matricola Libretto 0..* voto data Esame Insegnamento denominazione CFU codice Astrazioni e UML 3 Esercizio: classificazione, associazione, aggregazione e generalizzazione testo Uno studente è identificato da una matricola, un e un cog. Ha un libretto universitario in cui sono riportati gli esami con data e voto i quali si riferiscono ad insegnamenti che sono caratterizzati da una. Un insegnamento è caratterizzato da una denominazione, un codice identificativo e da un numero di CFU Studente laureando è uno studente che sta svolgendo una tesi di laurea su un certo argomento e il cui relatore e correlatore sono docenti universitari Astrazioni e UML 32 6
Esercizio: classificazione, associazione, aggregazione e generalizzazione soluzione Studente Libretto Esame Insegnamento + matricola 0..* + voto + data + denominazione + CFU + codice +relatore Laureando Tesi Docente +correlatore Astrazioni e UML 33 Esercizi Un libro è composto da un certo numero di pagine. Ogni pagina ha del testo e delle immagini. Un libro ha un titolo ed è scritto da uno o più autori. Ogni libro è riposto in uno scaffale di una libreria. Ogni scaffale è numerato. Un azienda ha una denominazione. È caratterizzata dall avere un numero di dipendenti superiore ai 5. Ogni dipendente ha associata una matricola. I dipendenti possono essere operai, dirigenti e impiegati. Ogni dipendente ha uno stipendio e un. I dirigenti hanno un auto aziendale. Astrazioni e UML 34 7