La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ereditarietà e Polimorfismo 1. Ereditarietà Una classe (classe derivata) può ereditare da unaltra classe (classe base) La classe derivata eredita dati.

Presentazioni simili


Presentazione sul tema: "Ereditarietà e Polimorfismo 1. Ereditarietà Una classe (classe derivata) può ereditare da unaltra classe (classe base) La classe derivata eredita dati."— Transcript della presentazione:

1 Ereditarietà e Polimorfismo 1

2 Ereditarietà Una classe (classe derivata) può ereditare da unaltra 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 2

3 Polimorfismo Lereditarietà 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 3

4 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) 4

5 Esempi: 5

6 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 6

7 7

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

9 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 dalloggetto nella variabile Value Type i o j int 123

10 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 10

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

12 Esempio: – Value Types passati per riferimento sv 20 7 num 5 sv 20 3 num 5 v 20 3 n svv nnum

13 Esempio – Reference Types passati per valore 13 cv cv 5 20 v 1 1 cv 5 20 v

14 Esempio – Reference Types passati per riferimento 14 cv cv 5 20 v 1 1 cv 1 1 v

15 Interfacce Una interfaccia – Contiene solo la dichiarazione (non limplementazione) di metodi e proprietà – Definisce struttura e semantica di specifiche funzionalità – Uninterfaccia 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: 15


Scaricare ppt "Ereditarietà e Polimorfismo 1. Ereditarietà Una classe (classe derivata) può ereditare da unaltra classe (classe base) La classe derivata eredita dati."

Presentazioni simili


Annunci Google