Unified Modeling Language - Progettazione ad Oggetti (1) - Henry Muccini Amleto di Salle Università degli Studi dell'aquila Università degli Studi dell'aquila I-67100 L'Aquila, Italy I-67100 L'Aquila, Italy muccini@di.univaq.it disalle@di.univaq.it http://www.henrymuccini.com 1/52
Sommario Principi base del paradigma Object Oriented Meccanismi comuni in UML Concetti base del paradigma O. O. 2/52
Principi base dell O.O. Astrazione Incapsulamento Modularità Gerarchia 3/52
Astrazione Qualsiasi modello include gli aspetti più importanti o essenziali di qualcosa, mentre ignora i dettagli meno importanti, immateriali. Il risultato è di rimuovere le differenze ed enfatizzare gli aspetti comuni [Dizionario di Object Technology Firesmith, Eykholt 1995] 4/52
Astrazione Permette di gestire la complessità concentrandosi sulle caratteristiche essenziali di un entità che la distingue dalle altre E dipendente dal dominio e dalla prospettiva, cioè quello che è importante in un contesto potrebbe non esserlo in un altro def. macchina per un venditore diversa da quella di un progettista OO modella il sistema utilizzando l astrazione (es. classi) 5/52
Incapsulamento La localizzazione fisica di caratteristiche (es. proprietà, comportamento) in una singola scatola nera che nasconde l implementazione (e le relative decisioni di design) dietro una interfaccia pubblica [Dizionario di Object Technology Firesmith, Eykholt 1995] 6/52
Incapsulamento Nasconde i dettagli implementativi all utente (es. funzionamento interno di un telefono nascosto all utente) Elimina una diretta dipendenza dall implementazione è possibile modificare l implementazione senza che l interfaccia cambi (es. un cliente può ordinare un prodotto senza che conosca il processo interno all azienda) L utente dipende dall interfaccia esposta dall oggetto O.O. realizza l incapsulamento mediante le interfacce 7/52
Modularità La decomposizione fisica e logica di cose (es. responsabilità e software) in gruppi piccoli e semplici (es. requisiti e classi rispettivamente) che incrementa il raggiungimento degli obiettivi dell ingegneria del software [Dizionario di Object Technology Firesmith, Eykholt 1995] 8/52
Modularità Per gestire la complessità si può suddividere qualcosa che è complesso in pezzi più piccoli che sono più maneggevoli O.O. modella la modularità con package e subsystem 9/52
Gerarchia Qualsiasi graduatoria (ranking) o ordine di astrazione in una struttura ad albero [Dizionario di Object Technology Firesmith, Eykholt 1995] 10/52
Gerarchia Permette di organizzare un qualcosa in base ad un certo ordine (es. complessità, responsabilità...) Descrive differenze o variazioni di un particolare concetto 11/52
Gerarchia Mammifero Maggiore Astrazione Cetaceo Felino Delfino Balena Gatto Leopardo Leone Minore Astrazione Fratelli hanno stesso livello di astrazione 12/52
Punti di forza dell O.O. Singolo paradigma Facilita il riuso di codice e di architetture Modelli riflettono maggiormente la realtà Descrizione più accurata dei dati e processi Decomposizione basata su partizionamento naturale Più facile da comprendere e mantenere Stabilità Piccolo cambiamento nei requisiti non significa massicci cambiamenti nel sistema durante lo sviluppo 13/52
Concetti base dell O. O. 14/52
Concetti base dell O. O. Oggetto Classe Attributo Operazione Interfaccia (Polimorfismo) Componente Package Sottosistema Relazioni 15/52
Oggetto Informalmente un oggetto rappresenta un entità fisica, concettuale o software entità fisica: trattore entità concettuale: processo chimico entità software: lista, coda... 16/52
Oggetto Formalmente Manifestazione concreta di un astrazione Entità con un confine e un identità ben definite che incapsula stato e comportamento Istanza di una classe Es.: Ferrari di Schumacher, Ferrari di Barrichello, Mio computer 17/52
Oggetto Stato Possibile condizione nel quale l oggetto potrebbe esistere e generalmente cambia nel tempo Implementato mediante proprietà (attributi) con valori, e collegamenti ad altri oggetti Comportamento Determina come un oggetto agisce e reagisce alle richieste di un altro oggetto Rappresentato dall insieme di messaggi a cui può rispondere (operazioni) Identità Rende possibile la distinzione tra due oggetti anche se hanno lo stesso stato e lo stesso valore nei suoi attributi 18/52
Rappresentazione in UML Istanza senza nome Istanza con nome Stato 19/52
Classe Descrizione di un gruppo di oggetti con proprietà (attributi), comportamento (operazioni), relazioni e semantica comuni Un oggetto è una istanza di una classe Astrazione che Enfatizza caratteristiche rilevanti Sopprime le altre caratteristiche Principio O.O. Astrazione 20/52
Esempio di classe Nome Corso Proprietà Nome, Luogo, Durata, Crediti, Inizio, Fine Comportamento Aggiunta studente Cancellazione studente Verifica se è pieno 21/52
Relazione tra classe ed oggetto Classe è una definizione astratta di un oggetto Definisce la struttura e il comportamento di ogni oggetto nella classe Serve come template per creare oggetti Oggetti sono raggruppati in classi 22/52
Rappresentazione in UML Student Course Professor ID name create() save() delete() change() Nome Attributi Operazioni 23/52
Classe: Nome Rappresenta un nome, cioè un entità Stringa di testo lettere numeri alcuni caratteri speciali Nome Semplice Path (prefisso + : + nome classe) Convenzione Lettera iniziale maiuscola 24/52
Classe: Nome Professor DBManager::Professor 25/52
Java public class Professor { /* Corpo della classe */ } Professor package DBManager; public class Professor { /* Corpo della classe */ } DBManager::Professor 26/52
Classe: Attributi Proprietà di una classe che descrive un insieme di valori che le istanze degli attributi possono assumere Rappresenta proprietà delle cose che si stanno modellando che è condivisa da tutti gli oggetti di quella classe Esempio Muro ha un altezza, ampiezza e profondità Cliente ha un nome, indirizzo, numero di telefono 27/52
Classe: Attributi Nome Stringa di testo Tipo Es. int, float, double, Valore di iniziale Convenzione Customer ID : long name : String phone : String birthdate : java.util.date sex : char Lettera iniziale minuscola 28/52
Java public class Customer { } long ID; String name; String phone; java.util.date birthdate; char sex = F ; 29/52
Classe: Operazioni Implementazione di un servizio che può essere richiesto da qualsiasi oggetto E un astrazione di qualcosa che è condivisa tra tutti gli oggetti di quella classe Rappresenta un verbo o una frase Generalmente l invocazione di un operazione cambia lo stato dell oggetto Esempi Rettangolo ha operazioni di move, resize 30/52
Classe: Operazioni Nome Stringa di testo Segnatura lista separata da virgola di Nome, tipo, valore di default Tipo ritorno Per le funzioni Convenzione Lettera iniziale minuscola TemperatureSensor reset() setalarm(t : Temperature) value() : Temperature 31/52
Java public class TemperatureSensor { void reset() { } void setalarm(temperature t) { } Temperature value() { } } 32/52
Organizzare Attributi e Operazioni Attributi e Operazioni possono essere raggruppati in base a determinati criteri 33/52
Concetti avanzati Classi astratte Classi foglie e radici Scope Molteplicità Forma completa degli attributi e operazioni Visibilità Classi template 34/52
Classi astratte Classe con operazioni il cui corpo non è definito Si può dichiarare una classe astratta anche se non ha operazioni astratte Non può essere istanziata, cioè non possono esistere istanze di quella classe Può contenere operazioni che hanno implementazione Classe <> Interfaccia 35/52
Rappresentazione in UML 36/52
Java public abstract class Vehicle { } public abstract double calcfuelefficiency(); public abstract double calctripdistance(); public class Truck extends Vehicle { public Truck(double max_load) {...} public double calcfuelefficiency() { } /* calculate the fuel consumption of a truck at a given load */ } public double calctripdistance() { } /* calculate the distance of this trip on highway */ 37/52
Java public class RiverBarge extends Vehicle { public RiverBarge(double max_load) {...} public double calcfuelefficiency() { } /* calculate the fuel efficiency of a river barge */ public double calctripdistance() { /* calculate the distance of this trip along the river-ways */ } } 38/52
Java public class Test { public static void main(string[] args) { Vehicle v = null; if ( args.length == 0 ) v = new Truck(10); else v = new RiverBarge(20); System.out.println( Fuel Efficency: + v.calcfuelefficiency()); System.out.println( Trip Distance: + v.calctripdistance()); } } 39/52
Classi foglie e radici Classe Foglia Non ha figli nella gerarchia UML modellato come proprietà (leaf) della classe (final in Java) Può essere applicato anche alle operazioni (final in Java) Classe Radice Non ha padri nella gerarchia UML modellato come proprietà (root) della classe 40/52
Rappresentazione UML radice Object (from lang) foglia String (from lang) Con Rose non si può settare che è root e/o leaf 41/52
Java public class Object { } public final class String extends Object { } 42/52
Molteplicità Specifica il numero di istanze possibili di quella classe Possibile specificare da zero (es. classi utility) fino ad n oppure un range (1..10) E possibile applicare la molteplicità anche agli attributi di una classe NetworkController consoleport [2..*] : Port 43/52