Il paradigma Object Oriented

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Introduzione al C++ e alla programmazione ad oggetti Corso Specialistico CNTC Bologna, febbraio 2001 Andrea Dell’Acqua e Claudio Grandi.
Introduzione ai Casi dUso (c) TECNET DATI (c) TECNET DATI Pag. 2 Dai requisiti ai casi duso obiettividefinire gli obiettivi –gli obiettivi del committente.
IL MODELLO ENTITA’ - RELAZIONE I costruttori di base
© 2007 SEI-Società Editrice Internazionale, Apogeo Unit à B2 Gli oggetti: concetti avanzati.
Unified Modeling Language
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Programmazione object oriented in C++
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
Programmazione orientata agli oggetti OOP Object Oriented Programming
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
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.
©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
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento Prof. M.T. PAZIENZA a.a
Distributed Object Computing
Tipo Documento: unità didattica 1 Modulo 14 Compilatore: Antonella Bolzoni Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
eliana minicozzi linguaggi1a.a lezione2
Overriding.
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 1 Sulla realizzazione dellereditarietà 4 Ereditarietà: statica / dinamica 4 Binding: statico.
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED.
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
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
Modello E-R Generalizzazioni
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
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.
Programmazione in Java (8)
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
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: ________________________________________________________________________________.
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Programmazione ad oggetti
Diagramma delle Classi
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.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Fondamenti di Informatica 2 Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Intelligenza Artificiale 1 Gestione della conoscenza lezione 15 Prof. M.T. PAZIENZA a.a
La Programmazione ad Oggetti
1. 2 Introduzione alla programmazione ad oggetti Gli strumenti di programmazione finora mostrati sono solo una piccola parte della strumentazione necessaria.
Attività 1 Introduzione alla OOP
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
La programmazione ad oggetti
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
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:

Il paradigma Object Oriented

gli oggetti un oggetto è un elemento o concetto del mondo reale che può essere identificato in modo univoco: un cliente, un articolo, un impiegato … ogni oggetto è costituito dall’insieme dei suoi dati caratteristici e delle funzioni che operano su di essi per fornire determinati servizi al resto del sistema ciascun oggetto è descritto attraverso: attributi, che ne definiscono le caratteristiche metodi (funzioni), che ne descrivono i comportamenti

gli oggetti e le classi IMPIEGATO Attributi COGNOME NOME …. DATA DI ASSUNZIONE EMETTI STIMENDIO ASSUMI ROSSI MARIO …. 11/11/81 Metodi …. ASSUMI EMETTI STIPENDIO VERDI ANNA …. 01/05/92 Rossi Mario e Verdi Anna sono oggetti (istanze) della classe IMPIEGATO

gli oggetti e le classi tutti gli oggetti che condividono le stesse proprietà (attributi) e gli stessi comportamenti (metodi) possono essere raccolti in classi i metodi sono comuni per tutti gli oggetti della classe anche il formato dei dati è comune per tutti gli oggetti di una classe, mentre il contenuto può differire per ogni oggetto la classe è responsabile di creare nuovi oggetti (nuove istanze), tutti uguali, ma dotati ciascuno di una propria individualità

incapsulazione metodi e dati sono incapsulati nell’oggetto; dall’esterno né metodi né dati sono direttamente accessibili i dati (attributi) di un oggetto possono essere manipolati solo attivando i suoi metodi un metodo è attivato dall’oggetto a fronte di una specifica richiesta di servizio (messaggio) solo l’interfaccia pubblica dell’oggetto, costituita dai messaggi che ad esso si possono inviare (servizi che l’oggetto può offrire), è nota all’esterno si comunica con un oggetto inviandogli un messaggio in cui si specifica che cosa si vuole da esso

effetti dell’incapsulazione Ogni classe di oggetti è definita in due modi, uno esterno (pubblico) ed uno interno (privato) Livello esterno o interfaccia pubblica specifica i messaggi (e gli argomenti ad essi associati) che possono essere inviati agli oggetti della classe Livello interno o privato definisce le proprietà dell’oggetto (i dati) e le modalità di trattamento di questi dati (i metodi)

effetti dell’incapsulazione l’interfaccia pubblica specifica i servizi che l’oggetto può fornire rappresenta ciò che l’oggetto “sa fare” nello scenario applicativo, le sue responsabilità L’incapsulazione soddisfa le seguenti esigenze: la necessità di distinguere nettamente tra specifica e implementazione di un servizio (operazione) il bisogno di modularità

information hiding gli oggetti nascondono la loro struttura all’ambiente circostante per usare un oggetto non è necessario conoscere la sua struttura interna, è sufficiente conoscere le operazioni che esso offre Vantaggi dell’ infomation hiding: semplicità d’uso effetti benefici sulla manutenzione del software: è possibile apportare variazioni all’oggetto in modo trasparente per le applicazioni che lo usano

i messaggi i messaggi sono i meccanismi di comunicazione tra gli oggetti il messaggio è lo stimolo a svolgere un’azione la ricezione di un messaggio da parte di un oggetto causa in questo l’esecuzione di un’operazione struttura del messaggio id oggetto nome-metodo (arg1, arg2, …) Mioconto preleva (100 lire)

i metodi UML distingue tra operazione e metodo: l’operazione è la specifica di un servizio offerto dalla classe il metodo ne è l’implementazione Fanno parte della specifica il messaggio e gli argomenti ad esso associati Il metodo consiste di un blocco di istruzioni in grado di: fornire i dati dell’oggetto variare i dati dell’oggetto eseguire altre operazioni relative all’oggetto

i metodi quando un messaggio è inviato ad un oggetto, esso fa ciò che deve con i suoi dati interni e restituisce una risposta è responsabilità dell’oggetto ricevente conoscere e scegliere le funzioni opportune da applicare ai dati l’orientamento a oggetti sposta la responsabilità sui dati e le funzioni dal consumatore (client) al fornitore (server)

ereditarietà (specializzazione) PERSONA Attributi NOME INDIRIZZO DATA DI NASCITA Metodi …. VARIA INDIRIZZO permette ad una classe detta sottoclasse di essere definita a partire da un’altra classe detta superclasse tra le classi Persona e Impiegato esiste una relazione IS-A o gerarchia di specializzazione-generalizzazione la sottoclasse eredita gli attributi, le operazioni (e quindi anche i messaggi) della sua superclasse ogni sottoclasse può arricchire l’eredità ricevuta con un corredo proprio di attributi e operazioni l’ereditarietà promuove il riuso specializzazione IMPIEGATO Attributi DATA DI ASSUNZIONE …. Metodi ASSUMI EMETTI STIPENDIO generalizzazione

ereditarietà multipla quando una classe eredita da più superlassi si parla di ereditarietà multipla nell’esempio MEZZO ANFIBIO eredita sia da VEICOLO DI TERRA che da VEICOLO D’ACQUA non tutti i linguaggi di programmazione OO prevedono questa possibilità ma… come vengono risolti i conflitti quando nelle superclassi esiste un attributo (o un’operazione) con lo stesso nome, ma significati diversi?... Quale sarà ereditato nella sottoclasse? VEICOLO VEICOLO DI TERRA VEICOLO D’ACQUA MEZZO ANFIBIO CAMION BARCA

specializzazione esaustiva nell’esempio la specializzazione è esaustiva o totale la classe PERSONA è una classe astratta, non istanziabile è una classe “vuota”: non esistono oggetti PERSONA, ma solo oggetti PERSONA FISICA o PERSONA GIURIDICA le classi astratte servono a raccogliere attributi e operazioni comuni a più sottoclassi le classi PERSONA FISICA o PERSONA GIURIDICA sono classi concrete PERSONA FISICA GIURIDICA

specializzazione non esaustiva nell’esempio la specializzazione è non esaustiva o parziale la classe PERSONA è una classe concreta, istanziabile esistono oggetti PERSONA, che non sono né OPERAIO né IMPIEGATO PERSONA OPERAIO IMPIEGATO

overriding POLIGONO Metodi …. CALCOLA AREA consente di ridefinire qualche comportamento (operazione) o qualche informazione ereditati nell’esempio l’operazione calcola area è ridefinita nella sola sottoclasse TRIANGOLO nella superclasse POLIGONO l’operazione è implementata con il seguente algoritmo: perimetro * apotema / 2 nella sottoclasse TRIANGOLO l’operazione è implementata con un altro algoritmo: base * altezza / 2 TRIANGOLO ESAGONO Metodi …. CALCOLA AREA Metodi ….

polimorfismo POLIGONO Metodi …. CALCOLA AREA significa letteralmente: capacità di assumere forme diverse TRIANGOLO e ESAGONO appartengono alla stessa superclasse, entrambe le sottoclassi sanno rispondere al messaggio calcola area, ma lo fanno con un comportamento diverso (il metodo è diverso!) polimorfismo sta a indicare la capacità di un oggetto di attivare metodi diversi, a seconda della propria classe, alla ricezione del medesimo messaggio TRIANGOLO ESAGONO Metodi …. CALCOLA AREA Metodi ….

aggregazione è il meccanismo per la costruzione di oggetti complessi aggregando oggetti componenti più semplici esprime la relazione is-part-of tra una Parte e il Tutto un oggetto aggregato si presenta come un “Tutt’uno” può essere usato senza doverne “conoscere” la composizione interna (principio di incapsulazione) ORDINE RIGA ORDINE

Classe e tipo sono due modi diversi di guardare agli oggetti: una classe rappresenta l’insieme degli oggetti che condividono la stessa struttura interna (dati e metodi) è il modello di fabbricazione per più oggetti è un meccanismo orientato al riuso un tipo rappresenta la specifica dell’interfaccia di un insieme di oggetti, descrive come questi oggetti possono essere usati è un meccanismo orientato all’usabilità Classe e tipo sono due modi diversi di guardare agli oggetti: l’oggetto è un tipo per l’utilizzatore una classe per il progettista

benefici dell’OO Riusabilità gli oggetti delle classi possono essere riutilizzati in contesti diversi, attivandoli con gli opportuni messaggi se l’oggetto non presenta tutte le funzioni richieste, si può specializzare sfruttando il meccanismo dell’ereditarietà Robustezza del SW e manutenzione più semplice è nota la responsabilità di ciascun oggetto nello scenario applicativo: è sempre possibile identificare la componente che ha comportamenti anomali le modifiche al software sono localizzate: normalmente si deve modificare un metodo alla volta è possibile apportare variazioni all’oggetto in modo trasparente per le applicazioni che lo usano (quando le modifiche non hanno impatto sull’interfaccia pubblica)

benefici dell’OO Integrità dei dati Controllo della complessità i dati possono essere manipolati solo da specifici metodi, che devono garantire il rispetto delle “regole di business” Controllo della complessità ereditarietà e aggregazione sono criteri di astrazione che consentono di scomporre il sistema in componenti elementari, facilitando la comprensione del problema e il dominio della complessità Interoperabilità il meccanismo dei messaggi permette la comunicazione e la collaborazione di componenti realizzate su piattaforme diverse ….