Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 1 Sulla realizzazione dellereditarietà 4 Ereditarietà: statica / dinamica 4 Binding: statico.

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.
Unified Modeling Language
Costruttori e Distruttori
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
UML: Class Diagram 1 Corso IS I /03
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Semantica Operazionale di un frammento di Java: lo stato.
Semantica Operazionale di un frammento di Java: lo stato
Sistemi e Tecnologie della Comunicazione
Dispatch.
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Sistemi basati su conoscenza (agenti intelligenti) 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 (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Derivazione tra classi
Overriding.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 6 1 Programmi concorrenti: quanto è lungo un millisecondo? In un normale personal computer.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
UML: Class Diagram Corso IS I /03
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Gerarchia di classi Java
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
memoria gestita staticamente:
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
Lezione XI Laboratorio di Programmazione. Ereditarieta Fondamentale proprieta dei linguaggi OO. Permette di specificare un nuova classe derivata da unaltra.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Le funzioni a tempo di esecuzione
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
Realizzazione siti web Pagine web dinamiche - javascript.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Ereditarietà e Polimorfismo
Introduzione alla programmazione Object Oriented
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Università degli Studi di Napoli Parthenope programmazione III.
Ereditarietà e polimorfismo
Programmazione ad oggetti
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Diagramma delle Classi
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 II Ingegneria Informatica (A-I) 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.
Ese 1 (del 31 Marzo 2004). Il compilatore Non esegue il programma, non guarda i valori che possono assumere di volta in volta le variabili, non fa assunzioni.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
1 Semantica Operazionale di un frammento di Java: intro estensione (con piccole varianti) di quella di FP | v |
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:

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 1 Sulla realizzazione dellereditarietà 4 Ereditarietà: statica / dinamica 4 Binding: statico / dinamico 4 Attribuzione dei tipi: statica / dinamica

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 2 Attribuzione dei tipi Attribuzione dei tipi statica: le variabili, i parametri formali, il risultato dei metodi, sono tipati Il compilatore può verificare a priori se lo scambio dei messaggi e laccesso alle variabili sono validi e consistenti Attribuzione dei tipi dinamica: il compilatore ammette a priori tutti gli scambi di messaggi e tutti gli accessi alle variabili - La loro validità viene verificata solo a run-time

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 3 Designazione delloggetto ricevente: self e super Supponiamo di aggiungere un metodo prezzoTotale alla classe ARTICOLO,Calcolato come prezzoIva + prezzoTrasporto PROBLEMA: il prezzoIva di un articolo di lusso è calcolato diversamente dal prezzoIva di un articolo normale. Il metodo prezzoTotale deve quindi prevedere un trattamento differenziato se applicato ad articoli della sottoclasse ARTICOLO_LUSSO

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 4 Designazione delloggetto ricevente: self e super (cont.) Soluzione: uso della variabile speciale self: è un riferimento allo stesso oggetto che esegue prezzoTotale prezzoTotale (): return (send (self, prezzoIva) + send (self, prezzoTrasporto))

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 5 Esempio: uso di self Loggetto cav, istanza della classe CAVIALE, riceve il messaggio: send (cav, prezzoTotale) Esegue quindi il metodo prezzoTotale della classe ARTICOLO, che gli rimanda i messaggi: send (cav, prezzoIva) e send (cav, prezzoTrasporto) A questo punto cav esegue correttamente i metodi prezzoIva e prezzoTotale della classe ARTICOLO_LUSSO, come richiesto OSSERVAZIONE: notare lutilità del binding dinamico

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 6 La variabile speciale super Supponiamo che il metodo prezzoTrasporto della classe ARTICOLO_LUSSO sia una specializzazione del corrispondente metodo della superclasse ARTICOLO, e che anche la sottoclasse ARTICOLO_DEPERIBILE specializzi lo stesso metodo, ma in maniera differente: ARTICOLO prezzoTrasporto(): return (0,05 x prezzo) ARTICOLO_LUSSO prezzoTrasporto(): return (0,06 x prezzo) ARTICOLO_DEPERIBILE prezzoTrasporto(): return ( ,05 x prezzo) CAVIALEUOVA

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 7 La variabile speciale super (continua) Il metodo prezzoTrasporto può essere scritto in entrambe le sottoclassi Utilizzando il metodo corrispondente della superclasse nel modo seguente: in ARTICOLO_LUSSO: prezzoTrasporto (): return (1,2 x send (super, prezzoTrasporto)) in ARTICOLO_DEPERIBILE: prezzoTrasporto (): return ( send (super, prezzoTrasporto)) Con la variabile speciale super, il messaggio è inviato allo stesso oggetto, come con self, ma la ricerca del metodo da eseguire viene fatta nella superclasse

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 8 Realizzazione di super PROBLEMA (soluzione dei conflitti): sia ob loggetto ricevente un messaggio con selettore sel, e sia C la superclasse di ob che contiene il metodo da eseguire. Se questo metodo fa riferimento a super, in quale classe va cercato il supermetodo? Soluzione 1: viene scelto il primo metodo di selettore sel incontrato al di sopra della classe C, nella lista di priorità di C Soluzione 2: viene scelto il primo metodo di selettore sel incontrato al di sopra della classe C, nella lista di priorità di ob

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 9 Fusione e composizione di oggetti ARTICOLO ELETTRODOMESTICOARTICOLO_LUSSO TELEVISORE Ereditarietà multipla Costruzione di classi per fusione di oggetti Concettualmente corretto: TELEVISORE è un ELETTRODOMESTICO ed è un ARTICOLO_LUSSO (relazione is_a)

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 10 Fusione e composizione di oggetti (continua) RUOTA CARROZZERIAMOTORE AUTOMOBILE Concettualmente scorretto: AUTOMOBILE non è una CARROZZERIA, né un MOTORE, né una RUOTA

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 11 Fusione e composizione di oggetti (continua) Per la composizione di oggetti esiste già un valido meccanismo disponibile: le variabili di istanza AUTOMOBILE carrozza : CARROZZERIA motore : MOTORE ruote_ant : RUOTA ruote_pos : RUOTA La classe AUTOMOBILE non eredita da CARROZZERIA, MOTORE, RUOTA, bensì possiede dei campi definiti di tali tipi (relazione has_a) NOTA: una classe può ereditare da unaltra una sola volta