Overriding.

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

© 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.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
29 febbraio 2008 Progettare tipi di dato astratti.
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.
SISSIS MODULO DI JAVA PER LA CLASSE IV DELL’ITI
Fondamenti di Informatica
Interfacce. Interfacce come strumento di progetto Scelta delle classi di un progetto Criteri di coesione e accoppiamento Interfacce e riuso di codice.
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.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Derivazione tra classi
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.
Programmazione Corso di laurea in Informatica
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.
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
Programmazione con Interfacce
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Java base IV: Java e la programmazione O.O.
CLASSI ASTRATTE L’ereditarietà porta riflettere sul
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Ereditarietà e Polimorfismo
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio.
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
30/11/2004Laboratorio di Programmazione - Luca Tesei1 Interfacce e Polimorfismo.
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.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
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.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
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.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
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.
LIP: 18 Aprile 2008 Interfacce. Rappresentazione Lista val next vuota Lista vuota: any true Lista non vuota: any true 154 false 24 false.
La Programmazione ad Oggetti
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2015/16 Oltre le classi.
28/12/2001package 1 Package Pacchetti e interfacce.
1 Diagramma delle Classi. 2 Diagramma delle classi Grafico che fornisce una vista strutturale (statica) del sistema in termini di classi attributi operazioni.
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:

Overriding

È possibile l’overloading di funzioni ereditate public class B {//CLASSE BASE public void f(int i) {…} } public class D extends B { //CLASSE DERIVATA public void f(String s) {…} } D d = new D(); d.f(1); //OK: invoca B.f(int) d.f(“prova”); //OK: invoca D.f(String)

Overriding di funzioni Nella classe derivata è possibile anche fare overriding (ridefinizione) delle funzioni della classe base… …definendo nella classe derivata una funzione con esattamente lo stessa segnatura della funzione ereditata…

Overriding di funzioni …ogni volta che si invoca detta funzione su un oggetto della classe derivata (indipendentemente dal tipo del riferimento usato)… …viene eseguito il corpo della funzione ridefinita.

Esempi Esempio1.java Esempio2.java

Osservazioni I clienti della classe D non possono più invocare B.f(int) ma solo D.f(int)… …all’interno della classe invece si può invocare B.f(int) facendo uso di super (analogo a this).

Late Binding

Late binding A tempo di compilazione si controlla solo l’esistenza di una funzione con la segnatura richiesta… …ma non si creano collegamenti con il corpo della funzione stessa…

Late binding …tali collegamenti sono stabiliti a runtime in base alla classe dell’oggetto di invocazione (e non del riferimento). Esempio: LateBinding.java

Note sull’overriding È possibile cambiare il livello di accesso della funzione ridefinita, ma solo allargandolo. È possibile bloccare l’overriding di una funzione qualificandola final.

L’overriding di campi dati non esiste! Se nella classe derivata definiamo un campo dati con lo stesso nome di un campo dati della classe base…

L’overriding di campi dati non esiste! …il campo della classe derivata nasconde quello della classe base… …che però resta accessibile utilizzando riferimenti del tipo base. Esempio: SovrascritturaCampiDati.java

Classi Astratte

Le classi astratte … sono classi che non possono avere istanze proprie … … cioè, sono classi utilizzate per derivare sottoclassi …

Le classi astratte …possono avere funzioni astratte cioè dichiarate ma non definite (la segnatura è presente, ma il corpo no)… …le classi (concrete) derivate devono fare overriding delle funzioni astratte.

Esempio Scrivere una classe Java per rappresentare figure. Per ciascuna figura ci interessa sapere il colore, il perimetro e l’area Figure.java

Esempio Scrivere una classe per rappresentare figure che sono rettangoli, triangoli, cerchi Rettangolo.java, Triangolo.java, Cerchio.java

Esempio di cliente di una classe astratta Scrivere una funzione cliente che dato un array di figure, restituisca la somma dei perimetri ServiziFigure.java

Osservazioni La funzione è polimorfa… …per supportare il polimorfismo l’overriding e il late binding è essenziale… …facilita notevolmente la legibilità, il riuso e l’estendibilità.

Interfacce

Una interfaccia …è una astrazione per un insieme di funzioni pubbliche, delle quali si definisce la segnatura ma non il corpo… …una classe implementa l’interfaccia definendo tutte le funzioni previste dalla stessa.

Sintatticamente … …una interfaccia è simile ad una classe dove… …non possono essere presenti campi dati (eccetto costanti statiche…)… …tutte le funzioni sono astratte (segnatura, ma non corpo)…

Esempio public interface Confrontabile { boolean maggiore(Confrontabile c); boolean paritetico(Confrontabile c); } //Nota: le funzioni di una interfaccia //sono implicitamente public

Data una interfaccia possiamo costruire classi che la implementano … Persona.java Edificio.java

Data una interfaccia possiamo costruire funzioni (polimorfe) che la usano … ServiziCofrontabile.java Main.java

Osservazioni Le interfacce rappresentano collezioni di funzionalità… …messe a disposizione dalle classi che le implementano...

Osservazioni …sfruttando il polimorfismo, possiamo costruire clienti che fanno uso di dette funzionalità, indipendentemente da come sono implementate (riuso)

Differenza tre interfacce e classi astratte …una classe astratta è una classe, cioè una astrazione di un insieme di oggetti simili (quelli delle sue sottoclassi)… …una interfaccia è una semplice astrazione di un insieme di funzionalità...

Differenza tre interfacce e classi astratte …pensare Confrontabile come una astrazione sia delle persone che degli edifici solo perché entrambi dispongono delle funzionalità di confronto maggiore() e paritetico() è una forzatura.

Altre caratteristiche delle interfacce Java

Una classe può implementare più di una interfaccia… public interface I { void g(); } public interface J { void h(); } public class C implements I,J { void g(){…} void h(){…} }

Una interfaccia può essere derivata da un’altra interfaccia… public interface I { void g(); } public interface J extends I {void h();} public class C implements J { void g(){…} void h(){…} }

Java supporta ereditarietà multipla per le interfacce (non per le classi)… public interface I {void g();} public interface J {void h();} public interface M extends I,J {void k();} public class C implements M { void g(){…} void h(){…} void k(){…} }