Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)
|
|
- Antonella Nicolosi
- 6 anni fa
- Visualizzazioni
Transcript
1 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++
2 Informatica 3 Lezione 8 - Modulo 1 Ereditarietà
3 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 Studente IOL Ogni sotto-classe eredita le caratteristiche della super-classe Ogni istanza di una sotto-classe è (IS-A) un istanza della superclasse
4 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 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à
5 Implementazione dell ereditarietà class Persona { //attributi stringa nome; stringa cognome; public: //servizi... } classe base class Studente: public Persona { //attributi int matricola; public: //servizi... } classe derivata La classe Studente specializza la classe Persona aggiungendo ulteriori informazioni come ad es. il numero di matricola
6 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
7 Generalizzazione vs. aggregazione 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
8 Ereditarietà multipla 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
9 Esempio di ereditarietà multipla class Studente: public Persona { //attributi int matricola; public: //servizi }; class Lavoratore: public Persona { //attributi char* qualifica; public: //servizi }; class StudenteLavoratore : public Studente, public Lavoratore {... };
10 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
11 Esempio di overriding class Persona { //attributi stringa nome; stringa cognome; public: //servizi void presentati(); } Buongiorno, sono <nome> <cognome> class Studente: public Persona { //attributi int matricola; public: //servizi void presentati(); } Buongiorno, sono <nome> <cognome>, matricola numero <matricola>
12 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
13 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)
14 Ereditarietà e compatibilità in C++ class Persona { //attributi stringa nome; stringa cognome; public: //servizi void presentati(); } class Studente: public Persona { //attributi int matricola; public: //servizi 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 Persona p; Studente s;... p = s; // OK: coercizione s = p; // KO
15 Informatica 3 Lezione 8 - Modulo 2 Polimorfismo e classi astratte
16 Problema Persona * pp = new Persona( Mario, Rossi ); Studente * ps = new Studente( Paolo, Bianchi, );... pp = ps; // upcasting pp->presentati();??? Buongiorno, sono Paolo Bianchi 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
17 Funzioni virtuali 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 class Persona { //attributi stringa nome; stringa cognome; public: //servizi virtual void presentati(); } class Studente: public Persona { //attributi int matricola; public: //servizi virtual void presentati(); }
18 Late binding 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( Mario, Rossi ); Studente * ps = new Studente( Paolo, Bianchi, );... pp->presentati(); ps->presentati(); pp = ps; pp->presentati(); Buongiorno, sono Paolo Bianchi, matricola numero Buongiorno, sono Mario Rossi Buongiorno, sono Paolo Bianchi, matricola numero
19 Polimorfismo 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
20 Controllo dei tipi 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
21 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
22 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 //attributi Punto * vertici; //lista di vertici... public: //servizi 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
23 Classi astratte in C++ class Triangolo: public Poligono { //attributi... public: //servizi virtual void disegna(); //overriding virtual void ruota(); //overriding... }; class Rettangolo: public Poligono { //attributi... public: //servizi virtual void disegna(); //overriding virtual void ruota(); //overriding... }; void disegnapoligono(poligono & p) { p.disegna(); } void main () { Triangolo t; Variabile polimorfica Rettangolo r; p punta a t quando si invoca disegnapoligono (t) Viene chiamata disegna() definita in Triangolo disegnapoligono (t); p punta a r quando si invoca disegnapoligono (r) disegnapoligono (r); Viene chiamata disegna() definita in Rettangolo }
24 Informatica 3 Lezione 8 - Modulo 3 Visibilità delle proprietà di una classe
25 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?
26 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
27 Visibilità erede-antenato Es. class Studente: public Persona { }; 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).
28 Esempio class d1 : private base { }; class base { private: int a; public: int b,c; }; class d2: protected 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! }; 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 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) }; };
29 Informatica 3 Lezione 8 - Modulo 4 Assegnamento e uguaglianza
30 Assegnamento e uguaglianza tra classi Il C++ per le classi definisce di default oltre a costruttore e distruttore anche gli operatori = e == Esempio: class Persona { //attributi stringa nome; stringa cognome; Auto * a; public: //servizi }; class Auto { //attributi stringa modello; stringa targa; public: //servizi }; p1 Mario Rossi a1 Ferrari IOL003
31 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 ersona p1, p2; 2=p1; //superf. p1 Mario Rossi a1 Ferrari IOL003 Mario Rossi p2
32 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 ersona p1, p3; 3=p1; //prof. p1 Mario Rossi a1 Ferrari IOL003 p3 Mario Rossi a3 Ferrari IOL003 I linguaggi di programmazione forniscono di default l'interpretazione superficiale
33 Informatica 3 Lezione 8 - Modulo 5 Genericità in C++
34 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à
35 Genericità in C++ 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
36 Sintassi dei template 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)
Informatica 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
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 -
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
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,
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.
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
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
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
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
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
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/
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
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
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
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
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
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,
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
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:
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
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
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
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
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
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
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:
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
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à
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 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
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
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
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
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
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
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
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
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. 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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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...
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:
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)
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à
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
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 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
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
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»
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
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
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
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
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
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Dettagli