Ereditarietà e Polimorfismo

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unit à B2 Gli oggetti: concetti avanzati.
Costruttori e Distruttori
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Corrado Cavalli Microsoft .NET MVP
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
Le gerarchie di tipi.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Funzioni definite dall’utente
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Derivazione tra classi
Overriding.
Oggetti e dati primitivi
Gerarchia di classi Java
Approfondimento delle classi
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Java base IV: Java e la programmazione O.O.
Le funzioni a tempo di esecuzione
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
Introduzione a C#.
Namespaces 1. Utilizzati per contenere tipi (classi, strutture, interfacce … ) ed altri namespaces La Class Library è organizzata gerarchicamente mediante.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Sintassi base e struttura di un programma
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Ereditarietà.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Programmazione a oggetti
CORSO DI PROGRAMMAZIONE II Lezione 22
Oggetti in C# Lezione 5 Polimorfismo I Andrea Zoccheddu.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Programmazione ad oggetti
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2015/16 Oltre le classi.
28/12/2001package 1 Package Pacchetti e interfacce.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Ereditarietà e Polimorfismo

Ereditarietà Una classe (classe derivata) può ereditare da un’altra classe (classe base) La classe derivata eredita dati e comportamento della classe padre ai quali può aggiungere altri dati e funzionalità La keyword base permette ad una classe derivata di fare riferimento alla classe base Il costruttore di una classe derivata tipicamente richiama un costruttore della classe base

Polimorfismo L’ereditarietà fa si che un oggetto possa appartenere a più di un tipo (la sua classe e la classe base) Conversione Type cast: se la conversione non può essere eseguita -> errore(eccezione) Operatore as: se la conversione non può essere eseguita il risultato è null Controllo Operatore is: permette di controllare se un oggetto appartiene ad un determinato tipo

Una classe derivata può ridefinire membri della classe base Una classe derivata può ridefinire completamente i membri che la classe base ha dichiarato virtuali (virtual) Metodi e proprietà possono essere virtuali (non i campi) La dichiarazione del metodo che ridefinisce un metodod virtuale va accompagnata dalla keyword override Un metodo virtuale ridefinito, viene chiamato a prescindere dat tipo della variabile su cui è invocato E’ possibile dichiarare una classe come abstract Classi astratte non possono essere istanziate (non si può crerae un oggetto di tali classi); sono tipicamente utilizzate per fornire funzionalità comuni a una serie di classi derivate Contengono tipicamente uno o più metodi abstract (metodi virtual senza implementazione)

Esempi:

Structs Strutture – simili alle classi ma con importanti differenze Value Type (class è un Reference Type) Non hanno ereditarietà Possono contenere metodi Possono avere costruttori (ma devono necessariamente avere dei parametri, non si può specificare un costruttore di default senza parametri) I campi non possono essere inizializzati al momento della dichiarazione (eccetto quelli static) Ideali per oggetti “leggeri” Sono allocate nello stack (a differenza degli oggetti che sono semprte allocati nello heap) Utilizzo più efficiente della memoria (non serve Garbage Collection) Int, float, double ... sono tutte struct

Structs e Classi cv sv cv cv1 sv sv1 cv1 sv1 10 20 10 20 5 20 10 20 10

Boxing ed Unboxing Sistema dei tipi unificato Tutti i tipi derivano implicitamente da object Con Boxing ed Unboxing si intende la possibilità di convertire un Value Type in un object (Reference Type) ed un object (Reference Type) in un Value Type Conversione Boxing: Value Type -> object Alloca un apposito oggetto della classe object e vi copia il valore dentro Conversione Unboxing: object -> Value Type Controlla il tipo del valore contenuto e, se possibile, copia il valore dall’oggetto nella variabile Value Type i 123 o int j 123 123

Passaggio dei Parametri In C# si possono passare i parametri per valore (modalità predefinita) – viene creata una copia della variabile passata dal chiamante per riferimento (parola chiave ref) – il chiamante passa un riferimento alla variabile Un caso particolare del passaggio per riferimento si ha utilizzando la parola chiave out invece di ref: in tal caso non è necessario che il parametro sia inizializzato prima della chiamata Bisogna prestare attenziona a non confondere la modalità di passaggio dei parametri (per valore o riferimento) con il tipo di variabile (Value Type o Reference Type) E’ possibile passare Value Types sia per valore che per riferimento e passare Reference Types sia per valore che per riferimento

Esempio: Value Types passati per valore v sv num n sv num 5 10 20 20 7 3 10 sv 20 num 7

Esempio: Value Types passati per riferimento sv v sv v num num n n sv 10 5 sv v sv v 20 20 num 7 num n n 3 5 sv 20 num 3

Esempio Reference Types passati per valore cv cv v v cv 10 20 5 20 1 1

Esempio Reference Types passati per riferimento cv cv v cv v cv 10 20 5 20 v cv v 1 1 cv 1 1

Interfacce Una interfaccia Contiene solo la dichiarazione (non l’implementazione) di metodi e proprietà Definisce struttura e semantica di specifiche funzionalità Un’interfaccia può ereditare da una o più interfacce (ereditarietà multipla) Una classe può ereditare da una sola classe base, ma può implementare una o più interfacce Convenzione: i nomi delle interfacce iniziano con “I” Esempio: