Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
|
|
- Paolina Giuliani
- 7 anni fa
- Visualizzazioni
Transcript
1 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013
2 Sommario Incapsulamento Polimorfismo Overloading Ereditarietà Overriding
3 Sommario Incapsulamento Polimorfismo Overloading Ereditarietà Overriding
4 Incapsulamento L incapsulamento è di fondamentale importanza per la programmazione ad oggetti, dato che consente ad una classe di acquisire le proprietà di robustezza, indipendenza e riusabilità. La filosofia alla base dell incapsulamento si fonda sul controllo dell accesso ai campi di una classe. Questo si implementa fornendo l accesso ai dati di una classe soltanto attraverso l interfaccia ossia l insieme dei metodi dichiarati usando il modificatore public, (questo modificatore li renderà invocabili dall esterno da oggetti appartenenti ad altre classi). Pertanto tutti i campi e metodi non appartenenti all interfaccia, dovranno essere dichiarati private, in modo da essere inaccessibili dall esterno, ma soltanto da oggetti appartenenti alla classe stessa. Questa regola,che blocca l accesso diretto a tutti gli attributi privati, rende la classe indipendente e riutilizzabile; inoltre, ciò comporta anche una maggiore robustezza del software.
5 Incapsulamento A livello tecnico, in Java, l incapsulamento è realizzabile rendendo le variabili di istanza private e creando dei metodi per l accesso in lettura o scrittura alle variabili stesse. Consideriamo l automobile come esempio reale di incapsulamento; i componenti interni (motore, freni, candele,..) non sono accessibili dall utente, il quale accede alle funzioni di questo oggetto attraverso un interfaccia esterna. Per definire delle variabili private, occorre introdurre il modificatore private;
6 Incapsulamento Esempio di implementazione di incapsulamento relativo la classe Automobile. public class Automobile { private String modello; public void setmodello(string modello) { this.modello = modello; public String getmodello() { return modello; Possiamo notare la variabile modello dichiarata come privata, non sarà quindi accessibili da classi esterne. L accesso alla variabile modello viene effettuato da due metodi, setmodello e getmodello che rispettivamente operano in scrittura e lettura della variabile.
7 Polimorfismo Per precisare il concetto di polimorfismo, definiamo firma di un metodo (o signature) l identificatore di un metodo e la lista dei suoi parametri (i modificatori ed il tipo di ritorno non ne fanno parte). Pertanto un metodo, in Java, è univocamente determinato dalla sua firma ( quindi non basta soltanto l identificatore, ma anche la lista dei suoi parametri) Il polimorfismo dei metodi, corrisponde alla utilizzazione dello stesso identificatore per definire metodi differenti di una stessa classe. Da ciò discende che, in una stessa classe, potranno coesistere più metodi con il medesimo identificatore, purché ognuno di essi abbia firma differente.
8 Polimorfismo In merito al polimorfismo, possiamo distinguere tra overload ed override dei metodi. Con overload si intende la possibilità di definire più metodi col medesimo nome, ma firma differente, in una stessa classe. Ciò è utile quando si desidera definire più metodi che possiedano la medesima funzionalità, ma con differente campo di applicazione (cioè con una diversa lista di parametri). Per quanto riguarda l override, invece, lo introdurremo dopo aver parlato dell ereditarietà.
9 Overloading L'overloading rappresenta una importante caratteristica di Java che consente ad una classe di avere più metodi con lo stesso nome ma con parametri differenti ovvero con una firma diversa. Overload significa «sovraccaricare» ovvero definire più versioni di un metodo, utilizzando lo stesso nome ma una firma diversa. Per firma di un metodo si intende il numero e/o il tipo di argomenti nella dichiarazione. Infatti sulla base degli argomenti passati in fase di chiamata verrà riconosciuta la firma e richiamato il metodo corretto.
10 Overloading:esempio Class Aritmetica public class Aritmetica { public int somma(int a, int b) {return a + b; public int somma(int a, int b, int c) {return a + b + c; public float somma(float a, int b) {return a + b; public float somma(float a, float b) {return a + b; Possiamo notare che i metodi hanno tutti l identificatore somma ma differiscono tra di loro per via della lista dei parametri, ogni metodo eseguirà operazioni diverse a seconda dei parametri passati dal chiamante. Sarà quindi corretta una sintassi del genere nel programma chiamante. A.somma(4, 9); B.somma(6, 7, 8); La selezione è effettuata in modo automatico in base alla firma del metodo public float somma(float a, int b)
11 Overloading:esempio errato Class Esempio public class Esempio {.. public int somma(int a, int b) {return a + b;. public float somma(int c, int d) {return c + d;
12 class Persona { Overloading:esempio Class Persona private String nome; private String cognome; public Persona(String nome,string cognome){ this.nome=nome; this.cognome=cognome; public String getnome(){ return nome; public String getcognome(){ return cognome; Per creare una persona senza nome e cognome è necessario passare esplicitamente la stringa vuota nel costruttore: Persona p = new Persona("", ""); In questo caso sarebbe preferibile poter istanziare la classe Persona senza passare alcun argomento al costruttore. Tale risultato può essere facilmente raggiunto con l'overloading del costruttore
13 Overloading:esempio Class Persona class Persona { private String nome; private String cognome; public Persona(String nome,string cognome){ this.nome=nome; this.cognome=cognome; public Persona(){ this.nome= ; this.cognome= ; public String getnome(){ return nome; public String getcognome(){ return cognome; Abbiamo creato un altro costruttore con lo stesso nome ma diversa firma. Quindi per creare una persona senza nome e cognome è sufficiente chiamare il costruttore senza parametri Persona p = new Persona();
14 Si dice che la Sottoclasse estende la Superclasse. Ereditarietà L'ereditarietà è un meccanismo fondamentale per il riutilizzo del codice nella programmazione a oggetti. Infatti grazie a questo meccanismo è possibile estendere e potenziare classi già esistenti. In Java si usa l ereditarietà quando occorre definire una classe i cui oggetti realizzano delle funzionalità aggiuntive (ovvero hanno una struttura più ricca di quella di una classe già definita) La classe più "generale" (quella preesistente) si dice Superclasse. La nuova classe più "specializzata" che eredita i campi e i metodi dalla classe preesistente viene detta Sottoclasse.
15 Ereditarietà La relazione di ereditarietà è rappresentata da un segmento terminante con una freccia (triangolare) diretta dalla Sottoclasse alla Superclasse
16 Esempio class Persona class Persona { private String nome; private String cognome; public Persona(String nome,string cognome){ this.nome=nome; this.cognome=cognome; public String getnome(){ return nome; public String getcognome(){ return cognome;
17 class Studente extends Persona { private int esami; private int matricola; public Studente( String nome, String cognome, int matricola ) { super (nome,cognome); this.matricola=matricola; public int getesami(){ return esami; public void setesami( int esami ){ this.esami=esami; public int getmatricola(){ return matricola; costruttore della classe genitrice
18 class Studente extends Persona { private int esami; private int matricola; public Studente( String nome, String cognome, int matricola ) { super (nome,cognome); this.matricola=matricola; public int getesami(){ return esami; public void setesami( int esami ){ this.esami=esami; public int getmatricola(){ return matricola; costruttore della classe genitrice L espressione super(...) invoca il costruttore della classe genitrore, quindi deve avere i parametri attuali corrispondenti in numero e tipo a quelli formali.
19
20 Relazioni tra classi:ereditarietà Generalizzazione & Specializzazione L ereditarietà è il meccanismo attraverso il quale una classe detta Figlio eredita le caratteristiche di una classe detta Padre Il significato della generalizzazione è che ogni istanza della sottoclasse è anche istanza della superclasse pertanto la classe figlio può essere interpretata anche come un tipo di padre. A è una generalizzazione di B B è una specializzazione di A. B aggiunge caratteristiche strutturali e comportamentali ad A B è di tipo A (is-a, is-a-kind-of) B ha i propri attributi e metodi + attributi e operazioni ereditati da A (con visibilità public,protected) B può ridefinire attributi e operazioni ereditati da A 16/01/
21 Relazioni tra classi:ereditarietà Generalizzazione & Specializzazione L ereditarietà è il meccanismo attraverso il quale una classe detta Figlio eredita le caratteristiche di una classe detta Padre Il significato della generalizzazione è che ogni istanza della sottoclasse è anche istanza della superclasse pertanto la classe figlio può essere interpretata anche come un tipo di padre. La relazione può essere letta come è un tipo di (verso di generalizzazione) può essere un (verso di specializzazione) 16/01/
22 Relazioni tra classi:ereditarietà Generalizzazione & Specializzazione L ereditarietà è il meccanismo attraverso il quale una classe detta Figlio eredita le caratteristiche di una classe detta Padre Il significato della generalizzazione è che ogni istanza della sottoclasse è anche istanza della superclasse pertanto la classe figlio può essere interpretata anche come un tipo di padre. Si dice che tra una sottoclasse e la sua superclasse esiste una relazione di tipo is-a 16/01/
23 Ereditarietà
24 I termini superclasse e sottoclasse derivano dalla teoria degli insiemi Gli oggetti Studenti (pur essendo più grandi di oggetti di tipo Persona, perché hanno variabilie metodi di istanza in più) costituiscono un sottoinsieme degli oggetti di tipo Persona (che rappresentano tutte le persone in generale) quindi sono una sottoclasse. Persone Superclassi e Sottoclassi Studenti
25 Relazione tra ereditarietà ed incapsulamento L incapsulamento rappresenta una tecnica per rendere robusto il programma mentre l ereditarietà è considerata come un ottimo strumento di sviluppo e semplificazione; Per utilizzare entrambi i paradigmi andranno però fatte alcune considerazioni. Ereditando una classe nella quale viene applicato l incapsulamento, i suoi campi privati sarebbero accessibili solo attraverso l utilizzo dei metodi set e get!. Per ovviare a questa limitazione esiste la possibilità di utilizzare il modificatore di accesso protected; una variabile dichiarata protected in una certa classe sarà accessibile da tutte le classi dello stesso package e da classi di package diversi che estenderanno la classe più generale.
26 Esempio class Persona class Persona { protected String nome; protected String cognome; public Persona(String nome,string cognome){ this.nome=nome; this.cognome=cognome; public String getnome(){ return nome; public String getcognome(){ return cognome; Nuovo tipo di modificatore di visibilità!
27 class Studente extends Persona { protected int esami; protected int matricola; public Studente( String nome, String cognome, int matricola ) { super (nome,cognome); this.matricola=matricola; public int getesami(){ return esami; public void setesami( int esami ){ this.esami=esami; public int getmatricola(){ return matricola; Richiama il metodo costruttore della classe genitrice Nuovo tipo di modificatore di visibilità!
28 Il modificatore di accesso protected: rende accessibile un campo a tutte le sottoclassi, presenti e future costituisce perciò un permesso di accesso valido per ogni possibile sottoclasse che possa essere definita.
29 Modificatori di accesso private disponibile solo dall ambito della stessa classe protected:disponibile nell ambito delle sottoclassi public: disponibile per qualsiasi altra classe default analogo a public (per package) disponibile per qualsiasi altra classe appartenente allo stesso package
30 La parola chiave super nella forma super(...), invoca un costruttore della classe base nella forma super.val, consente di accedere al campo val della classe base (sempre che esso non sia private) nella forma super.metodo(), consente di invocare il metodo metodo() della classe base (sempre che esso non sia private)
31 Pseudo-variabili Nei metodi è possibile utilizzare le pseudo-variabili this e super this fa riferimento all istanza stessa si usa per evitare ambiguità class Ciclista extends Persona { Bicicletta bici; { boolean dimmisetua(bicicletta bici) return this.bici = bici; super fa riferimento all istanza stessa come se appartenesse alla superclasse si usa per evitare ambiguità e per specializzare metodi class ContoCorrente { float saldo; void deposita(float somma) { saldo += somma; class ContoAziendale { RegistroCassa registro; void deposita(float somma) { super.deposita(somma); registro.annotaentrata(somma);
32 Polimorfismo In merito al polimorfismo dei metodi, possiamo distinguere i concetti di overload ed override. Con overload si intende la possibilità, consentita al programmatore, di definire, in una stessa classe, più metodi col medesimo nome, ma firma differente. Ciò è utile quando si desidera definire più metodi che possiedano la medesima funzionalità, ma con differente campo di applicazione (cioè con una diversa lista di parametri). Per quanto riguarda l override, invece, si intende la caratteristica delle classi derivate (ereditarietà) di poter ridefinire un metodo pubblico ereditato dalla superclasse.
33 Overriding L'overriding rappresenta una importante risorsa della programmazione ad oggetti, indica la caratteristica delle sottoclassi di poter ridefinire un metodo ereditato da una superclasse. Ovviamente non esisterà override senza ereditarietà.
34 Overriding:esempio class Impiegato public class Impiegato { proteced String nome; protected double stipendio; protected Date datanascita; public String getdettagli() { return "Nome: " + nome + "\n" + "Stipendio: " + stipendio;
35 Overriding:esempio class Impiegato public class Dirigente extends Impiegato { proteced String dipartimento; public String getdettagli() { return "Nome: " + nome + "\n" + "Stipendio: " + stipendio + "\n" + "Dirigente del Dipartimento: " + dipartimento; Quando viene istanziato un oggetto di classe Dirigente ed invocato il metodo getdettagli(), verrà automaticamente richiamato il metodo ridefinito (overridden) nella stessa classe Dirigente
36 Nell override è necessario rispettare le seguenti regole: Il metodo ridefinito nella sottoclasse deve possedere la medesima firma di quello da riscrivere (altrimenti si opererebbe un overload); e lo stesso tipo di ritorno; Lo stesso specificatore d accesso (comunque non può essere più restrittivo di quello dell originale).
37 Esercizio Realizzare i metodi della classe Polinomio1G P( x ) = a 1 x + a 0
38 Esercizio Arricchire il modello introducendo dei metodi per il calcolo della soluzione
39 Esercizio Utilizzando il principio di ereditarietà realizzare la classe Polinomio2G P( x ) = a 2 x 2 + a 1 x + a 0
40 Esercizio A partire dallo schema UML definire la classe Impiegato e per estensione le classi Tecnico Consulente e Commerciale. Verificare la correttezza del codice compilando ed eseguendo una classe di prova.
41 Esercizio Definire le classi Persona, Studente, Fuoricorso ampliando in modo opportuno lo schema UML riportato. Verificare la correttezza del codice compilando ed eseguendo una classe di prova.
42 Estendere la classe Punto per generare la classe Pixel che rappresenta le informazioni relative ad un pixel (punto) sullo schermo. La classe Pixel estensione della classe Punto (i valori x e y in questo caso rappresentano le coordinate del pixel sullo schermo) deve avere come ulteriore attributo il campo colore di tipo byte (per rappresare il colore del pixel). La classe deve inoltre fornire i seguenti metodi: Esercizio un costruttore che prenda in ingresso due parametri di tipo int (da assegnare alle coordinate x e y) ed un parametro di tipo byte da assegnare all'attributo colore. un metodo double distanzaorigine() che restituisca la distanza del punto dall'origine (si ricorda che la radice quadrata si ottiene con il comando Math.sqrt()). un metodo void scurisci(byte b) che aumenti della quantità b (si assuma che sia sempre positiva) il valore del colore del pixel. Si faccia attenzione al fatto che non si verifichi overflow durante la somma, limitando il valore ottenuto al valore massimo associabile ad un byte, un metodo void schiarisci(byte b) che diminuisca della quantità b (si assuma che sia sempre positiva) il valore del colore del pixel. Si faccia attenzione al fatto che non si verifichi underflow durante la somma, limitando il valore ottenuto al valore minimo (0) associabile ad un byte un metodo equals() in modo che restituisca true se l'argomento passato è un oggetto di tipo Pixel avente le stesse coordinate e lo stesso valore per il colore. il metodo tostring() in modo che restituisca una stringa con la rappresentazione del pixel nel formato (x, y, colore). La classe deve essere opportunamente incapsulata (cioè deve fornire anche i metodi get* ed set* per il Pixel- i metodi getcolore() e setcolore(byte col) ).
43 Cosa abbiamo imparato? Cosa vuol dire incapsulamento; Come si dichiara un variabile privata e come si ha accesso alla stessa tramite i metodi set e get; Cos è la firma di un metodo: l identificatore di un metodo e la lista dei suoi parametri; Cosa vuol dire polimorfismo e abbiamo distinto tra overloading e override di un metodo: overloading consente ad una classe di avere più metodi con lo stesso nome ma con parametri differenti;
44 overriding indica la caratteristica delle sottoclassi di poter ridefinire un metodo ereditato da una superclasse. Abbiamo affrontato il concetto di ereditarietà e abbiamo imparato la distinzione tra superclassi e sottoclassi; Quali sono i modificatori di accesso: private, public e protected; I vari utilizzi della parola chiave super: super(...), invoca un costruttore della classe base;
45 super.val, consente di accedere al campo val della classe base,sempre che esso non sia private; super.metodo(), consente di invocare il metodo metodo() della classe base, sempre che esso non sia private. L utilizzo della variabile this.
46 Questionario 1) Se si vuole accedere ai membri privati di una classe ereditata, alla quale è applicato l incapsulamento, cosa bisogna fare? Utilizzare i metodi set e get; Utilizzare il metodo get; Utilizzare i metodi set e get, oppure utilizzare il modificatore di accesso protected al posto di private; Utilizzare il metodo set. 2) A cosa serve il modificatore di accesso protected? A rendere accessibile un campo solo nell ambito della stessa classe; A rendere accessibile un campo da tutte le classi dello stesso package e di package differenti che estendano la classe più generale; A rendere disponibile un campo per qualsiasi altra classe; A rendere disponibile un campo per qualsiasi altra classe appartenente allo stesso package.
47 3) Qual è la differenza tra this e super? This fa riferimento all istanza stessa, mentre super fa riferimento all istanza della superclasse; This fa riferimento all istanza della superclasse, mentre super fa riferimento all istanza stessa; Nessuna, fanno entrambe riferimento all istanza della superclasse; Nessuna, si utilizzano entrambe per specializzare i metodi e per evitare ambiguità. 4) Qual è la differenza tra overload e override? L overload permette al programmatore di avere nella stessa classe più metodi con nome uguale ma firma differente, mentre l override è la caratteristica delle classi derivate di poter ridefinire un metodo privato ereditato dalla superclasse; L overload permette al programmatore di avere nella stessa classe più metodi con nome uguale ma firma differente, mentre l override è la caratteristica delle classi derivate di poter ridefinire un metodo pubblico ereditato dalla superclasse; L overload è la caratteristica delle classi derivate di poter ridefinire un metodo pubblico ereditato dalla superclasse, mentre l override permette al programmatore di avere nella stessa classe più metodi con nome uguale ma firma differente; L overload permette al programmatore di avere in più classi più metodi con nome uguale ma firma differente, mentre l override è la caratteristica delle classi derivate di poter ridefinire un metodo privato ereditato dalla superclasse
48 5) Di quale caratteristica della programmazione OO fa parte l override? Incapsulamento; Polimorfismo, anche se non ci può essere override se non c è ereditarietà; Ereditarietà, anche se non ci può essere override se non c è polimorfismo; Polimorfismo. 6)Nel metodo ridefinito nella sottoclasse, quali delle seguenti regole è errata per aver l override? Il metodo deve avere firma differente di quello della superclasse; Il metodo deve avere lo stesso tipo di ritorno della superclasse; Il metodo deve avere lo stesso specificatore di accesso di quello della superclasse; Il metodo deve avere lo stesso nome di quello della superclasse.
49 7)Analizzare i seguenti programmi: class Polizza_base{ protected String targaveicolo; protected long valoreassicurato; Polizza_base(String tv,long rc)throws EccTarga { if (tv.length()!=7) { throw new EccTarga(tv); targaveicolo=tv; valoreassicurato=rc; public void settargaveicolo(string tarvei) throws EccTarga { if (tarvei.length()!=7) { throw new EccTarga(tarvei);
50 targaveicolo=tarvei; public String gettargaveicolo() { return targaveicolo; public void setvaloreassicurato(long rc) { valoreassicurato=rc; public long getvaloreassicurato() { return valoreassicurato; public long premioannuale() { long pa=valoreassicurato/100; return pa;
51 class PolizzaIncendioFurto extends Polizza_base { private long incendio; private long furto; PolizzaIncendioFurto(String tv,long rc,long in,long fur) throws EccTarga { super(tv,rc); incendio=in; furto=fur; public void setincendio(long in) { incendio=in; public long getincendio() { return incendio;
52 public void setfurto(long ft) { furto=ft; public long getfurto() { return furto; public long premioannuale(long rc,long in,long fur) { long pa=(valoreassicurato+incendio+furto)/100; return pa; Quali delle caratteristiche della programmazione OO sono presenti? Ereditarietà e polimorfismo; Ereditarietà e incapsulamento; Ereditarietà, incapsulamento e polimorfismo; Ereditarietà.
53 8) Nei programmi della domandi 7 è presente l incapsulamento? Se si quali? Si,i metodi set e get della classe Polizza_base; Si,i metodi set e get delle due classi; Si,i metodi set e get della classe PolizzaIncendioFurto; No. 9)Nei programmi della domanda 7 sono presenti casi di overload? No; Si, i costruttori delle due classi; Si, il metodo premioannuale(); Si, i metodi set e get. 10) Nei programmi della domanda 7 è presente l ereditarietà? Se si, qual è la superclasse e qual è la sottoclasse? No, non c è ereditarietà ; Si, la superclasse è PolizzaIncendioFurto e la sottoclasse Polizza_base; Si, la superclasse è Polizza_base e la sottoclasse PolizzaIncendioFurto.
54 11) Se nel programma Polizza_base della domanda7 le variabili d istanza fossero state dichiarate pubblic, avremmo comunque potuto accedere ad esse nelle classe PolizzaIncendioFurto? No non avremmo potuto accedere ad esse in nessun caso; Si e sarebbero state disponibili anche per altre classi; Si, avremmo potuto accedervi tramite i metodi set e get; No e non avremmo potuto neanche estendere la superclasse. 12)Supponiamo che una classe Sportivo abbia le seguenti variabili: ciclista e corridore. Creiamo una classe atletica leggera che è ereditata da sportivo e vogliamo richiamare le due variabili. Quali tra le seguenti alternative permette di fare una giusta dichiarazione della sottoclasse e permette di richiamare le variabili? class Atletica leggera implements Sportivo; nel costruttore per richiamare le due variabili mettiamo super( ciclista, corridore); class Atletica leggera extends Sportivo; nel costruttore per richiamare le due variabili mettiamo super( ciclista, corridore); class AtleticaLeggera extends Sportivo; nel costruttore per richiamare le due variabili mettiamo super( ciclista, corridore); class Atletica leggera implements Sportivo; per richiamare le due variabili scriviamo dopo la dichiarazione della classe super( ciclista, corridore).
55 13) Supponiamo di avere nella classe studente il seguente metodo: public double MediaVoti(votofisica, votomatematica, votostoria, votoinformatica){ double media=(votofisica+votomatematica+votoinformatica+votostoria)/4; return media; Vogliamo sottoporre il metodo a overloading e overriding, quali delle seguenti alternative è esatta? Per l overloading nella stessa classe studente avremmo: public double MediaVoti(votoinglese, votogeografia){ double media=( votoinglese, votogeografia)/2; return media; L overriding invece di questo metodo non è possibile. Per l overriding nella stessa classe studente avremmo: public double MediaVoti(votoinglese, votogeografia){ double media=( votoinglese, votogeografia)/2; return media; Per l overloading in una ipotetica sottoclasse di studente la firma sarà la stessa: MediaVoti(votofisica, votomatematica, votostoria, votoinformatica). Sia per l overloading che per l overriding la firma sarà la stessa: MediaVoti(votofisica, votomatematica, votostoria, votoinformatica).
56 Per l overloading nella stessa classe studente avremmo: public double MediaVoti(votoinglese, votogeografia){ double media=( votoinglese, votogeografia)/2; return media; Per l overriding in una ipotetica sottoclasse di studente la firma sarà la stessa: MediaVoti(votofisica, votomatematica, votostoria, votoinformatica). 14) Quando analizziamo una classe, da cosa capiamo subito se la classe è stata è ereditata da un altra? Se i suoi metodi presentano una delle caratteristiche di overloading o overriding; Se dopo il nome della classe c è la parola chiave extends e il nome di un altra classe; Se nel costruttore è presente la parola chiave super e nel parantesi un elenco di parametri; Se dopo il nome della classe c è la parola chiave implements e il nome di un altra classe.
57 15) Analizzare i due metodi seguenti: public int somma(int a, int b) { return a+b; public int somma(int a, int b, int c) { return a+b+c; quale proprietà della programmazione OO viene applicata? Overloading ; Overriding; Polimorfismo; Incapsulamento 16) Dati il seguente frammento di codice: class X{ private int z; il seguente frammento di codice è corretto? class Y{ public static void main( String args[]){ X obj = new X(); obj.z=10; No, un membro private non può essere utilizzato all esterno della sua classe; Si; No, la dichiarazione obj.z=10; No, la dichiarazione di un membro deve succedere uno specificatore di accesso.
58 17) Come viene definito il nome di un metodo più il suo elenco di parametri? metodo static; overload; Firma del metodo; overriding. 18) Una sottoclasse esegue il costruttore della sua superclasse? Si, tramite la parola chiave super; Si, tramite la parola chiave extends; Si, tramite la parola chiave implements; No. 19) Super() può trovarsi ovunque all interno del costruttore di una sottoclasse? Si; No, deve essere la prima istruzione eseguita; No, deve essere l ultima istruzione eseguita; Deve essere dichiarato nella firma del costruttore.
59 20)Come si indica che la classe Notebook è una sottoclasse della classe computer? E se vogliamo richiamare in Notebook le variabili tastiera e mouse cosa dobbiamo fare? Per la dichiarazione della classe: class Notebook implements Computer; nel costruttore per richiamare le due variabili mettiamo super( tastiera, mouse); Per la dichiarazione della classe: class Computer extends Notebook; nel costruttore per richiamare le due variabili mettiamo super(tastiera, mouse); Per la dichiarazione della classe : class Notebook extends computer; nel costruttore per richiamare le due variabili mettiamo super(tastiera, mouse); Per la dichiarazione della classe : class Notebook extends computer; per richiamare le due variabili scriviamo dopo la dichiarazione della classe super(tastiera, mouse).
60 21) Analizzare i due metodi seguenti: class A { public void saluta(string message) { System.out.println(message); class B extends A{ public void saluta(string message) { System.out.println("Il metodo nuovo ti saluta con questo messaggio: "message); quale proprietà della programmazione OO viene applicata? Overloading ; Overriding; Polimorfismo; Incapsulamento.
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
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 Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
DettagliParadigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1
Incapsulamento Paradigmi della PO Ereditarietà Polimorfismo Software per TLC - AA 2008/2009 1 Incapsulamento Una classe contiene dati e metodi Filosofia Ai dati si accede solo attraverso i metodi I metodi
DettagliProgrammazione in Java (I modulo) Lezione 20: Ereditarietà
Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi
DettagliInformatica Ereditarietà Java. Ereditarietà
Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,
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
DettagliPrincipi di Progettazione del Software. Principi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2016-2017 Fondamenti di Java Ing. Principi di Progettazione del Software https://twitter.com/rvergallo 2 1 Obiettivi della lezione Introduzione alla programmazione
DettagliConcetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
DettagliProgrammazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
DettagliIL TEMA DELLA RIUSABILITÀ
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice già funzionante e corretto il cui sviluppo ha richiesto
DettagliGerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
DettagliEreditarietà: concetti di base
: concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una
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
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
DettagliINFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
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
DettagliGerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
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),
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliProgrammazione 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.
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
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ereditarietà e Polimorfismo: Polimorfismo - d Regole Sintattiche e Semantiche versione 1.2 Questo lavoro è concesso in uso secondo i termini di
DettagliConcetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object
Ereditarietà Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso protected e package La classe Object metodi tostring,
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
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
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
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
Dettagliereditarietà e polimorfismo
ereditarietà e polimorfismo Java ereditarietà o l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza o la nuova classe viene definita esprimendo solamente le differenze
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
DettagliPRINCIPI DELLA OOP. Ereditarietà e polimorfismo
PRINCIPI DELLA OOP Ereditarietà e polimorfismo Ereditarietà e specializzazione Una delle caratteristiche distintive del paradigma di programmazione orientato agli oggetti è l'ereditarietà L'ereditarietà
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Sommario 2 2» Struttura
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Programmazione O.O. Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Variabili locali Esercizi Implica: Programmazione
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti
DettagliEreditarietà. Una classe, detta superclasse, può essere specializzata definendo una sottoclasse che ne contenga casi particolari.
Ereditarietà Per definire stato e comportamento di nuovi oggetti, è utile avere una base da cui partire In particolare, un nuovo oggetto potrebbe essere un caso particolare di una tipologia di oggetti
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
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/
Dettagli17 - Classi parzialmente definite: Classi Astratte e Interfacce
17 - 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
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo 1 Esempio 1: Costruttori ed ereditarietà Costruttori ed ereditarietà 2 Introduzione Java prevede due automatismi legati
DettagliProgrammazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo
Programmazione orientata agli oggetti Subtyping e polimorfismo 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti
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 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
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
DettagliLaboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.
Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare
DettagliSYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il...
Anno scolastico: 2014 2015 Classe: 4 Sez.: G Disciplina: INFORMATICA Articolazione: Informatica Docente: prof. Mauro Malatesta (firma) Approvata dal Dipartimento di il Approvata dal Consiglio di classe
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
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...
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
DettagliRIUSABILITÀ L OBIETTIVO
RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice già funzionante e corretto il cui sviluppo ha richiesto tempo (anni-uomo)
DettagliRiuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili
Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne
DettagliOggetti e dati primitivi 1
I membri delle classi Oggetti e dati primitivi Corso di laurea in Le classi contengono 2 tipi di membri, definiti per l intera classe o per le singole istanze Le variabili o i campi, che rappresentano
DettagliEreditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliIntroduzione a Java. Giovanni Pardini. Dipartimento di Informatica Università di Pisa. 2 Java. Sommario. Esercizio: BankAccount
Introduzione a Java 2 Giovanni Pardini pardinig@di.unipi.it Dipartimento di Informatica Università di Pisa 6 dicembre 2009 1 2 3 4 5 1 Classi e variabili statiche 2 3 Classi e variabili statiche 4 5 Vogliamo
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra
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
DettagliLinguaggi di Programmazione I Lezione 11
Linguaggi di Programmazione I Lezione 11 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 13 maggio 2008 Ereditarietà 3 Specializzazione (1).......................................................
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
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra
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
DettagliE7 Esercizi sul Capitolo 7 Realizzazione di Classi
E7 Esercizi sul Capitolo 7 Realizzazione di Classi Esercizio 1 (esercizio 7.1 del libro di testo). Nella classe Studente definita di seguito indicare le variabili d istanza, le variabili di classe e le
DettagliFondamenti di Informatica T-1. Costruttori Ereditarietà
Costruttori Ereditarietà 2 Costruttori Si occupano della creazione e dell'allocazione in memoria degli oggetti. public class Persona{ //Variabili di istanza private String nome; private String cognome;
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
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra
DettagliLaboratorio di Sistemi Ereditarietà Java
L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi definiti
DettagliProgrammazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati
Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può
DettagliEreditarietà. Ivan Lanese e Cosimo Laneve
Ereditarietà Ivan Lanese e Cosimo Laneve Argomenti Ereditarietà Sottotipaggio Costruttori Ereditarietà Spesso non vogliamo definire una classe a partire dal nulla, ma vogliamo definirla a partire da un
DettagliFondamenti di Informatica
Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi
DettagliProgrammazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo
Programmazione orientata agli oggetti Subtyping e polimorfismo 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti
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
DettagliSOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as.
SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as. Confronto tra oggetti: Equals(). IComparable. IComparer. TIPI DI DATI ASTRATTI
DettagliOggetti e classi. Cos è un oggetto
Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,
DettagliE18 Esercizi su ereditarietà e polimorfismo
E18 Esercizi su ereditarietà e polimorfismo Esercizio 1 (esercizio 10.1 del libro di testo). Si scriva una classe Persona dotata dei campi CodiceFiscale, Nome, Cognome e dei metodi per impostare e leggere
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
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
Dettagli17 - Ereditarietà, tipi e gerarchie
17 - 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
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:
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,
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 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
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
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
DettagliInterfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
DettagliProgrammazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo
Programmazione orientata agli oggetti Subtyping e polimorfismo 1 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti
DettagliIntroduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0
Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate
DettagliBank account. private double balance; 11/2/2011
Il Linguaggio Java Ereditarietà Bank account class BankAccount { public BankAccount() { balance = 0; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { balance
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
DettagliInizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
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
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
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
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
Dettagli