Derivazione di Classi
|
|
- Fulvio Napoli
- 7 anni fa
- Visualizzazioni
Transcript
1 Derivazione di Classi Derivazione di Classi Lezione 14 Il meccanismo della derivazione di classi implementa l operazione di ereditarietà della programmazione ad oggetti La classe derivata può utilizzare tutti i dati ed i metodi non privati della classe base come propri elementi non c è bisogno di riscrivere i metodi ereditati dalla classe base, a meno che non debbano essere modificati Il livello di accesso di un membro della classe può essere privato, pubblico e protetto i membri protetti non sono visibili dall esterno della classe ma sono ereditabili 1 Definizione di una Classe Derivata Costruzione di Nuovi Tipi per Composizione La definizione di una classe derivata richiede la specifica del nome delle classi da cui devono essere ereditati dati e metodi. All interno della classe devono essere definiti i membri aggiuntivi class Window : public Video { short origine_x, origine_y; void trasla(int, int); // nuovo metodo char dammi(int, int); // ridefinizione Avremmo potuto anche definire la classe Window come contenente un oggetto Video class Window2 { Video V; short origine_x, origine_y; Window2 W; // la larghezza della finestra è contenutra in W.V.larghezza 2 3 Esempio Derivazione Singola e Multipla Dichiarazione del template di classe list di LEDA class dlink; class dlist { dlink* h; dlink* t; int count;. template <class T> class list : public dlist { Ogni classe può specificare una o più classi base da cui ereditare dati e metodi L insieme delle classi e le relazioni di derivazione formano un grafo di derivazione se ogni classe ha una sola classe base il grafo è un albero se le classi hanno più classi base il grafo è un DAG il grafo di derivazione non può mai contenere cicli Ogni classe del grafo contiene tutti gli elementi che sono comuni a tutte le sue classi derivate
2 Esempio Derivazione Singola Esempio Derivazione Multipla figura poligono cerchio quadrato rombo rettangolo Estinzione Erbivoro AnimaleZoo Uccello Orso Pesce Felino Panda OrsoBianco Grizzly Yoghi 6 7 Definizione di una Classe Base Esempio Definizione AnimaleZoo I membri della classe base rappresentano Insieme delle operazioni supportate da tutte le classi derivate L utente opererà solo sull interfaccia della classe base Se l implementazione dipende dalla classe derivata la funzione è dichiarata virtuale (virtual ) Insieme dei dati comuni a tutte le classi derivate Evita di replicare le definizioni in ciascuna classe derivata Se le classi derivate devono accedere ad un membro dato è dichiarato protected class AnimaleZoo { AnimaleZoo(char*, char*, short); ~AnimaleZoo(); virtual void disegna(); void localizza(); void informa(); char* nome; char* file; short gabbia; short cont; 8 9 Definizione della classe Poligono Interfaccia Pubblica di Poligono Tutti i tipi di poligoni hanno in comune tre metodi Calcolo del perimetro Settaggio del colore di sfondo e di quello del bordo L implementazione dei metodi per il calcolo dell area e il disegno del poligono dipendono dal tipo della poligono Ogni poligono è rappresentato da Lista dei vertici Colore di sfondo Colore del bordo class Poligono { Poligono(); Poligono(int N, vector<punto>&); // Crea un poligono con N lati memorizzati nel vettore virtual double area() const; double perimentro() const; void setta_sfondo(colore); void setta_bordo(colore) virtual void disegna() const; // Non implementato // Non implementato // Non implementato
3 Rappresentazione Poligono Definizione metodo: perimetro class Poligono { int _numlati; vector<punto> _vertici; color _sfondo; color _bordo; _lunghezza(const Punto&, const Punto&); double Poligono::perimetro() const { double ris=0.0; for(int i=0; i<_numlati; i++) ris += _lunghezza(_punti[i], _punti[(i+1) % _numlati]); return ris; Definizione di una Classe Derivata Classi Derivate da Poligono La definizione di una classe derivata richiede la specifica del nome delle classi da cui devono essere ereditati dati e metodi All interno della classe devono essere definiti I membri aggiuntivi I metodi che devono essere modificati class Quadrato : public Poligono { void disegna(); double area(); double Quadrato::area() { double _lato = _lunghezza(_vertici[0], _vertici[1]); return _lato * _lato; class Rettangolo : public Poligono { void disegna(); double area(); double _altezza, larghezza; double Rettangolo::area() { return _altezza * _larghezza; Accesso ai Membri Ereditati Accesso con Operatore di Scope Un oggetto di una classe derivata contiene un sottooggetto della sua classe base Contiene tutti i membri non-static della classe base La classe derivata può accedere ai dati non privati della classe base come se fossero propri membri I dati privati sono presenti ma non visibili Il compilatore segnala un accesso illegale Quadrato *q; q area(); q perimetro(); // accede a Quadrato::area() // accede a Poligono::perimetro() I membri ereditati continuano a far parte di un oggetto della classe base e possono essere anche referenziati tramite l operatore di scope :: q Poligono::perimetro(); L operatore di visibilità è necessario quando il membro ereditato è stato ridefinito nella classe derivata quando la classe eredita da classi base diverse membri con lo stesso nome
4 Accesso ai Membri Protetti della Classe Base Derivazione ed Amicizia Un oggetto di una classe derivata può accedere solo ai membri protetti del suo sotto-oggetto della classe base Rispetto ad altri oggetti della classe base si comporta come un oggetto esterno (non può accedere alla parte protetta) bool Quadrato::ConfrontaLati(const Poligono* pp) { int MieiLati = _NumLati; int SuoiLati = pp _NumLati; // ERRORE, accesso a dato protected // Versione corretta: SuoiLati = pp GetLati(); return (MieiLati == SuoiLati ); /* ConfrontaLati e GetLati dovrebbero essere definite nelle classi Poligono e Quadrato */ Una funzione amica di una classe B ha privilegio di accesso anche ai membri di B ereditati da altre classi class AnimaleZoo { friend void prezzo(animalezoo&); int valore; void prezzo(animalezoo& a) { Orso tmp; tmp.valore; // legale tmp.eta; // illegale class Orso : public AnimaleZoo { int eta; Derivazione ed Amicizia Inizializzazione delle Classi Derivate La relazione di amicizia non è transitiva gli amici degli amici non sono miei amici class AnimaleZoo { friend void prezzo(animalezoo&); class Primati : public AnimaleZoo { friend class AnimaleZoo; friend void capacitaparola(primati&); La funzione prezzo non può accedere ai dati privati di Primati La funzione capacitaparola non può accedere ai membri privati della classe base AnimaleZoo Un oggetto di una classe derivata contiene sottooggetti ereditati dalle sue classi base Questi sotto-oggetti sono inizializzati dai loro costruttori L inizializzazione di un oggetto della classe derivata avviene in tre passi. Sono invocati: 1. I costruttori delle classi base, per inizializzare i sotto-oggetti ereditati 2. I costruttori delle classi membro definiti nella classe 1. Questo accade quando un dato membro è di tipo classe 3. Il costruttore della classe derivata Inizializzazione delle Classi Derivate Costruttori Classe Poligono Gli argomenti da passare ai costruttori delle classi base sono indicati nella lista di inizializzazione Il sotto-oggetto viene identificato tramite il nome della classe base I costruttori delle classi base sono chiamati nell ordine in cui le classi sono specificate nella lista di derivazione Quadrato::Quadrato(const double lato): Poligono(lato,4) { Il costruttore di Quadrato non deve inizializzare i dati ereditati da Poligono: Non si potrebbe modificare la classe Poligono senza modificare anche il codice di Quadrato 22 class Poligono { Poligono(); Poligono(const vector<punto> &); Poligono(double L, int N) // crea un poligono di N lati lunghi L Poligono::Poligono() : _NumLati(0), _vertici(), _Sfondo(Bianco), _Bordo(Nero) { Poligono::Poligono(double val, int lati) : _NumLati(lati), _vertici(lati), _Sfondo(Rosso), _Bordo(Azzurro) { // calcola vertici Poligono::Poligono(const vector<punto> & pol) : _vertici(pol), _Sfondo(Verde), _Bordo(Giallo) {_NumLati=pol.size();
5 Costruttori Classi Derivate Costruttori per Copia di Classi Derivate class Rettangolo { Rettangolo(); Rettangolo (double, double, vector<punto>&); Rettangolo::Rettangolo () {_altezza = _larghezza = 0; Rettangolo::Rettangolo (double d1, double d2, vector<punto>& v) : Poligono(v) { _altezza = d1; _larghezza = d2; 24 Un oggetto di una classe derivata può essere inizializzato per copia anche se non esiste la versione del costruttore per copia il costruttore di default inizializza membro a membro l inizializzazione delle parti ereditate dalle classi base è fatta dai costruttori per copia delle classi base i costruttori sono chiamati nell ordine in cui sono specificate le classi base nella lista di derivazione Se la classe contiene la propria versione del costruttore per copia questo costruttore dovrà assegnare i valori ai dati ereditati dalle classi base (inizializzate per default) Analogo per l assegnamento 25 Distruttori Classi Derivate Esempio: la Classe Panda Quando un oggetto di una classe derivata termina il suo tempo di vita deve essere distrutto Il compilatore invoca automaticamente i distruttori dei membri e delle classi base Non c è bisogno di invocare esplicitamente questi distruttori Consideriamo come viene inizializzato un oggetto di tipo Panda chiama il costruttore di AnimaleZoo chiama il costruttore di Orso chiama il costruttore di Erbivoro chiama il costruttore di Estinzione chiama il costruttore di Panda per assegnare valori agli elementi specifici di Panda Le chiamate ai distruttori sono in ordine inverso Livello di Accesso della Derivazione Derivazione Pubblica Ogni derivazione ha un livello di accesso che può essere public, private o protected Il livello di accesso determina la visibilità dei membri ereditati all interno della classe derivata Ogni membro non privato della classe base ha il livello di accesso più restrittivo tra quello che aveva nella classe base e quello della derivazione Derivazione ogni elemento ereditato conserva il livello di accesso della classe base Derivazione tutti i membri ereditati sono protected Derivazione private: tutti i membri ereditati sono private 28 Una derivazione public implementa una relazione di specializzazione (isa) tutti i metodi pubblici della classe base fanno parte dell interfaccia pubblica della classe derivata è possibile convertire un oggetto della classe derivata nella classe base La derivazione pubblica è usata per ereditare l interfaccia pubblica della classe base La classe derivata può essere utilizzata allo stesso modo delle classi basi, più altri modi specifici
6 Derivazione Privata Eccezioni della Derivazione Una derivazione private implementa una relazione di contenimento (hasa) Nessun membro pubblico della classe base fa parte dell interfaccia pubblica della classe derivata per convertire un oggetto della classe derivata nella classe base serve un cast La derivazione privata è usata per ereditare l implementazione della classe base La classe derivata contiene tutti i membri non privati della classe base Possibile ottenere lo stesso risultato inserendo nella classe derivata un membro dato della classe base (contenimento) E possibile specificare per un membro ereditato un livello di accesso diverso da quello definito dalle regole standard consentire che un metodo di una classe ereditata privatamente sia public Non è possibile assegnare ad un membro un livello di accesso più permissivo di quello che aveva nella classe base template <class T> class Stack : private Array<T> { Array<T>::lenght; // la funzione lenght di Array<T> è public Conversioni Standard e Derivazioni Risoluzione dei Nomi in una Gerarchia di Classi Ogni oggetto, riferimento o puntatore ad una classe derivata può essere convertito in un oggetto, riferimento o puntatore ad una delle sue classi base void ruota(const Poligono&); rettangolo q(10, 20); ruota(q); // accede solo ai dati ereditati da Poligono Ogni puntatore ad un membro di una classe base può essere convertito in un puntatore ad un membro di una classe derivata pubblicamente 32 Il campo di visibilità di una classe derivata è contenuto nei campi di visibilità delle sue classi base Risoluzione dell identificatore prova contenuto nella funzione Panda::letargo() cerca nel campo di visibilità di Panda::letargo cerca nel campo di visibilità di Panda cerca contemporaneamente nel campo di visibilità di Orso, Erbivoro ed Estinzione cerca nel campo di visibilità di AnimaleZoo cerca nel campo di visibilità globale Se trova più soluzioni contemporaneamente da errore di ambiguità 33 Ereditarietà di Operatori Una classe derivata eredita tutti i metodi della sua classe base tranne i costruttori, il distruttore e l operatore di assegnamento Non è possibile sovrapporre all operatore ereditato dalla classe base una versione locale alla classe derivata, anche se ha firma differente il nome dell operatore è risolto sulla base dei campi di visibilità, senza tener conto dei tipi
Derivazione di Classi
Derivazione di Classi Lezione 14 Derivazione di Classi Il meccanismo della derivazione di classi implementa l operazione di ereditarietà della programmazione ad oggetti La classe derivata può utilizzare
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato in funzione
DettagliLezione 13 Programmazione ad Oggetti
Programmazione Orientata agli Oggetti La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato in funzione
DettagliLa programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
DettagliStrutture come parametri di funzioni
Strutture come parametri di funzioni int main() { struct PolReg { int numlati; float lunghezzalato; PolReg p1; p1.numlati = 3; p1.lunghezzalato = 10.0; float perimetro = p1.numlati * p1.lunghezzalato;
DettagliEreditarietà e polimorfismo
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Ereditarietà e polimorfismo Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione X Tatiana Zolo tatiana.zolo@libero.it 1 Proprietà fondamentale dei linguaggi object-oriented. Classe A classe base (o superclasse) classe da cui si eredita Classe
DettagliSovrapposizione di Funzioni
Sovrapposizione di un Nome La sovrapposizione (overloading) è un meccanismo che consente di assegnare ad un nome significati differenti Quando il nome viene utilizzato in una frase il significato corretto
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliIl linguaggio C++ Ugo de Liguoro
Il linguaggio C++ Ugo de Liguoro Caratteristiche Il C++ è class based; interpreta le classi come tipi; il subtyping coincide con la (chiusura transitiva della) relazione di sottoclasse; è basato sul C
DettagliProgrammazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
DettagliProgrammazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve
Programmazione orientata agli oggetti Ivan Lanese e Cosimo Laneve Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Programmazione orientata agli oggetti È un paradigma di programmazione
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliLettura e scrittura di file di dati input/output
Lettura e scrittura di file di dati input/output Lettura e scrittura da disco Molto semplice in C++: si fa esattamente come se fosse una tastiera (se sto leggendo da disco) o lo schermo (se sto scrivendo
DettagliProgettazione Object-Oriented
Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia
DettagliINFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliInformatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1
Informatica 3 Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una
DettagliInformatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)
Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una classe Modulo
DettagliGerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
DettagliGerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
Dettagliereditarietà e polimorfismo
ereditarietà e polimorfismo Java ereditarietà o l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza o la nuova classe viene definita esprimendo solamente le differenze
DettagliIl puntatore alla classe base e le funzioni virtuali
Polimorfismo Indice Le funzioni virtuali e il puntatore alla classe base Le funzioni virtuali pure Classi astratte: interfaccia Commenti sugli strumenti del C++ e l OOD Il puntatore alla classe base e
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliObiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.
Obiettivi Unità B2 Gli oggetti: concetti avanzati Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione Ereditarietà L ereditarietà permette
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliFondamenti di Informatica
Relazioni tra classi Fondamenti di Informatica 27. Standard UML 2. parte Generalizzazione: (ereditarietà) relazione in cui una classe (sottoclasse) eredita gli attributi e le operazioni di una superclasse:
DettagliIL TEMA DELLA RIUSABILITÀ
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice già funzionante e corretto il cui sviluppo ha richiesto
DettagliLaboratorio di Algoritmi e Strutture Dati. Esercizi
Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliConcetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object
Ereditarietà Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso protected e package La classe Object metodi tostring,
DettagliClassi astratte Interfacce
Classi astratte Interfacce Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Ereditarietà Abbiamo visto come L ereditarietà permette di costruire nuove classi utilizzando
DettagliCorso di Programmazione ad oggetti
Corso di Programmazione ad oggetti Ereditarietà e polimorfismo a.a. 2008/2009 Claudio De Stefano 1 Costruttori, distruttori ed ereditarietà Quando si usa l'ereditarietà bisogna tenere conto dei costruttori
DettagliOOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
DettagliCorso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)
DettagliReti di Connessione e Instradamento AA
Politecnico di Milano Dipartimento di Elettronica e Informazione Reti di Connessione e Instradamento AA. 2010-2011 Cenni sulla programmazione a oggetti con il C++ Massimo Tornatore (Autore delle slide:
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 9 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 01 Aprile 2008 ADT param. in C ADT param.
DettagliInformatica Ereditarietà Java. Ereditarietà
Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliEreditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliOOP Ereditarietà A. FERRARI
OOP Ereditarietà A. FERRARI ereditarietà l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza la nuova classe viene definita esprimendo solamente le differenze che
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
Dettaglicostruttori e distruttori
Costruttore costruttori e distruttori E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliCorso di Informatica
Corso di Informatica Modulo T1 C2 Ereditarietà e polimorfismo 1 Prerequisiti Tecnica elementare di OOP Concetto di struttura gerarchica Concetto di casting 2 1 Introduzione Abbiamo accennato al fatto che
Dettaglipublic class Counter2 extends Counter { public void dec() { val--; }
public class Main public class Counter2 extends Counter public void dec() val--; public class Counter public Counter() System.out.println("Counter : costruttore di default!"); val = 1; System.out.println("Counter
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011
Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali
DettagliConcetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
DettagliGli oggetti. Ogni oggetto ha un interfaccia e ogni oggetto ha un tipo. Incapsulamento. Oggetti. Contatore. Invio di Messaggi
Gli oggetti Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-149 Torino Ogni
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliEreditarietà. Ivan Lanese e Cosimo Laneve
Ereditarietà Ivan Lanese e Cosimo Laneve Argomenti Ereditarietà Sottotipaggio Costruttori Ereditarietà Spesso non vogliamo definire una classe a partire dal nulla, ma vogliamo definirla a partire da un
DettagliEsempio Principio di sostituibilità
Ereditarietà E uno dei concetti chiave delle tecniche orientate agli oggetti Esprime le somiglianze tra le classi, semplificando la definizione di una classe e riducendola a una o più classi simili Rappresenta
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliInterfacce. Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi.
Interfacce Interfacce Dichiarazioni di tipi riferimento che descrivono oggetti in modo astratto Specificano solo le firme dei metodi tralasciando tutti gli aspetti di implementazione Interfacce interface
DettagliModello procedurale versus modello O-O
Modello procedurale versus modello O-O Quando si scrive un programma si crea dentro il calcolatore un modello di una porzione del mondo reale. I linguaggi di programmazione procedurali consentono di costruire
DettagliProgrammazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Ereditarietà E' un meccanismo per estendere le funzionalità di una classe con nuovi campi e nuovi metodi Chiamiamo superclasse:
DettagliProgrammazione II. Lezione 18. Daniele Sgandurra 11/1/2011.
Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliProgrammazione in Java (I modulo) Lezione 20: Ereditarietà
Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
DettagliEsercitazione n 3. Obiettivi
Esercitazione n 3 Obiettivi Capacità di analisi e di estensione di progetti esistenti Linguaggio Java: Ereditarietà delle classi Utilizzo di costruttori e metodi di superclasse Visibilità: public, private,
DettagliUso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Uso di classi e oggetti Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Tipi di dati Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione
DettagliIl creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto. L owner di un oggetto è l entità responsabile della sua distruzione
Il creator di un oggetto è l entità (oggetto o funzione) che crea un oggetto L owner di un oggetto è l entità responsabile della sua distruzione Creator e owner in generale non coincidono class ExprParser
DettagliLezione 13 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona
Lezione 13 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I modificatori: Public Private -
DettagliOggetti e dati primitivi 1
I membri delle classi Oggetti e dati primitivi Corso di laurea in Le classi contengono 2 tipi di membri, definiti per l intera classe o per le singole istanze Le variabili o i campi, che rappresentano
DettagliLezione 13 programmazione in Java
Lezione 13 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I modificatori: Public Private - Static
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
DettagliFondamenti di Informatica
Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di
DettagliIndice. Le funzioni virtuali e il puntatore alla classe base Le funzioni virtuali pure Classi astratte: interfaccia
Polimorfismo Indice Le funzioni virtuali e il puntatore alla classe base Le funzioni virtuali pure Classi astratte: interfaccia Il puntatore alla classe base e le funzioni virtuali Il puntatore alla classe
DettagliINGEGNERIA DEL SOFTWARE
INGEGNERIA DEL SOFTWARE LINGUAGGI OO e C++ Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio
DettagliSerializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione
Calendario esercitazioni e laboratori 29 Marzo esercitazione 12 Aprile esercitazione 26 Aprile laboratorio (lab721) 2 Maggio laboratorio (lab721) 3 Maggio esercitazione 9 Maggio laboratorio (???) 17 Maggio
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Sommario 2 2» Struttura
DettagliParadigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30
Paradigma a oggetti Programmazione orientata agli oggetti Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Programmazione ad oggetti. Si estendono i tipi di dati astratti che permettono:
DettagliProgrammazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice
Programmazione ad oggetti. Paradigma a oggetti Programmazione orientata agli oggetti Si estendono i tipi di dati astratti che permettono: information hiding e incapsulamento nascondo la rappresentazione
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Analisi e Progettazione OO Origini Le metodologie ad oggetti nascono negli anni 70 ma si affermano solo negli anni 80 grazie alla nascita dei linguaggi di programmazione ad oggetti
DettagliLllezione 12 Template. Template. Lezione 12
Lezione 12 Cosa è un Il template è un meccanismo che consente di creare uno schema generico di funzione o di classe, che non fa esplicito riferimento a nessun particolare tipo di dati utile quando si devono
DettagliLllezione 12 Template
Lezione 12 Cosa è un Il template è un meccanismo che consente di creare uno schema generico di funzione o di classe, che non fa esplicito riferimento a nessun particolare tipo di dati utile quando si devono
DettagliProgrammazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati
Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo 1 Esempio 1: Costruttori ed ereditarietà Costruttori ed ereditarietà 2 Introduzione Java prevede due automatismi legati
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello
Java Il linguaggio Java è un linguaggio di programmazione ad alto livello algoritmo: astrazione della realtà linguaggio di programmazione: astrazione del processore variabile e tipo: astrazione della locazione
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Il linguaggio Java è un linguaggio di programmazione ad alto livello algoritmo: astrazione della realtà linguaggio di programmazione: astrazione del processore variabile e tipo: astrazione della locazione
DettagliUNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo A.A. 2018-19 Test Finale Roma, 17 gennaio 2019 1) Le variabili A, B e C sono dichiarate int.
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliVisibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
Dettagli