© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Il paradigma ad oggetti.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Informatica II – Basi di Dati (08/09) – Parte 1
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
Il linguaggio della Matematica: Insiemi e operazioni
IL MODELLO ENTITA’ - RELAZIONE I costruttori di base
Analisi e progettazione
Informatica Recupero debito quarto anno Terzo incontro.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Le gerarchie di tipi.
Frontespizio Economia Monetaria Anno Accademico
4 – Progettazione – Introduzione e Modello E-R
Training On Line – CONA. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Annuali > Nuova Richiesta Si accede alla pagina di Richiesta.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
DIFFICOLTA’ DEL LINGUAGGIO
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Informatica (Basi di Dati)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Corso di Informatica (Basi di Dati)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
eliana minicozzi linguaggi1a.a lezione2
1 Anatomia di una pagina Un insieme di pagine web hanno generalmente una parte invariante (o poco): header, navigazione, footer una parte variabile: contenuti.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
DHTML: Modello degli Eventi 1. 2 Sommario Introduzione Evento onclick Evento onload Gestione errori con onerror Gestione mouse con levento onmousemove.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Strutture di controllo in C -- Flow Chart --
Num / 36 Lezione 9 Numerosità del campione.
Lezione 4 Probabilità.
Il marketing: costruire una relazione profittevole con il cliente
Progettazione di una base di dati
Portale Capacità STOGIT
Contatore: esempio di circuito sequenziale
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Elementi di Informatica di base
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Introduzione alla programmazione Object Oriented
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Progettare un database
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Java come linguaggio di programmazione
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
I nomi in Java F. Bombi 18 novembre novembre 2003.
USO DEL COMPUTER E GESTIONE DEI FILE
UML.
Programmazione ad oggetti
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Programmazione ad oggetti
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Diagramma delle Classi
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
La Programmazione ad Oggetti
Le basi di dati.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Unità di apprendimento 6
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

© M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A Il paradigma ad oggetti

2 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Argomenti della lezione Sistemi informativi Modellare la realtà (1): classi e oggetti Modellare la realtà (2): relazioni Progettazione ad oggetti

3 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Sistemi informativi La realtà che ci circonda è estremamente complessa Molteplicità di elementi, interazioni, comportamenti, … Il compito del software è modellare porzioni di tale realtà allo scopo di realizzare sistemi informativi In grado di raccogliere, elaborare, trasmettere dati per offrire servizi ai loro utilizzatori

4 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Software Linsieme di programmi strutture dati documentazione test necessari a sviluppare validare far funzionare manutenere un dato sistema informativo

5 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Il ruolo dei linguaggi di programmazione Il comportamento di un sistema informativo non dovrebbe dipendere dal modo con cui è stato realizzato Ma solo dalle sue specifiche Alcune proprietà (manutenibilità, possibilità di riuso, …) possono però dipendere molto dalle scelte fatte in fase di progetto In particolare dalla metodologia di progetto e dai linguaggi di codifica adottati Alcuni linguaggi offrono astrazioni più potenti Lesperienza mostra che sono più adatti a modellare situazioni complesse e in forte evoluzione

6 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Programmazione strutturata Il codice è suddiviso in moduli Ogni modulo è composto da procedure e strutture dati Le procedure operano sui dati, modificandoli Riflette lorganizzazione di un elaboratore Modello soggiacente al linguaggio C Non cè un legame forte tra procedure e dati: Qualsiasi procedura in grado di accedere ad un dato lo può modificare Approccio che non scala al crescere delle dimensioni del problema

7 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Unarte difficile La programmazione richiede molte abilità: Creatività Capacità di analizzare e risolvere problemi Capacità di pensiero strutturato Precisione e attenzione ai particolari Conoscenza approfondita del linguaggio di programmazione adottato … e altre cose! Lapproccio strutturato non semplifica il problema Basso livello di astrazione Il numero di dettagli di cui occuparsi cresce troppo al crescere della dimensione del problema trattato

8 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Ulteriori oggetti Oggetto Un approccio nellosservare il mondo

9 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Oggetti e realtà Il mondo fisico è costituito da un insieme di oggetti variamente strutturati che interagiscono tra loro Ciascuno è dotato di: Una propria identità (è riconoscibile) Uno stato (ricorda la storia passata) Un comportamento (reagisce a stimoli esterni in un modo prevedibile) Si può estendere la metafora al software Ogni entità logica che deve essere manipolata può essere immaginata come un oggetto

10 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Stato

11 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Stato Ogni oggetto ha uno stato: Linsieme dei parametri caratteristici che contraddistinguono un oggetto in un dato istante Riflette la storia delloggetto Composto da un un gruppo di attributi Ogni attributo modella un particolare aspetto dello stato Può essere un valore elementare o un altro oggetto… Implementato mediante un blocco di memoria Contiene i valori degli attributi Principio fondamentale: incapsulamento Lo stato appartiene alloggetto Un utente esterno non può manipolare direttamente lo stato

12 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Comportamento Richiesta

13 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Comportamento Gli oggetti interagiscono a seguito di richieste esterne (messaggi) Dotate di eventuali parametri che ne specificano i dettagli Ogni oggetto sa reagire ad un ben determinato insieme di messaggi Costituiscono la sua interfaccia Ad ogni richiesta è associato un comportamento Modifica dello stato Invio di richieste verso altri oggetti Comunicazione di informazioni (risultato) Implementato attraverso un blocco di codice (metodo) Contiene la sequenza delle operazioni da svolgere Principio fondamentale: delega Chi effettua la richiesta non vuole conoscere i dettagli di come la richiesta sia evasa

14 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Metodi e funzioni Un metodo è simile ad una funzione Ha un nome Può avere dei parametri Può avere un valore di ritorno È composto da un insieme di istruzioni Ma… Agisce su un oggetto specifico (il destinatario del metodo) Il codice effettivamente eseguito dipende dal destinatario ocosa succede quando si compone un numero su un cellulare rispetto a quando si compone lo stesso numero su un telefono fisso?

15 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Classificare la realtà

16 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Classificare la realtà Nel mondo reale esistono molti oggetti Per ogni tipo di oggetto le persone hanno sviluppato un apposito concetto Il concetto esiste nella mente delle singole persone e indica: le caratteristiche ed il comportamento atteso di un oggetto Le sue relazioni (a livello concettuale) con altri oggetti I singoli oggetti esistono nella realtà Hanno una propria identità ed un proprio stato Si comportano (dovrebbero comportarsi) coerentemente con il modello concettuale

17 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Oggetti e classi Nei sistemi informativi, ogni oggetto appartiene ad una classe È istanza della classe La classe costituisce il progetto delloggetto e ne specifica i metodi e gli attributi Oggetti appartenenti alla stessa classe hanno lo stesso comportamento e lo stesso insieme di attributi Ma possono avere stati (valori) differenti

18 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Oggetti e classi Gli oggetti sono caratterizzati da un insieme di dati (stato) un insieme di istruzioni (comportamento) Gli oggetti si costruiscono a partire dalla classe Costruire un oggetto significa allocare un blocco di memoria e registrare al suo interno lo stato Nel progetto (classe) sono contenute apposite istruzioni circa la corretta creazione/configurazione degli oggetti nuovi

19 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Esempio Classe telefono… attributo numero! Telefono1 Numero: Telefono2 Numero: Memoria

20 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti TelefonoCellulare Rappresentare le classi acceso: boolean caricaResidua: int occupato: boolean campoRicevuto: int acceso: boolean caricaResidua: int occupato: boolean campoRicevuto: int chiama(numero): void squilla(): void spegni(): void accendi(): void chiama(numero): void squilla(): void spegni(): void accendi(): void Nome Attributi Metodi

21 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Esempi Sveglia Da quali attributi è composto il suo stato? Che tipo di informazione contengono? Quali metodi offre? Qual è la logica associata a ciascun metodo? Calcolatrice tascabile Si trascurino cifre decimali, memoria, percentuale Problema più complesso!

22 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Relazioni tra le classi Concetti (classi) diversi possono essere tra loro collegati: Il motore è parte di unautomobile Una persona è figlia di due genitori Un veicolo è guidato da un autista … Si rappresentano tali legami attraverso linee che connettono le classi PersonaAzienda Lavora per

23 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Ruoli e molteplicità Ogni classe svolge un ruolo specifico in una relazione Lo si esprime dando un nome alle estremità della linea Data una relazione che coinvolge un dato oggetto, laltro ruolo può essere svolto da 0..1 – zero o uno N – un numero specifico (ad esempio, 1, 2, …) * – qualunque numero (scritto anche 0..*) 1..* – uno o più oggetti Persona lavoratoredatore di lavoro 1..* 0..* Azienda Lavora per

24 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Relazioni multiple Tra una data coppia di classi, possono esistere più relazioni che le uniscono VoloAeroporto Parte da Arriva a Possono esistere relazioni che coinvolgono una sola classe Persona genitore 0..2 figlio 0..* È genitore di

25 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Appartenenza Oggetti complessi sono composti da parti più semplici Le funzionalità delloggetto composto sono il risultato della composizione delle funzionalità dei singoli elementi Unautomobile contiene un motore, una carrozzeria, quattro ruote, … Il ciclo di vita delloggetto composto può coincidere o meno con quello dei componenti: Nel primo caso si parla di composizione (stretta) Nel secondo, di aggregazione (lasca)

26 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Aggregazione Le singole parti possono esistere indipendentemente dalloggetto composto Una singola parte può essere aggregata a più oggetti composti Si indica con la notazione CorsoDiLaureaPersona 1..*0..1

27 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Composizione Le parti cessano di esistere quando loggetto composto cessa di esistere La costruzione/distruzione delloggetto composto comporta la costruzione/distruzione dei componenti Unentità può far parte di un solo composto Si indica con la notazione Intestazione Corpo

28 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Esempio Motore giri: double acceso: boolean giri: double acceso: boolean accendi(): void spegni(): void accelera(): void rallenta(): void leggiGiri(): double accendi(): void spegni(): void accelera(): void rallenta(): void leggiGiri(): double Cambio marcia: int inserisci(m:int): void rapportoRiduzione(): double inserisci(m:int): void rapportoRiduzione(): double Automobile velocità: double accendi(): void spegni(): void inserisci(m:int) accelera():void rallenta(): void accendi(): void spegni(): void inserisci(m:int) accelera():void rallenta(): void

29 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Gerarchie concettuali (1) Alcune classi modellano concetti generali che comprendono insiemi di concetti più specifici Le caratteristiche (stato e comportamento) dei concetti più generici sono condivise dai concetti più specifici Si utilizza la notazione super-classe sotto-classi EssereVivente AnimaleVegetale Persona

30 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Gerarchie concettuali (2) La relazione è più specifico di riveste un ruolo particolare nei linguaggi ad oggetti: Fondamento dellereditarietà La classe più specifica eredita attributi, metodi, aggregazioni e altre relazioni da quella più generica A questi, si affiancano attributi, metodi, aggregazioni e relazioni propri della sotto-classe La sotto-classe può ridefinire il comportamento legato ai metodi ereditati A condizione di mantenerne intatta la definizione (numero e tipo dei parametri, tipo ritornato): polimorfismo

31 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Esempio Telefono stato: {agganciato, sganciato} tono: {linea, libero, occupato, nessuno} suoneria: boolean stato: {agganciato, sganciato} tono: {linea, libero, occupato, nessuno} suoneria: boolean componi(n:int):void sgancia(): void aggancia(): void riproduci(tono):void squilla(): void componi(n:int):void sgancia(): void aggancia(): void riproduci(tono):void squilla(): void Cellulare batteria: int campo: int idCella: int idOperatore: int batteria: int campo: int idCella: int idOperatore: int ricarica(): void accendi(): void spegni(): void ricarica(): void accendi(): void spegni(): void

32 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Rappresentare gli oggetti Il mondo reale è costituito da oggetti Così i programmi scritti con il paradigma ad oggetti sono composti da blocchi di memoria nel calcolatore Data una classe, possono esistere molte istanze Ogni istanza è distinguibile dalle altre Si rappresentano gli oggetti attraverso i diagrammi delle istanze Per ogni oggetto, indicano: il nome (arbitrario ma univoco) la classe di appartenenza i collegamenti cui partecipano (che devono soddisfare i vincoli sulla molteplicità)

33 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Diagrammi delle istanze tizio: Persona caio: Persona sempronio: Persona acme: Azienda orion: Azienda Lavora per È genitore di Lavora per

34 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Interazione tra oggetti Un oggetto reagisce a richieste del mondo esterno Eseguendo il codice associato al metodo richiesto La richiesta può comportare linterazione con altri oggetti La composizione di un numero su un telefono, richiede alla centrale telefonica di instaurare un collegamento con il destinatario Si può interagire solo con chi si conosce Gli oggetti interagenti devono essere connessi da una qualche relazione Si rappresenta questo insieme di interazioni tramite idiagrammi di sequenza Mostrano quali interazioni avvengono tra oggetti e la relativa sequenza temporale

35 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Diagrammi di sequenza tel1: Telefono centrale4: CentraleTelefonica tel7: Telefono componi(737) richiediLinea() tono di linea chiama(737) faiSquillare() risposta: ok comunicazione: attiva t

36 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Il processo di creazione del software (1) Dapprima, occorre capire cosa viene chiesto di fare Analisi: definisce i termini del problema Traduce le parole (ambigue) del committente in requisiti verificabili Poi, occorre capire come farlo Progetto: definisce larchitettura della soluzione Sceglie come realizzare i requisiti attraverso classi, oggetti, relazioni, …

37 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Il processo di creazione del software (2) Quindi è utile definire come verificare Progetto del test: definisce i controlli da attuare Traduce i requisiti in un insieme di misure Da ultimo, si scrive e verifica il codice Sviluppo: produce la soluzione Implementa larchitettura Il processo è iterativo Le diverse fasi si susseguono raffinando progressivamente la soluzione

38 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Progettare ad oggetti Si parte dal testo delle specifiche Si individuano i nomi e i verbi Tra i nomi, si individuano le possibili classi di oggetti Con i relativi attributi Tra i verbi, si individuano metodi e relazioni Di solito, i verbi di azione si modellano come metodi ( X apre Y ), quelli di stato come relazioni ( A si trova presso B ) Linterazione tra due oggetti sottende lesistenza di una relazione tra gli stessi Attenzione alle forme passive e ai sostantivi deverbali!

39 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Implementare le relazioni Se esiste una relazione dalloggetto A verso loggetto B, occorre memorizzare da qualche parte questa informazione Il modo di farlo dipende dalla molteplicità della stessa Relazioni di tipo n:1 (n 0), possono essere implementate sotto forma di attributo nella classe di partenza Lattributo ha come tipo la classe destinazione Il valore dellattributo è il riferimento alloggetto destinazione Relazioni di tipo n:m (n 0, m 1) richiedono lutilizzo di strutture più complesse Array di riferimenti e/o classi ausiliarie

40 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Esempio: controllo accessi Permette di aprire le serrature collegate ad un lettore magnetico a fronte dellinserimento di una tessera La tessera riporta lidentità del titolare Un sistema centralizzato mantiene lelenco di quali serrature siano apribili da quali tessere Quando si inserisce la tessera, il lettore richiede lautorizzazione al sistema centrale e, in caso affermativo, fa scattare la serratura Il sistema centrale consente anche di aggiornare lelenco delle autorizzazioni, aggiungendo ed eliminando coppie tessera/serratura

41 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti SerraturaLettoreTesseraControllore Apre 0..*1..* Pilota 1 1 Richiede autorizzazione 1 * Controllo accessi: analisi ElencoAutorizzazione * * 1 * Si inserisce

42 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Controllo accessi: analisi Tessera id: int leggiId(): int Serratura apri(): void Lettore id: int valida(Tessera): void Controllore verifica( idTessera: int, idLettore: int ): boolean Elenco numAut: int cerca( idTessera:int, idLettore:int ): boolean cerca( idTessera:int, idLettore:int ): boolean Autorizzazione idTessera: int idLettore: int idTessera: int idLettore: int confronta( tessera:int, lettore:int): boolean confronta( tessera:int, lettore:int): boolean

43 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Controllo accessi: diagramma di sequenza Tessera5 Lettore3 Serratura3 Controllore1 t inserisci(Tessera5) leggiId() 5 verifica(5,3) true apri()