CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED.

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unit à B2 Gli oggetti: concetti avanzati.
Unified Modeling Language
Recupero debito quarto anno Primo incontro
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Programmazione object oriented in C++
Le gerarchie di tipi.
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
Programmazione orientata agli oggetti OOP Object Oriented Programming
Per crittografia si intende la protezione
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Fisica Computazionale I - 41 APPROFONDIMENTI Dobbiamo approfondire a questo punto le nostre conoscenze delle regole di Java, definendo in modo rigoroso.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Overriding.
Struttura dei sistemi operativi (panoramica)
INTRODUZIONE AD OMNET++
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
CORSO DI LAUREA E DI DIPLOMA IN INFORMATICA UNIVERSITA DEGLI STUDI DI MILANO ANNO ACCADEMICO JAVA COME LINGUAGGIO PER LA PROGRAMMAZIONE CONCORRENTE.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Modello E-R Generalizzazioni
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Scienze dellInformazione Applicazione.
Java base IV: Java e la programmazione O.O.
Java concetti A.Natali Marzo Java Dai concetti ai costrutti.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
CLASSI ED EREDITARIETÀ Come si è visto, è cruciale che la gerarchia rispecchi la realtà del mondo ma a volte ciò contraddice principi di efficienza Esempio:
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.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
L' ARCHITETTURA DI VON NEUMANN
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Introduzione alla programmazione Object Oriented
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Reti di calcolatori 14 novembre 2003 INFORMATICA GENERALE Scienze per Operatori dei Servizi Giuridici Anno Accademico
I nomi in Java F. Bombi 18 novembre novembre 2003.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
Università degli Studi di Napoli Parthenope programmazione III.
Programmazione a oggetti
OOP Object Oriented Programming Programmazione Orientata agli Oggetti
Ereditarietà e polimorfismo
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Incapsulamento e information hiding
Programmazione ad oggetti
Diagramma delle Classi
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
IV D Mercurio DB Lezione 2
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Astrazione di dati Dati Astratti: cosa e perchè Dati Astratti: due meccanismi differenti Dati Astratti: due meccanismi differenti Astrazione e incapsulamento.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
La Programmazione ad Oggetti
Attività 1 Introduzione alla OOP
Primi principi della OOP
La programmazione ad oggetti
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED

PROBLEMI DEL SOFTWARE Quantità sempre maggiori (informatizzazione) Sempre più complesso (e struttura non ovvia) Difficile da specificare (redazione "capitolati") Difficile costruirne di affidabile (robustezza) Difficile da collaudare (esaustività dei test) Difficile rimozione dei guasti (manutenibilità) Soggetto a continue modifiche (evoluzione) Modello di produzione "diffusa" (integrazione) Intrattabile con metodologie "centralistiche"

OGGETTI: CHE SONO MAI? Versione informatica degli oggetti "reali" Dotati di una loro propria "individualità" Capaci di interagire per scambio di messaggi Caratterizzati da proprietà (dati e funzioni) Data abstraction: proprietà "statiche" (stato) Functional abstraction: proprietà "dinamiche" (astraggono il "comportamento" dell'oggetto) Un msg modifica stato e attiva comportamenti Un oggetto "è" una coppia [stato,funzioni]

ESEMPIO: UN'AUTOMOBILE Functional abstraction –Avvìati –Férmati –Gira a destra –Gira a sinistra Data abstraction –Colore –Velocità –Rotazione volante –Livello carburante –Ultima revisione

INCAPSULAMENTO Associazione oggetto-coppia [stato,funzioni] Permette di "nascondere" aspetti della coppia Alcuni attributi sono visibili "all'esterno" Altri attributi sono "privati" dell'oggetto Le parti private sono reimplementabili senza implicazioni per gli interlocutori dell'oggetto Propagazione delle modifiche assai contenuta Stimolo al riutilizzo di oggetti ("black-box") Nascita di un'industria di componenti SW

ESEMPIO: AUTOMOBILE Parti "visibili" (interfaccia pubblica): accesso a "ciò che l'auto può fare" –volante, combinazione volante-freno (ev. a mano) –blocchetto di accensione, oppure manovella –pedale dell'acceleratore, acceleratore automatico Parti "nascoste" (implementazione): "come l'auto fa ciò che si può fare" –meccanica dello sterzo e dell'alimentazione –elettromeccanica dell'avviamento –sistema di alimentazione e accensione

(IN)VISIBILITA' E PUREZZA L'implementazione può essere cambiata a parità di interfaccia pubblica –presenza o meno del servosterzo –motorino di avviamento o piccola carica di dinamite –accensione elettromeccanica o elettronica Approccio "puro": lo stato è privato, e lo si può modificare solo attraverso l'uso di quelle componenti funzionali che sono state dichiarate pubbliche (es. "férmati") Approccio di Java: anche le componenti dello stato possono essere dichiarate pubbliche e modificate dall'esterno (es. "velocità=0")

INTERAZIONI TRA OGGETTI Gli oggetti possono comunicare e interagire mediante scambio di messaggi attraverso le loro interfacce pubbliche (stato o funzioni) Per mezzo di un messaggio un oggetto può chiedere un'informazione a un altro oggetto, causarne un cambiamento di stato, oppure delegargli un'attività Un messaggio in arrivo viene trattato dal metodo omonimo del ricettore, il quale "si attiva" per rispondere, per cambiare di stato, oppure per intraprendere un'attività

ESEMPIO: UN'AUTOVETTURA Il sistema antiskid durante una frenata invia periodicamente un messaggio alle ruote per "leggere" la loro velocità di rotazione Il galleggiante nel serbatoio del carburante invia messaggi all'indicatore di livello sul cruscotto per "scrivervi" un nuovo stato Il volante tornando alla posizione di riposo invia un messaggio al comando meccanico dell'indicatore di direzione per delegargli il compito di interrompere l'eventuale segnale lampeggiante (i.e. di "togliere la freccia")

CLASSI Visione "naturalistica" più che "insiemistica": insiemi di oggetti (gli esemplari della classe) aventi identica struttura (stato composto di identici attributi, identico comportamento) Specificano sia le componenti dello stato (nome e tipo, ma non necessariamente il valore) che le operazioni possibili (non solo nome e tipo, ma anche il comportamento) Due esemplari di una stessa classe sono distinguibili solamente per il valore dei loro attributi (il comportamento è sempre identico)

SOTTOCLASSI E SOPRACLASSI Sono rispettivamente la specializzazione e la generalizzazione di una classe per variazione del numero dei membri e/o per loro modifica Una sottoclasse si ottiene per aggiunta, per occultamento o per ridefinizione di uno o più membri rispetto alla classe di partenza (che diventa una sopraclasse della nuova classe) Gli oggetti della sottoclasse non "sanno" se sono nativi o se sono derivati da sopraclassi NOTA BENE: in funzione del problema, sono possibili più tassonomie diverse, così come avviene nelle scienze naturali

ESEMPIO: L'AUTOMOBILE La classe "automobile" è generalizzabile alla sopraclasse "veicolo a motore", a sua volta generalizzabile alla sopraclasse "veicolo", a sua volta, generalizzabile alla classe "mezzo di trasporto", a sua volta... (omissis)... a sua volta generalizzabile alla classe "oggetto" Oppure è specializzabile alla sottoclasse "berlina", a sua volta specializzabile alle sottoclassi "segmento A", "segmento B", etc. Alternativamente, la classe "berlina" può essere specializzata alle sottoclassi "diesel", "a benzina", "elettrica", "a reazione", etc.

EREDITARIETA' E' il meccanismo di specializzazione che consente di derivare una sottoclasse (N.B.: non una sopraclasse!) da una classe data Consente quindi il "riutilizzo programmabile" Le componenti della classe originale vengono conservate nella classe derivata, a meno che in quest'ultima non vengano esplicitamente occultate (p.es. perché ritenute irrilevanti o "dannose") o ridefinite (p.es. perché se ne può fornire un'implementazione migliore) Alle componenti della classe data se ne possono aggiungere altre a piacimento

ESEMPI: GUI, MATRICI E 740 Implementazione di un'interfaccia grafica –classe "finestra": attributo privato "sfondo" e metodo "cambia-sfondo" –sottoclasse "finestra-nera": attributo privato "sfondo" ridefinito con il valore costante "nero", metodo "cambia- sfondo" occultato Libreria di algebra lineare: –classe "matrice": metodo "determinante" generico –sottoclasse "matrice-diagonale": metodo "determinante" che moltiplica tra di loro gli elementi sulla diagonale Compilatore della dichiarazione dei redditi –classe "contribuente": quadri del modello 740 base –classe "autonomi": aggiunta del membro "quadro-E"

EREDITARIETA' MULTIPLA Insieme di meccanismi (la letteratura non è univoca) che consentono di derivare nuove sottoclassi da due o più (sopra)classi Esempio: due resistenze in serie possono essere viste come esemplare della classe "circuito" (o magari "circuito-serie-parallelo") o come esemplare della classe "resistenza" Porzioni di codice diverse possono scegliere di trattare un oggetto secondo l'una o l'altra "vista", specificando qual'è la scelta corrente Java non implementa ereditarietà multipla

"NANETTO" DI PAOLO ERCOLI Al chiar.mo prof. Paolo Ercoli Direttore del Centro di Calcolo Sede Roma, Caro Ercoli, nella mia qualità di presidente del corso di laurea in Ingegneria Informatica mi trovo a lamentare il disservizio... (omissis)... Con i migliori saluti. Paolo Ercoli

CLASSI ASTRATTE Create per generalizzazione, rappresentano descrizioni "incomplete" di oggetti Raccolgono alcune delle loro caratteristiche comuni, ma non in quantità sufficiente a farne delle vere e proprie superclassi Pertanto non posseggono esemplari ("non possono essere istanziate"), ma è possibile derivarne sottoclassi "vere" (i.e. non astratte) Usate principalmente come strumenti di polimorfismo per definire operazioni (e.g. "print") comuni a più classi poco correlate

TERMINOLOGIA E SINONIMI Classi o tipi –generalizzazione, specializzazione o raffinamento –sottoclasse o figlia, sopraclasse (o superclasse) o madre o classe base, classe astratta –ereditarietà [ingl. "inheritance"], gerarchia o tassonomia di classi Oggetti o attori –esemplare [gerg. "istanza", da "instance"] di una classe –componente o membro o proprietà Funzioni o operazioni –astrazione funzionale o comportamento (behaviour) –componente pubblica o interfaccia o metodo Dati o attributi –stato [il termine "data abstraction" è mal traducibile]