Programmazione ad oggetti

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.
© 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.
PHP.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Le gerarchie di tipi.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Principi di Programmazione Object-Oriented
Programmazione orientata agli oggetti OOP Object Oriented Programming
©Carlo Tasso 1999 Object Oriented Programming Slide 1 OO Analysis Vs. OO Design OOA – Object Oriented Analysis. –Specifica COSA, IN QUALE CONTESTO il sistema.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Derivazione tra classi
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.
Gerarchia di classi Java
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,
1 laboratorio di calcolo II AA 2003/04 quinta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
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.
Java base IV: Java e la programmazione O.O.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
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)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Ereditarietà e Polimorfismo
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Introduzione alla programmazione Object Oriented
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Pippo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Progettazione di software. Pericoli dell’ereditarietà Spesso si usa l’ereditarietà dove non si dovrebbe.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Ereditarietà.
Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.
Università degli Studi di Napoli Parthenope programmazione III.
Programmazione a oggetti
CORSO DI PROGRAMMAZIONE II Lezione 22
OOP Object Oriented Programming Programmazione Orientata agli Oggetti
I processi.
Ereditarietà e polimorfismo
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
Incapsulamento e information hiding
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
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
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
La Programmazione ad Oggetti
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
La programmazione ad oggetti
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

Programmazione ad oggetti Lezione 3 Programmazione ad oggetti Incapsulamento Ereditarietà Polimorfismo

OOP = OBJECT ORIENTED PROGRAMMING ereditarietà polimorfismo OOP incapsulamento

Lezione 2 Incapsulamento Con il termine incapsulamento si indica la proprietà degli oggetti di incorporare al loro interno sia gli attributi che i metodi, cioè le caratteristiche e i comportamenti dell’oggetto. Tutto ciò che si riferisce ad un certo oggetto è racchiuso e contenuto all’interno dell’oggetto stesso Gli attributi e i metodi sono incapsulati nell’oggetto. In questo modo tutte le informazioni utili che riguardano un oggetto sono al suo interno. Questo è uno dei vantaggi della programmazione ad oggetti

Lezione 2 Interfaccia Un oggetto può essere utilizzato inviando ad esso i messaggi. L’insieme dei messaggi, che consentono l’interazione con gli oggetti, rappresenta la sua interfaccia L’interfaccia è costituita dall’elenco dei metodi identificati dal loro nome. Per ogni metodo occorre indicare anche il numero e il tipo dei parametri e il valore di ritorno del metodo Chi utilizza l’oggetto deve conoscere solo la sua interfaccia. In questo modo può sapere quali metodi possono essere invocati, quali sono i parametri da passare e che cosa ricaverà come valore di ritorno

interessa cosa fa e come usarlo, non come funziona internamente Interfaccia COMPONENTE interessa cosa fa e come usarlo, non come funziona internamente = INTERFACCIA anche se i compiti svolti comportano un codice molto complicato, per usare un componente è sufficiente conoscere la sua interfaccia (sistema di controllo) se un componente viene modificato internamente, ma la sua interfaccia rimane la stessa, tutti gli altri componenti che lo usano non devono essere modificati (è sufficiente ricompilarli/rilinkarli);

Accesso agli attributi Lezione 2 Accesso agli attributi Anche gli attributi sono nascosti nell’oggetto Per poter leggere o modificare il valore di un attributo, si dovrebbe utilizzare un metodo che esegue l’operazione richiesta Per esempio, se volessimo conoscere il valore della velocità dell’oggetto auto1 dovremmo usare il seguente messaggio: auto1.leggiVelocità() Questo garantisce l’information hiding, ma comporta che per ogni attributo dell’oggetto siano definiti il metodo per leggere e il metodo per modificare il suo valore

Accesso agli attributi Lezione 2 Accesso agli attributi Alcuni linguaggi hanno cercato di superare questa difficoltà consentendo un modo diverso per manipolare gli attributi; in questo caso ci si riferisce direttamente agli attributi: auto1.velocità Questa modalità di accesso agli attributi viola la regola dell’information hiding, perché gli attributi non restano più nascosti all’interno dell’oggetto, ma offre la facilitazione di poter manipolare gli attributi senza usare i messaggi

Lezione 3 Ereditarietà L’ereditarietà è lo strumento che permette di costruire nuove classi utilizzando quelle già sviluppate Quando una classe viene creata attraverso il meccanismo di ereditarietà a partire da un’altra classe, essa riceve in eredità tutti gli attributi e i metodi della classe generatrice

Lezione 3 Ereditarietà La classe che è stata derivata da un’altra usando l’ereditarietà prende il nome di sottoclasse. La classe generatrice di una sottoclasse si chiama sopraclasse Queste relazioni tra le classi individuano una gerarchia che nasce da un processo di specializzazione. Infatti le classi che si trovano in cima alla gerarchia sono le più generali e man mano che si scende si trovano classi più specializzate

Ereditarietà Lezione 3 Mezzi di trasporto Veicoli a motore Mezzi non a motore Bicicletta Cavallo Auto Moto Autobus

Lezione 3 Ereditarietà La sottoclasse eredita dalla sopraclasse tutti gli attributi e tutti i metodi con la possibilità di inserire le differenze. La nuova classe si differenzia dalla sopraclasse in due modi: - per estensione, quando la sottoclasse aggiunge nuovi attributi e metodi che si sommano a quelli ereditati - per ridefinizione, quando la sottoclasse ridefinisce i metodi ereditati, viene cioè data un’implementazione diversa di un metodo

Lezione 3 Ereditarietà L’ereditarietà serve a definire nuove classi, derivate da altre, che ereditano gli attributi e i metodi, con la possibilità di ridefinirli o di aggiungerne di nuovi.

Ereditarietà Esistono due tipi di ereditarietà: - singola e multipla Lezione 3 Ereditarietà Esistono due tipi di ereditarietà: - singola e multipla

Lezione 3 Ereditarietà Si parla di ereditarietà singola quando una sottoclasse deriva da un’unica sopraclasse sopraclasse sottoclasse sottoclasse

Lezione 3 Ereditarietà Si parla di ereditarietà multipla quando una classe deriva da due o più sopraclassi Mezzi di trasporto Animali Cavallo

antenata, superclasse, genitrice programmare per differenze !! OOP – EREDITARIETA’ Animali Insetti Mammiferi quadrupedi bipedi cani specializzazione generalizzazione antenata, superclasse, genitrice derivata, discendente figlia, sottoclasse is-a programmare per differenze !!

Esempi usando il linguaggio Java Class veicoli { // attributi // metodi … } class automobile extends veicoli Eredita attributi e metodi della classe veicoli … e ne può aggiungere di nuovi

Lezione 3 Polimorfismo Il polimorfismo indica la possibilità per i metodi di assumere forme, cioè implementazioni, diverse all’interno della gerarchia delle classi Tutti i veicoli a motore possiedono il metodo accelera - Le sottoclassi automobile e moto ereditano il metodo accelera, ma è probabile che lo ridefiniscano per adeguarlo alle particolari esigenze - Il metodo accelera dell’automobile si manifesterà con la pressione del pedale, mentre nella moto sarà implementato con il movimento della manopola Queste due diverse implementazioni evidenziano l’aspetto polimorfico del metodo accelera

Lezione 3 Polimorfismo Durante l’esecuzione del programma, un’istanza della classe veicoli a motore può rappresentare sia una automobile che una moto Non è possibile sapere, prima dell’esecuzione, se si tratta di una automobile o di una moto Il collegamento dinamico garantisce che, richiamando il metodo, tra tutte le implementazioni venga scelta quella corretta che corrisponde all’oggetto interessato