Principi di Programmazione Object-Oriented

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

Programmazione ad oggetti
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Introduzione a UML (c) TECNET DATI.
Analisi e progettazione
Unified Modeling Language
Recupero debito quarto anno Primo incontro
Procedure e funzioni A. Ferrari.
Progettazione concettuale
I contenuti di questa presentazione sono stati realizzati a cura di M
Metodologie di Programmazione = decomposizione basata su astrazioni
Principi di Programmazione Object-Oriented
Acquisti OnLine Progetto
Programmazione orientata agli oggetti OOP Object Oriented Programming
4 – Progettazione – Introduzione e Modello E-R
©Carlo Tasso 1999 Object Oriented Programming Slide 1 OO Analysis Vs. OO Design OOA – Object Oriented Analysis. –Specifica COSA, IN QUALE CONTESTO il sistema.
8. Progettazione del Software
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED.
Ciclo di vita del software
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
Modello E-R Generalizzazioni
Progettazione di una base di dati
Strategia bottom-up Nella strategia bottom-up le specifiche iniziali sono suddivise in componenti via via sempre più piccole, fino a descrivere frammenti.
Modello E-R Generalizzazioni
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Introduzione alla modellazione di sistemi interattivi
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
L’ingegneria del software
Introduzione alla programmazione Object Oriented
Dipartimento di Informatica e Sistemistica
Lo sviluppo del progetto informatico
Presentazione del problema Obiettivo: Lapplicazione di Search of Sematic Services permette di ricercare sevizi semantici, ossia servizi a cui sono associati.
Esercitazioni di Ingegneria del Software con UML
La modellazione degli oggetti
I processi.
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Programmazione ad oggetti
Diagramma delle Classi
Analisi dei requisiti Il primo passo di “qualsiasi” processo di sviluppo è la definizione dei requisiti  Definizione del Business Model  Solitamente.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 1 -Cicli di vita Ernesto Damiani Università degli Studi di Milano Lezione.
Alberto Colombo Fulvio Frati
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 -Progettazione del software Ernesto Damiani Università degli Studi.
UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Progettazione di basi di dati: metodologie e modelli
La Programmazione ad Oggetti
UML Tratto da Alberto Colombo Fulvio Frati. Sequence Diagram Evidenziano la sequenza temporale delle azioni Non si vedono le associazioni tra oggetti.
La programmazione ad oggetti
Unified Modeling Language. –un linguaggio (e notazione) universale, per rappresentare qualunque tipo di sistema software –uno standard OMG (Object Management.
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Diagramma degli Stati. Diagramma degli Stati … Definizione è un grafico con nodi ed archi in cui i nodi rappresentano gli stati di una classe e gli archi,
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Principi di Programmazione Object-Oriented

Modello ad oggetti Concetto di oggetto riconducibile a diversi settori: Software engineering Linguaggi di programmazione Basi di dati Intelligenza Artificiale

Approcci alla produzione di programmi Programmazione in the small Progetto di algoritmi e strutture dati Programmazione in the large Software engineering

Metodi per la produzione di programmi Metodi tradizionali: programmazione strutturata orientata alle funzioni: flusso di controllo flusso di dati Metodi attuali: programmazione orientata agli oggetti: classe oggetti servizi

Strumenti per la progettazione Orientati alle funzioni: Diagramma di flusso (in the small) Analisi e progetto strutturato (in the large) Orientati agli oggetti: OOSE, OMT, ecc. (in the large) Unified Modeling Language UML

Approcci e Metodi Structured software engineering Programmazione OO strutturata Programming in the large Programming in the small Structured software engineering UML Flow chart

Modello del software Necessità di modellare un sistema: creare una astrazione del sistema attraverso cui specificarne la struttura ed il comportamento. Il modello di un software deve rappresentare le informazioni trasformate dal software, le funzioni e sottofunzioni che effettuano tali trasformazioni e il comportamento del sistema conseguente alle trasformazioni stesse

Processo software Definisce la strategia adottata nella realizzazione del software. Comprende metodi, tecniche e strumenti. Si fonda sul concetto di qualità totale E’ caratterizzato da: Attività portanti Un insieme di compiti: punti di controllo, prodotti intermedi (modelli, documenti), punti di garanzia dalla qualità. Attività ausiliarie: garanzie dalla qualità, gestione delle configurazioni

Processo di sviluppo unificato Fasi del ciclo di vita Avviamento: consente di stabilire l’effettiva realizzabilità del progetto Elaborazione: preparazione del piano del progetto Costruzione: implementazione di un sistema funzionante per un ristretto numero di utenti tester Transizione: consegna ai clienti del sistema completamente funzionante

Workflow del Processo Unificato Requisiti: costruzione del modello dei casi d’uso che definisce i requisiti funzionali del sistema modellato Analisi: raffinamento e strutturazione dei requisiti funzionali descritti nel modello dei casi d’uso mediante la costruzione del modello di analisi Progetto: descrizione della realizzazione fisica dei casi d’uso costruzione di un modello di progetto ed un modello di deployment Implementazione:definizione dei componenti software che realizzazione gli elementi del modello di progetto Test: descrizione dei dati test e delle modalità secondo cui condurre i test del sistema nel modello di test

Modelli UML associati a ciascun workflow dei casi d’uso di analisi di progetto di implementazione di test di deployment Lo sviluppo di ciascun modello è condotto in modo trasversale attraverso le 4 fasi del processo unificato

Iterazioni e raffinamenti Occorre adottare un modello iterativo e incrementale nel processo di sviluppo Iterazione: un progetto che attraversa trasversalmente ciascuno dei workflow del processo unificato Raffinamento: è prodotto in ciascuna iterazione versione del progetto con maggiori funzionalità rispetto alla versione precedente Scopo dell’approccio: Gestione dei rischi del progetto iniziale Valutazione dell’estensione del progetto iniziale

Punti di vista sul sistema I 6 modelli sono sviluppati in modo incrementale attraverso i 5 workflow e attraverso le 4 fasi del processo unificato E’ possibile definire diversi punti di vista sul sistema sotto cui considerare i diversi modelli

Punti di vista su un sistema software Progetto Implementazione Processo Deployment Casi d’uso

Modello guidato dai casi d’uso UML considera un sistema secondo prospettive diverse in base agli utilizzatori Fondamentale è la prospettiva dei casi d’uso che rappresentano la descrizione di un particolare aspetto del sistema La modellazione in UML è guidata dai casi d’uso

Casi d’uso Definiscono gli scenari d’uso del sistema Offrono una descrizione dei modi in cui il sistema sarà utilizzato. Scenario: una sequenza di passi che descrivono l’interazione tra un utente ed il sistema Per la descrizione dei casi d’uso occorre individuare: attori principali secondari ruoli E’ un testo informale che descrive il ruolo di un attore nel corso dell’interazione con il sistema

Rappresentazione grafica in UML Caso d’uso Attore Caso d’uso Caso d’uso

Concetti object oriented Oggetto: una entità del mondo reale Classe:un insieme di oggetti aventi le stesse caratteristiche Attributi: proprietà di classi ed oggetti che ne definiscono le caratteristiche Metodi: definiscono il comportamento di un oggetto Operazioni: definiscono il comportamento degli oggetti istanze di una classe

Principi object oriented Ereditarietà: ciascuna classe può essere definita in termini di una classe esistente. La nuova classe (sottoclasse) contiene automaticamente la definizione di elementi propri della classe originaria (superclasse) Polimorfismo: pluralità di forme, gli oggetti possono ridefinire le operazioni della classe di cui fanno parte Information Hiding (incapsulamento): ciascuna classe nasconde al proprio interno i dettagli implementativi

Esempio: ereditarietà Classificazione delle specie animali

Oggetto Identità: espressa da un nome Stato: include le proprietà dette attributi che descrivono gli oggetti Comportamento: rappresentato da funzioni dette metodi che utilizzano o cambiano il valore degli attributi

Classe Un insieme di oggetti aventi le stesse caratteristiche. E’ caratterizzata da: Identità: definisce il nome della classe Attributi: la classe non ha stato, ma definisce proprietà locali che sono l’astrazione delle proprietà comuni agli oggetti istanze della classe Operazioni: definiscono il comportamento della classe. Rappresentano i servizi che possono essere richiesti da un oggetto. I metodi sono implementazioni delle operazioni

Visibilità delle proprietà Una classe è concettualmente divisa in due parti: Una parte visibile che fornisce l’unico modo tramite il quale è possibile operare sugli oggetti della classe e descrive che cosa, in termini di operazioni ammissibili è possibile fare sugli oggetti Una parte nascosta il cui contenuto non è visibile all’esterno della classe e che riguarda come le funzionalità visibili sono realizzate

Rappresentazione grafica in UML Classe Oggetto Oggetto:Classe attributo1=valore1 attributo2=valore2 operazioni Classe attributi

Relazioni tra classi Associazione: connessione strutturale tra classi Aggregazione: relazione in cui una o più classi sono parti di una classe intera Generalizzazione: (ereditarietà) relazione in cui una classe (sottoclasse) eredita gli attributi e le operazioni di una superclasse multipla semplice

Rappresentazione in UML delle relazioni tra classi associazione generalizzazione classe1 classe2 sottoclasse superclasse classe intera parte aggregazione

Relazioni tra i casi d’uso Inclusione: un caso d’uso include esplicitamente il comportamento di un altro in un punto specifico dell’azione. Il meccanismo serve per eliminare comportamenti ripetuti all’interno di più casi d’uso Estensione: un caso d’uso include implicitamente il comportamento di un altro in uno o più punti detti di estensione Il meccanismo è utilizzato per fattorizzare comportamenti opzionali o che si verificano in determinate circostanze Generalizzazione: analoga alla generalizzazione per le classi

Rappresentazione in UML delle relazioni tra casi d’uso inclusione generalizzazione include Caso d’uso padre estensione extend Caso d’uso base Caso d’uso esteso Caso d’uso figlio Caso d’uso figlio

Diagrammi UML Strutturali Architetturali Comportamentali Delle classi Degli oggetti Architetturali Componenti Comportamentali Casi d’uso (use case) Sequenza Collaborazione Transizione di stato (state/transition diagram) Attività (activity diagram)

Workflow di Analisi Scopo del workflow di analisi è delineare un modello di analisi Il modello di analisi si compone di una serie di diagrammi che descrivono il software nel suo contesto operativo rispetto ai requisiti. rappresenta le informazioni, le funzionalità e il comportamento nel contesto degli elementi di un modello ad oggetti

Diagramma delle classi Rappresenta la struttura del sistema che si sta sviluppando Descrive il tipo degli oggetti che compongono il sistema e le relazioni statiche tra loro esistenti Mostra gli attributi e le operazioni di una classe

Diagramma degli oggetti Rappresenta una parte della struttura del sistema che si sta modellando Rappresenta oggetti e valori specifici per gli attributi

Diagramma dei casi d’uso Descrive le funzionalità fondamentali che il sistema deve realizzare in termini di scenari di utilizzo del sistema Descrive gli scenari percepiti in modi diversi dai diversi attori Contiene la rappresentazione degli attori e dei casi d’uso usando delle frecce per associare gli attori ai casi d’uso con cui interagiscono

Diagramma di casi d’uso <<include>> Caso d’uso punti di estensione Generalizzazione <<extend>> punti di estensione

Package di analisi Rappresenta il raggruppamento concettuale di elementi dell’analisi. Comprende le classi di analisi e rappresenta le loro interazioni

Workflow di progetto Nel workflow di progetto si delinea il modello di progetto. Nel modello di progetto: si indicano gli oggetti derivati da ciascuna classe e le loro interazioni si implementano i comportamenti e le comunicazioni si rappresenta dinamicamente il comportamento del sistema mediante la modellazione delle comunicazioni fra gli oggetti

Messaggio Rappresenta la comunicazione tra due oggetti o all’interno di un oggetto La comunicazione è rappresentata da due tipi di diagrammi: di collaborazione di sequenza che rappresentano la stessa informazione con diversi dettagli

Diagramma di sequenza Un caso d’uso dà origina ad un diagramma di sequenza che. Tale diagramma: Specifica come gli oggetti interagiscono evidenziando la sequenza temporale dei messaggi scambiati Il diagramma ha due dimensioni sull’asse orizzontale sono rappresentati gli oggetti che interagiscono sull’asse verticale la sequenza temporale dei messaggi

Elementi del diagramma di sequenza Gli oggetti sono rappresentati come box in cima ad una linea tratteggiata verticale Lifeline: rappresenta la vita dell’oggetto Box di attivazione: rappresenta il periodo durante il quale l’oggetto ha il controllo del flusso

Diagramma di sequenza un Oggetto creazione nuovo Oggetto messaggio ritorno delega interna distruzione

Diagramma di collaborazione Illustra come gli oggetti interagiscono evidenziando le relazioni tra gli oggetti che collaborano Le relazioni sono specificate anche nel diagramma delle classi; in questo diagramma assumono la forma di link istanza della associazione

Diagramma di collaborazione nome dell’oggetto: classe 1: messaggio semplice() messaggio asincrono nome del ruolo 1.1*: messaggio di iterazione() 1.2: [condizione] messaggio() : classe nome dell’oggetto nome del ruolo

Raffinamento della struttura del sistema Il modello di progetto include oltre ai diagrammi di collaborazione e di sequenza che modellano gli aspetti dinamici del comportamento del sistema anche diagrammi che modellano gli aspetti strutturali Raffinando la struttura del modello, il diagramma delle classi viene arricchito con ulteriori informazioni riguardanti le operazioni e gli attributi. Le classi diventano più specifiche: classi di progetto

Classi di progetto Dettagli di attributi e di operazioni Visibilità pubblica + protetta # privata - Dettagli di attributi molteplicità modificabilità frozen Dettagli di operazioni proprietà per l’esecuzione parallela e thread

Attività e azioni Attività: Azione: E’ un lavoro svolto da un oggetto in maniera continuativa Può essere suddivisa in attività più semplici Azione: E’ un insieme di computazioni eseguibili in modo indivisibile (è atomica) Si assume che sia istantanea

Diagramma delle attività Rappresenta azioni sequenziali o parallele E’ necessario rappresentare punti di sincronismo

Ciclo di vita di un oggetto Evento: Qualcosa che accade ed ha rilevanza per un oggetto Stato: Condizioni in cui un oggetto può trovarsi durante il suo ciclo di vita Transizione: Passaggio di un oggetto da uno stato ad un altro

Diagramma di stato Rappresenta la macchina a stati di un oggetto. Indica: Gli stati che un oggetto può assumere durante il suo ciclo di vita Gli eventi a cui può rispondere Le possibili risposte che può fornire a quegli eventi Le transizioni tra gli stati dell’oggetto

Diagramma di stato Nome del superstato Nome dello Stato entry / azione Evento(parametri)[condizione]/azione Nome del superstato Nome dello Stato entry / azione do / attività exit / azione evento/ azione(parametri) Nome dello stato

Package di progetto Rappresenta il raggruppamento degli elementi di progetto. Comprende i diagrammi: di sequenza di collaborazione di stato delle attività delle classi di progetto

Workflow di implementazione Si sviluppa il modello di implementazione Illustra come gli elementi del modello di progetto sono organizzati in componenti software sotto forma di file di codice sorgente, librerie collegate dinamicamente ecc.

Elementi del sistema Package: Componente: Raggruppamento concettuale di elementi del modello Componente: Raggruppamento di elementi fisici del sistema Rappresenta un modulo di codice Package e componenti possono coincidere ma anche essere differenti: una singola classe può essere presente in più componenti ma essere definita in un solo package

Diagramma di componenti Illustra i componenti di un sistema e le relative dipendenze. Dipendenze: mostrano come i cambiamenti apportati ad un componente si ripercuotono sugli altri. Esistono dipendenze: di comunicazione di compilazione

Diagramma di deployment Mostra le relazioni fisiche tra i componenti software ed hardware del sistema finito. Le unità computazionali sono rappresentate come nodi Le associazioni tra nodi rappresentano le connessioni fisiche usate dai componenti del sistema per interagire

Diagramma di deployment Componente 2 Componente 1

Fattori di qualità del SW Qualità esterne Riusabilità Estendibilità Qualità interne Strutturazione Modularità

Riusabilità: vantaggi Riduce la quantità di lavoro necessario Evita di ripetere le fasi di sviluppo Aumenta la qualità del software: il codice è già stato testato verificato e l’uso Software più affidabile

Fattori di qualità influenzati dall’approccio OO Esterne Favorite da Interne Estensibilità Ereditarietà Strutturazione Incapsulamento Riusabilità Concetto di Classe Modularità Concetto di classe