Unified Modeling Language

Documenti analoghi
CLASS DIAGRAM PARTE 1

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Introduzione ai Linguaggi di Programmazione e al paradigma Object Oriented

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

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

Alcune info sulle prossime lezioni

Progettazione Object-Oriented

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

Java: Definire Classi e Creare Oggetti

Corso di Informatica

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Fondamenti di Informatica

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

OOP in Python L O R E N Z O D I S I L V E S T R O

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

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

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

Programmazione ad oggetti

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

La programmazione orientata agli oggetti. Simone Campagna Massimiliano Culpo

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

UML UNIFIED MODELING LANGUAGE

Ingegneria del Software

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Introduzione alla programmazione Object Oriented. Luca Lista

Oggetti e dati primitivi 1

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Programmazione Orientata agli Oggetti in Linguaggio Java

Introduzione all OOP!

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Laboratorio di Sistemi Software UML per Design Patterns e Refactoring

Alcuni diagrammi. OCL (Object Constraint Language)

Dichiarazione di una classe. Dichiarazione ereditarietà

Informatica Ereditarietà Java. Ereditarietà

TIPI PRIMITIVI E CLASSI WRAPPER

Programmi e Oggetti Software

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione ad Oggetti

RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Classi. Meccanismi di Rappresentazione e Scoperta. Andrea Polini

UML2. Attività di Progettazione. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

Il paradigma di programmazione OO

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Il paradigma Object Oriented. Iolanda Salinari

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Programmazione con Java

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione a Oggetti Modulo B

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Unified Modeling Language -Class Diagram: concetti di base -

Classi Astratte vs Classi vs Interfacce

Componenti software. Obiettivi

Programmazione a oggetti

Richiami su oggetti e OOP

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Programmi e Oggetti Software

Fondamenti di informatica T-1 (A K) Esercitazione 7: metodi, classi, oggetti

Java Classi wrapper e classi di servizio. Classi di servizio

Modello procedurale versus modello O-O

Marco Faella Introduzione al corso

Alberi Binari Alberi Binari

Progettazione del Software Anno Accademico 2007/08

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Ereditarietà: concetti di base

POO in JAVA e Robot EV3

A. Ferrari Object Oriented Design

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

Varie: final, visibilità, parametri di ingresso

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Corso sul linguaggio Java

Corso di Reti di Calcolatori T

La programmazione: tradizionale vs Orientata agli Oggetti (OOP)

Informatica Interfacce Java

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice

Corso di Linguaggi di Programmazione

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Scope e visibilità per classi

SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as.

Lezione 5 Namespace e JavaDoc

Sommario. I Uso degli oggetti 39

Transcript:

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