Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1
|
|
- Rosalinda Valentino
- 6 anni fa
- Visualizzazioni
Transcript
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 classe Modulo 4: Assegnamento e uguaglianza Modulo 5: Genericità in C++ Politecnico di Milano - Prof. Sara Comai 1 Lezione 8 - Modulo 1 Ereditarietà Politecnico di Milano - Prof. Sara Comai 2 Generalizzazione e ereditarietà Principali astrazioni impiegate per condividere similitudini tra classi pur preservandone le indipendenze Generalizzazione o relazione IS-A: relazione tra una classe (super-classe o classe base) e una o più versioni specializzate della classe (sotto-classi o classi derivate) Persona Docente Studente Tutor Generalizzazione e ereditarietà (2) Vale la proprietà di transitività Concetto di antenato e discendente di una classe Ogni istanza di una sotto-classe è un istanza di tutte le classi antenato Lo stato di un istanza include il valore per ogni attributo di ogni classe antenato Una qualsiasi operazione di una qualsiasi classe antenato può essere applicata ad un istanza Studente IOL Ogni sotto-classe eredita le caratteristiche della super-classe Ogni istanza di una sotto-classe è (IS-A) un istanza della superclasse Politecnico di Milano - Prof. Sara Comai 3 Lo stesso principio si può applicare agli oggetti di un programma. La generalizzazione viene implementata definendo un nuovo tipo come estensione di un tipo preesistente. I linguaggi OO supportano la nozione di ereditarietà Politecnico di Milano - Prof. Sara Comai 4
2 Implementazione dell ereditarietà classe base classe derivata La classe Studente specializza la classe Persona aggiungendo ulteriori informazioni come ad es. il numero di matricola Politecnico di Milano - Prof. Sara Comai 5 Creazione e distruzione di oggetti derivati Il costruttore di una classe derivata viene invocato dopo il costruttore della classe base in questo modo si garantisce che le variabili ereditate siano disponibili all oggetto derivato La distruzione di una classe derivata procede in direzione opposta: si invoca prima il distruttore della classe derivata e successivamente il distruttore della classe base Politecnico di Milano - Prof. Sara Comai 6 Generalizzazione vs. aggregazione Ereditarietà multipla La generalizzazione si riferisce alle classi ed è un modo per strutturare la descrizione di un singolo oggetto la super-classe e la sotto-classe si riferiscono alle proprietà di uno stesso oggetto L aggregazione si riferisce alle istanze vengono coinvolti due oggetti in cui uno è parte dell altro Entrambe si possono rappresentare tramite un albero nell aggregazione l albero è costituito da istanze di oggetti che sono tutti parte di un oggetto composito relazione AND: un libro è costituito da una copertina e da un insieme di pagine nella generalizzazione l albero è composto da classi che descrivono un oggetto relazione OR: un libro può essere un libro di storia oppure di informatica Copertina Libro di storia Libro Libro Pagine Libro di informatica Politecnico di Milano - Prof. Sara Comai 7 L ereditarietà multipla consente ad una classe di avere più di una super-classe e di ereditare le caratteristiche di tutti i suoi antenati Consente di miscelare informazioni da due o più sorgenti In C++ si ottiene ponendo il simbolo : dopo la definizione di classe seguita dalla lista delle classi da cui deriva separate da, I costruttori sono chiamati nell ordine di ereditarietà specificato Politecnico di Milano - Prof. Sara Comai 8
3 Esempio di ereditarietà multipla class Lavoratore: char* qualifica; class StudenteLavoratore : public Studente, public Lavoratore { Overloading e overriding di operazioni Quando due funzioni caratterizzate da parametri di input diversi utilizzano lo stesso nome si parla di overloading Es. int square (int); double square (double); lo stesso nome viene sovraccaricato con significati differenti Una sotto-classe può effettuare un overriding (sovrascrittura) delle proprietà della super-classe definendo una proprietà con lo stesso nome e signature identiche [in C++] la proprietà della sotto-classe raffina e sostituisce la proprietà della super-classe Politecnico di Milano - Prof. Sara Comai 9 Politecnico di Milano - Prof. Sara Comai 10 Esempio di overriding void presentati(); sono <nome> <cognome> sono <nome> <cognome>, matricola void presentati(); numero <matricola> Politecnico di Milano - Prof. Sara Comai 11 Overriding in altri linguaggi Altri linguaggi di programmazione rilassano il vincolo di avere la stessa signature in caso di overriding, basandosi sulle seguenti regole di controllo di tipi: Regola di controvarianza I parametri di input della funzione che sovrascrive devono essere un supertipo dei parametri corrispondenti della funzione sovrascritta Regola di covarianza Il valore restituito dalla funzione che sovrascrive deve essere un sottotipo del valore restituito dalla funzione sovrascritta C++ e Java non seguono nessuna di queste regole: la funzione che sovrascrive e la funzione sovrascritta devono essere uguali Ada e Eiffel richiedono la covarianza sia sui parametri di input che sul valore restituito Emerald rispetta queste due regole Politecnico di Milano - Prof. Sara Comai 12
4 Ereditarietà e compatibilità Compatibilità di tipo: la classe discendente costituisce un tipo che può essere sempre usato al posto del tipo della classe antenato (uno Studente S è sempre una Persona) il viceversa non vale! (una Persona non può sempre essere utilizzata dove ci si aspetta uno Studente) il tipo derivato (Studente) si dice sottotipo (subtype) del tipo base (Persona) Ereditarietà e compatibilità in C++ void presentati(); Persona * pp = new Persona; Studente * ps = new Studente;. pp = ps; // OK: in C++ i puntatori sono // polimorfici (upcasting) ps = pp; // KO: C++ ha un sistema di tipi forte void presentati(); Persona p; Studente s;. p = s; // OK: coercizione s = p; // KO Politecnico di Milano - Prof. Sara Comai 13 Politecnico di Milano - Prof. Sara Comai 14 Informatica 3 Lezione 8 - Modulo 2 Problema Persona * pp = new Persona(, ); Studente * ps = new Studente( Paolo, Bianchi, );. pp = ps; // upcasting pp->presentati(); sono Paolo Bianchi??? Polimorfismo e classi astratte Il binding tra il tipo dell oggetto a cui si riferisce pp e la sua implementazione è stabilito a tempo di compilazione Per risolvere questo problema occorre sfruttare il concetto di late binding in C++ viene implementato tramite le funzioni virtuali Politecnico di Milano - Prof. Sara Comai 15 Politecnico di Milano - Prof. Sara Comai 16
5 Funzioni virtuali Late binding Funzione virtuale: si dichiara facendo precedere il suo prototipo dalla parola chiave virtual nella classe base una funzione dichiarata virtuale resta virtuale in tutta la gerarchia dell ereditarietà è buona norma dichiarare esplicitamente le funzioni virtuali ad ogni livello virtual void presentati(); virtual void presentati(); Politecnico di Milano - Prof. Sara Comai 17 Late binding: chiedere ad un oggetto lo svolgimento di un servizio, lasciando che il sistema scelga a tempo di esecuzione la versione del servizio più opportuna, in base al ruolo corrente dell'oggetto Persona * pp = new Persona(, ); Studente * ps = new Studente( Paolo, Bianchi, );. pp->presentati(); ps->presentati(); pp = ps; pp->presentati(); sono Paolo Bianchi, matricola numero sono sono Paolo Bianchi, matricola numero Politecnico di Milano - Prof. Sara Comai 18 Polimorfismo Controllo dei tipi Con il late binding il puntatore pp diventa polimorfico Polimorfismo: concetto generale di programmazione OO secondo il quale la stessa operazione può comportarsi in modo differente per oggetti di classi diverse appartenenti alla stessa gerarchia di ereditarietà In C++ il polimorfismo delle variabili viene limitato: una variabile di una classe T può riferirsi solamente ad oggetti di tipo T oppure ad oggetti appartenenti a classi derivate da T solamente puntatori, riferimenti a variabili e parametri passati per riferimento possono essere polimorfici Osservazione sul controllo dei tipi: la funzione virtuale viene definita nella classe base: è quindi disponibile in tutte le classi derivate, anche se queste non la ridefiniscono qualsiasi ridefinizione della funzione virtuale deve mantenere la stessa signature Anche se il compilatore non conosce a priori con quale funzione verrà effettuato il binding a tempo di esecuzione, può garantire che questa funzione esiste ed avrà la signature corretta Il C++ è fortemente tipizzato Politecnico di Milano - Prof. Sara Comai 19 Politecnico di Milano - Prof. Sara Comai 20
6 Classi astratte Una classe astratta è una classe che non può essere istanziata Da una classe astratta è possibile derivare classi concrete, cioè istanziabili tutte le foglie dell albero che rappresenta la relazione di ereditarietà devono essere classi concrete Le classi astratte organizzano caratteristiche comuni a diverse classi si utilizzano per rappresentare gli ADT (metodi a livello astratto) si derivano poi le classi concrete che implementano i metodi della classe astratta Politecnico di Milano - Prof. Sara Comai 21 Classi astratte in C++ In C++ una classe astratta contiene funzioni virtuali pure (che non hanno un implementazione) che saranno definite nelle classi derivate class Poligono { //classe astratta Punto * vertici; //lista di vertici virtual void disegna() = 0; // funzione virtuale pura virtual void ruota() = 0; // funzione virtuale pura Una classe è astratta se possiede almeno una funzione virtuale pura, locale o ereditata Una classe astratta può essere usata solo per dichiarare variabili polimorfiche Politecnico di Milano - Prof. Sara Comai 22 Classi astratte in C++ Informatica 3 class Triangolo: public Poligono { virtual void disegna(); //overriding virtual void ruota(); //overriding void disegnapoligono(poligono & p) { p.disegna(); void main () { Triangolo t; Rettangolo r; disegnapoligono (t); disegnapoligono (r); class Rettangolo: public Poligono { virtual void disegna(); //overriding virtual void ruota(); //overriding Variabile polimorfica p punta a t quando si invoca disegnapoligono (t) Viene chiamata disegna() definita in Triangolo p punta a r quando si invoca disegnapoligono (r) Viene chiamata disegna() definita in Rettangolo Politecnico di Milano - Prof. Sara Comai 23 Lezione 8 - Modulo 3 Visibilità delle proprietà di una classe Politecnico di Milano - Prof. Sara Comai 24
7 Controllo dell accesso alle caratteristiche ereditate La relazione di ereditarietà consente alla classe derivata di riusare caratteristiche della classe base servizi attributi La classe derivata diventa un cliente speciale della classe base: può vederne (se consentito) anche dettagli interni invisibili ai clienti esterni Che cosa può usare la classe derivata della classe base? Che cosa può vedere chi utilizza la classe derivata di ciò che questa eredita dalla classe base? Livelli di visibilità delle caratteristiche Il livello di visibilità delle caratteristiche di una classe indica chi può vedere tali caratteristiche Un servizio/attributo può essere: private: visibile soltanto ai servizi (o a funzioni friend) della stessa classe in cui è dichiarato protected: visibile soltanto ai servizi (o a funzioni friend) della stessa classe in cui è dichiarato e delle classi da essa derivate public: visibile a tutti (anche a clienti esterni) Se una funzione viene dichiarata come friend ha gli stessi diritti della classe stessa Politecnico di Milano - Prof. Sara Comai 25 Politecnico di Milano - Prof. Sara Comai 26 Visibilità erede-antenato Es. La visibilità erede-antenato dice a chi l'erede rende visibili le caratteristiche ereditate dall antenato Il rapporto tra erede e antenato può essere: public: le caratteristiche ereditate mantengono lo stato di visibilità che hanno nella classe base ad es., le caratteristiche private non sono visibili all'erede diretto, quelle protette non sono visibili ai clienti dell'erede diretto, ma solo ai discendenti protected: le caratteristiche ereditate pubbliche e protette sono rese visibili ai soli discendenti (non ai clienti). private: le caratteristiche ereditate pubbliche e protette sono visibili al solo erede diretto (nè ai discendenti, nè ai clienti). Politecnico di Milano - Prof. Sara Comai 27 class d1 : private base { class d3 : public d1 { void set-abc(){ a=1; // ko: base::a privato b=2; // ko: d1::base privato c=3; // ko: d1::base privato! Esempio class base { private: int a; public: int b,c; void main() { d1 X1; d2 X2; X1.b=2; // ko: privato X1.c=3; // ko: privato X2.b=2; // ko: protetto X2.c=3; // ko: protetto class d2: protected base { class d4 : public d2 { void set-abc(){ a=1; // ko: base::a privato b=2; // ok: d2::b // accessibile (protetto) c=3; // ok: d2::c //accessibile (protetto) Politecnico di Milano - Prof. Sara Comai 28
8 Informatica 3 Assegnamento e uguaglianza tra classi Il C++ per le classi definisce di default oltre a costruttore e distruttore anche gli operatori = e == Lezione 8 - Modulo 4 Assegnamento e uguaglianza Esempio: Auto * a; class Auto { stringa modello; stringa targa; p1 a1 Ferrari IOL003 Politecnico di Milano - Prof. Sara Comai 29 Politecnico di Milano - Prof. Sara Comai 30 Assegnamento e uguaglianza tra oggetti La presenza di riferimenti a oggetti esterni consente di interpretare uguaglianza e assegnamento tra oggetti in due modi: Interpretazione superficiale Assegnamento e uguaglianza vengono applicate campo per campo Assegnamento e uguaglianza tra oggetti La presenza di riferimenti a oggetti esterni consente di interpretare uguaglianza e assegnamento tra oggetti in due modi: Interpretazione superficiale Assegnamento e uguaglianza vengono applicate campo per campo Interpretazione profonda Assegnamento e uguaglianza vengono applicate considerando ricorsivamente gli oggetti collegati Persona p1, p2; p2=p1; //superf. p1 a1 Ferrari IOL003 p2 Persona p1, p3; p3=p1; //prof. p1 a1 Ferrari IOL003 p3 a3 Ferrari IOL003 I linguaggi di programmazione forniscono di default l'interpretazione superficiale Politecnico di Milano - Prof. Sara Comai 31 Politecnico di Milano - Prof. Sara Comai 32
9 Informatica 3 Lezione 8 - Modulo 5 Genericità in C++ Genericità Problema: esistono strutture dati che rappresentano contenitori di altri dati (ad es. array, liste, pile, alberi, ecc.) Es. array può contenere int, float, Persona, Studente,.. per evitare di implementare la stessa struttura dati per ogni tipo di dato occorre sviluppare dei meccanismi per rendere il codice generico e riusabile Soluzione classica nella programmazione OO: utilizzare ereditarietà + polimorfismo [Java, Smalltalk] tutti gli oggetti derivano da un oggetto base che rappresenta l antenato di tutti i possibili oggetti che possono essere utilizzati all interno di un programma Es. classe Object di Java o Smalltalk le strutture dati contenitore puntano a questi tipi di oggetti e attraverso il polimorfismo possono essere applicate ad oggetti di tipo diverso Problema: tutte le classi fanno parte di un unico albero di ereditarietà Politecnico di Milano - Prof. Sara Comai 33 Politecnico di Milano - Prof. Sara Comai 34 Genericità in C++ Sintassi dei template Il linguaggio C++ non forza ad utilizzare una gerarchia basata su un singolo oggetto, ma permette di risolvere il problema tramite i TEMPLATE I template rappresentano un modo alternativo all ereditarietà per riusare codice ereditarietà: riuso di codice oggetto template: riuso di codice sorgente In C++ i template implementano il concetto di tipo parametrizzato Quando si usa un template vengono specificati dei parametri generici, che verranno sostituiti dal compilatore con i tipi specificati nel programma La parola chiave template specifica che la definizione di classe che segue utilizzerà uno o più tipi non specificati I tipi dovranno essere specificati quando il codice deve essere effettivamente generato template<class T> class Array { T A[N]; public: //servizi array int main() { Array<int> ia; Array<float> fa; for (int i=0; i<n; i++){ ia[i]=i; fa[i]=(float)i; Il compilatore, all istanziazione del template in cui viene specificato il tipo del parametro, espande il template generando la classe con il tipo specificato (riuso di codice sorgente) Politecnico di Milano - Prof. Sara Comai 35 Politecnico di Milano - Prof. Sara Comai 36
Informatica 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
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
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
DettagliClassi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
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),
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,
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
DettagliEsempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
DettagliObject-Oriented Technology. Giuliano Armano 1
Object-Oriented Technology Giuliano Armano 1 Object Oriented Technology ADT + Eredità + Polimorfismo Object-Orientation Giuliano Armano 2 Terminologia Tipica Classica... Tipo di dato (astratto) = ADT Operazione
DettagliL ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà
L ereditarieta` Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino Riuso del software: Ereditarieta`, Composizione,
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
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.
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliRisoluzione dei metodi
Risoluzione dei metodi Static Binding La risoluzione dei metodi è il meccanismo che Java adopera per stabilire quale metodo viene invocato, considerando le classi a disposizione La risoluzione dei metodi
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. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliInformatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione
Informatica 3 Informatica 3 LEZIONE 1: Introduzione Lezione 1- Modulo 1 Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Introduzione al corso Politecnico di Milano - Prof. Sara Comai
DettagliInformatica 3. Informatica 3. LEZIONE 5: Tipi di dati. Lezione 5 - Modulo 1. Tipi predefiniti. Introduzione
Informatica 3 Informatica 3 LEZIONE 5: Tipi di dati Lezione 5 - Modulo 1 Modulo 1: Tipi e costruttori di tipo Modulo 2: Tipi definiti dall utente e tipi di dati astratti Modulo 3: Sistemi di tipi Tipi
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
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliEreditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando
DettagliCatia Trubiani. Laboratorio di Ingegneria del Software a.a
Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
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
DettagliGerarchia di classi Java 1
Costruttori della sottoclasse Gerarchia di classi Java Parte 2 Corso di laurea in Comunicazione digitale I costruttori non vengono ereditati, non essendo membri di classe Vengono definiti esplicitamente
DettagliRiassunto. La programmazione OO. Oggi. Esempio
Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 17 29 novembre
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
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
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
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
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
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliRETI DI CALCOLATORI Linguaggio Java: Ereditarietà
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Ereditarietà Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliEreditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
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
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
DettagliLezione 13 Classi interne
Lezione 13 Classi interne Questa lezione chiude la parte del corso più squisitamente dedicata alla programmazione orientata agli oggetti con Java. Sarà esaminato un nuovo tipo di classi, finora taciuto,
DettagliIntroduzione alla programmazione Object Oriented. Luca Lista
Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:
DettagliObject-Oriented Programming
Object-Oriented Programming Una metodologia di programmazione che consente di modellare la realtà in modo più naturale e vicino all uomo Concetti fondamentali Oggetto Incapsulazione Messaggio Classe Ereditarietà
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliPrincipi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2017-2018 Fondamenti di Java Ing. Obiettivi della lezione Introduzione alla programmazione Object Oriented Ereditarietà Polimorfismo Interfacce Eccezioni 2 1
DettagliIndice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3
Introduzione...vii Organizzazione del libro... viii Struttura del libro e convenzioni... ix Codice sorgente e progetti... x Compilare ed eseguire direttamente i listati e gli snippet di codice... x Compilare
DettagliCapitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125
Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia
DettagliInformatica 3. LEZIONE 5: Tipi di dati
Informatica 3 LEZIONE 5: Tipi di dati Modulo 1: Tipi e costruttori di tipo Modulo 2: Tipi definiti dall utente e tipi di dati astratti Modulo 3: Sistemi di tipi Informatica 3 Lezione 5 - Modulo 1 Tipi
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie 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
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo
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
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
DettagliClassi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura
Classi astratte Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Rettangolo getarea() Quadrato getarea() getarea() Cerchio
DettagliTipi di Dati Astratti
Tipi di Dati Astratti April 19, 2017 Dati e Tipi di Dato Tipo di dato: concetto di alto livello Macchina fisica: unico tipo di dato sequenze di bit Macchine Astratte: tipi di dato più complessi Tipo di
Dettaglie il loro uso: esistente e cambiare quel che va cambiato specializzare (per ereditarietà) la classe Counter public class EsempioNuovo {
APPROCCI PER IL RIUTILIZZO: ricopiare manualmente il codice della classe esistente e cambiare quel che va cambiato creare un oggetto composto che incapsuli il componente esistente... gli inoltri le operazioni
DettagliProprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
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:
DettagliFondamenti di Informatica T-1. Ereditarietà & Polimorfismo
Ereditarietà & Polimorfismo Ereditarietà Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un altra (classe base) La classe base modella un concetto generico La classe
DettagliInformatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
DettagliI Template in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di: Giancarlo Cherchi
I Template in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di: Giancarlo Cherchi Introduzione Cosa sono i Template? TEMPLATE? MODELLI Funzionalità non presenti nelle prime versioni del
DettagliProprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
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
DettagliBasi di dati a oggetti
Basi di dati a oggetti A L B E R T O B E L U S S I S I S T E M I I N F O M A T I V I G E O G R A F I C I E M U L T I M E D I A L I A N N O A C C A D E M I C O 2 0 1 1 / 1 2 Aree applicative emergenti Progettazione
DettagliRichiami su oggetti e OOP
Richiami su oggetti e OOP Un oggetto (object) è una entità caratterizzata da una struttura dati alla quale si associa l insieme delle operazioni che è possibile compiere su di essa. Un oggetto può essere
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
DettagliLa programmazione ad oggetti: chiamate di metodi. Overloading. This
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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 Corso
DettagliRICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica
Università degli Studi di Trieste Corso di Laurea Magistrale in INGEGNERIA CLINICA RICHIAMI DI PROGRAMMAZIONE A OGGETTI Corso di Informatica Medica Docente Sara Renata Francesca MARCEGLIA Dipartimento
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
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliEreditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO
DettagliProgrammazione orientata agli oggetti Subtyping e polimorfismo
Programmazione orientata agli oggetti Subtyping e polimorfismo Fondamenti di Informatica L-B 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile
DettagliFunzioni costruttore e istanza di un'oggetto
Funzioni costruttore e istanza di un'oggetto Solitamente si dice che un oggetto è un'istanza di una classe. In Javascript non esistono classi ma funzioni costruttore che sono abbastanza simili. Per instanziare
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:
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
DettagliInformatica I. Ingegneria Medica. Prof. Diego Salamon
Informatica I Ingegneria Medica Prof. Diego Salamon Java: Classi e Oggetti Prof. Diego Salamon Metafore Classi e Oggetti sono un astrazione della realtà. I linguaggi orientati agli oggetti contengono livelli
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti I Template a.a. 2008/2009 Claudio De Stefano 1 Programmazione generica E una tecnica di programmazione che permette di definire una classe di oggetti (o una funzione)
DettagliCorso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
di Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona su Sommario di su di di di su Astrazione sugli oggetti di su Il concetto di classe Classe: realizza l astrazione
DettagliClassi, Ereditarietà e Polimorfismo. Lezione 7
Classi, Ereditarietà e Polimorfismo Lezione 7 Scopo della Lezione Presentare il concetto di classe ed oggetto come istanza della classe; Affrontare il concetto di ereditarietà tra classi e le sue ricadute
DettagliLezione 1 - Relazioni tra classi
Lezione 1 - Relazioni tra classi Corso Programmazione Linguaggi di programmazione Relazioni tra oggetti Marco Anisetti e-mail: marco.anisetti@unimi.it web: http://homes.di.unimi.it/anisetti/ Università
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
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)
DettagliSul pattern Iterator
Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
DettagliProgrammazione orientata agli oggetti
Programmazione orientata agli oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che prevede di raggruppare in un unica entità (la classe)
DettagliEredità e Polimorfismo in Java
Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliProgrammazione Java: Polimorfismo
Programmazione Java: Polimorfismo romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Polimorfismo» Upcasting» Selezione dei metodi» Comportamento dei metodi polimorfi dentro i costruttori»
DettagliDerivazione 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
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
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 CONCETTO DI CLASSE
IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
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
Dettagli