Concetti di OOP OOP = Object Oriented Programming OOPS = Object Oriented Mistakes

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Concetti di OOP OOP = Object Oriented Programming OOPS = Object Oriented Mistakes"

Transcript

1 Concetti di OOP OOP = Object Oriented Programming OOPS = Object Oriented Mistakes Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it

2 2 Introduzione: Concetti OOP Oggetti e Classi classi e istanziazione Information Hiding accesso public e private Ereditarietà estendere le classi: gerarchia ereditarietà multipla: le interfacce accesso protected Polimorfismo late-binding già incontrati

3 3 Ereditarietà Possibilità di definire nuove classi utilizzando come punto di partenza classi pre-esistenti L'ereditarietà organizza astrazioni di oggetti dai più generici ai più specifici L'ereditarietà stabilisce una relazione Esempi: "è è un" Una mountain bike è un tipo di bicicletta Un'utilitaria è un tipo di automobile Un'automobile è un tipo di veicolo Un portatile è un tipo di computer

4 Gerarchia degli Strumenti 4 Musicali Strumenti Musicali Idiofoni Membranofoni Aerofoni Ad Ancia Clarinetto Sassofono Fagotto Cordofoni Elettrofoni A Canna A Bocchino

5 Gerarchia Strumenti Musicali La gerarchia aiuta a comprendere le relazioni e le somiglianze tra gli strumenti musicali Un clarinetto è un tipo di strumento a fiato Gli strumenti a fiato sono un tipo di aerofono NB: La relazione è un è transitiva Un clarinetto è un tipo di strumento a fiato Uno strumento a fiato è un tipo di aerofono Un clarinetto è un tipo di aerofono 5

6 6 Estensione: Terminologia Estensione (o derivazione) ) di classi definizione di una classe a partire da un altra classe mediante l aggiunta e/o la specializzazione di caratteristiche (attributi e/o comportamenti) classe base detta anche super-classe classe estesa detta anche derivata ovvero sotto-classe Clarinetto Strumento ad ancia Aerofono Strumento musicale

7 7 Estensione In Java si utilizza la parola chiave extends nell intestazione della classe derivata NB: non è constentito estendere più di una classe public class Clarinetto extends StrumentoAdAncia {... Un oggetto di una sottoclasse, quindi, ha più tipi: per dichiarazione, è del tipo della sottoclasse è un oggetto specializzato del tipo della superclasse Clarinetto cl1 = new Clarinetto();

8 8 1. class Persona { 2. private String nome; 3. private String cognome; 4. Classe Persona 5. public Persona(String nome, String cognome) { 6. this.nome = nome; this.cognome = cognome; public String getnome() { return nome; public String getcognome() { return cognome; public String tostring() { 14. return getnome() + + getcognome() + "."; // classe Persona

9 9 Classe Studente 1. class Studente extends Persona { 2. private int matricola; public Studente(String n, String c, int m) { 5. super(n, c); this.matricola = m; public String getmatricola() { return matricola; 10. public String tostring() { 11. return getnome() + "" + getcognome() + ", matr. " + matricola + "."; // classe Studente

10 Uso di Classi Derivate Persona p1; 2. Studente s3; p1 = new Persona("Guglielmo", "Cancelli"); 5. System.out.println(p1.getNome()); 6. // Guglielmo 7. System.out.println(p1.toString()); 8. // Guglielmo Cancelli s3 = new Studente("Marisa", "Monte", ); 11. System.out.println(s3.getCognome()); 12. // Monte 13. System.out.println(s3.getMatricola()); 14. // System.out.println(s3.toString()); 16. // Marisa Monte, matr

11 11 Classi Persona e Studente Persona nome : String cognome : String Persona(String n, String c) String getnome() String getcognome() String tostring() p1 : Persona nome = "Guglielmo" cognome = "Cancelli" String getnome() String getcognome() String tostring() estende Studente matricola : int Studente(String n, String c, int m) String getmatricola() String tostring() s3 : Studente nome = "Marisa" cognome = "Monte" matricola = "123456" String getnome() String getcognome() String getmatricola() String tostring()

12 Ereditarietà: Costruttori 12 Quando viene costruito un nuovo oggetto sottoclasse, viene sempre chiamato il costruttore per la superclasse L'invocazione del costruttore della superclasse può essere: implicita chiamato del costruttore di default della classe base esplicita chiamata di super() all'inizio del costruttore della classe derivata

13 Ereditarietà: Costruttori 13 public class B { public B() { System.out.println("B1"); public B(int i) { System.out.println("B2"); // classe B public class C extends B { public C() { System.out.println("C1"); System.out.println(); // segue... //... public C(int a) { System.out.println("C1"); System.out.println(); public C(int a, int b) { super(a + b); System.out.println("C2"); System.out.println(); B1 C1 public static void main (String[] args) { C o1 = new C(); C o2 = new C(2); C o3 = new C(2,4); // classe C B1 C2 B2 C2

14 Accesso protected Nella definizione di gerarchie di classi, l uso dei soli modificatori public e private è troppo restrittivo viene di solito usato il modificatore protected livello di restrizione dell accesso intermedio tra public e private 14

15 Accesso package 15 Un'istruzione package indica che le definizioni successive fanno parte di una collezione più vasta, detta pacchetto Classi (ed interfacce) vanno messe in un pacchetto per motivi organizzativi (modularità) per motivi di accesso Per evitare conflitti sui nomi, Java inserisce le classi di un pacchetto in uno spazio di nomi (name( space) ) separato e distinto (per ogni pacchetto). Specifica predefinita: ai membri di una classe senza specifica di accesso possono accedere solo i membri del pacchetto due classi dello stesso pacchetto hanno implicitamente accesso public e protected

16 Diritti di Accesso 16 restrizione per i membri this sottoclasse pacchetto generale public protected default private

17 package demo; public class P { private int data; public P() { setdata(0); Controllo dell'accesso Esempio 1 public int getdata() { return data; protected void setdata (int v) { data = v; void print() { System.out.println(); 17 // class P

18 import demo.p; public class Q extends P { public Q() { super(); public Q(int v) { setdata(v); Controllo dell'accesso Esempio 2 18 public String tostring(){ int v = getdata(); return String.valueOf(v); public void invalid1() { data = 12; public void invalid2() { print(); // class Q

19 package demo; public class R { private P p; public R() { p = new P(); Controllo dell'accesso public void set(int v) { p.setdata(v); //R Esempio 3 public int get() { return p.getdata(); public void use() { p.print(); public void invalid() { p.data = 12; 19

20 import demo.p; public class S { private P p; public S() { p = new P(); Controllo dell'accesso Esempio 4 public void illegal1 (int v) { p.setdata(v); public void illegal2 () { p.data = 12; 20 public int get() { return p.getdata(); public void illegal3 () { p.print(); // S

21 Attributi ed Ereditarietà 21 Un attributo/metodo di una superclasse può essere nascosto dalla definizione nella sottoclasse di un attributo/metodo con lo stesso nome

22 Attributi ed Ereditarietà 22 public class D { protected int d; public D() { d = 0; public D(int v) { d = v; public void printd() { System.out.println("in D, d = " + d); System.out.println();

23 Attributi ed Ereditarietà 23 public class F extends D { int d; public F(int v) { d = v; super.d = v*100; La classe F estende D e introduce una nuova variabile istanza d. La definizione di d in F nasconde la definizione eseguita da D public void printf() { System.out.println("in D, d = " + super.d); System.out.println("in F, d = " + this.d); System.out.println();

24 Operatore instanceof Persona p; 2. Studente s; 4. p = new Persona("Antonio", "Stornaiolo"); 5. s = new Studente("Emilio", "Solfrizzi", ); 7. System.out.println(p instanceof Persona); 8. // true 9. System.out.println(p instanceof Studente); 10. // false 11. System.out.println(s instanceof Persona); 12. // true 13. System.out.println(s instanceof Studente); 14. // true

25 Ereditarietà e Tipi 25 public class X { public X() { // corpo non necessario public static boolean isx(object v) { return (v instanceof X); public static boolean isobj(x v) { return (v instanceof Object); // X public class Y extends X { public Y() { // corpo non necessario public static boolean isy (Object v) { return (v instanceof Y); // continua...

26 Ereditarietà e Tipi 26 public static void main(string[] args) { X x = new X(); Y y = new Y(); X z = y; System.out.println("x is an Object: " + X.isObj(x)); System.out.println("x is an X: " + X.isX (x)); System.out.println("x is a Y: " + Y.isY(x)); System.out.println("y is an Object: " + X.isObj(y)); System.out.println("y is an X: " + X.isX (y)); System.out.println("y is a Y: " + Y.isY(y)); System.out.println("z is an Object: " + X.isObj(z)); System.out.println("z is an X: " + X.isX (z)); System.out.println("z is a Y: " + Y.isY(z));

27 Ereditarietà e Tipi 27 Output del programma: x is an Object: true x is an X: true x is a Y: false y is an Object: true y is an X: true y is a Y: true z is an Object: true z is an X: true z is a Y: true

28 Finalizzazione di Classi 28 Una classe final è una classe che non può essere estesa Gli sviluppatori potrebbero voler impedire agli utenti di estendere certe classi Rende più difficile l'intromissione mediante sovrascrittura (overriding) final public class U { // U(): costruttore predefinito public U() { // f(): facilitatore public void f() { System.out.println("f() non può essere sovrascritto: U e' finale");

29 Finalizzazione di Metodi 29 Un metodo final è un metodo che non può essere sovrascritto public class V { public V() { final public void f() { System.out.println("il metodo finale f () non può essere sovrascritto");

30 Ereditarietà e Polimorfismo Polimorfismo letteralmente: da molte forme un oggetto di una classe viene considerato secondo varie sfaccettature p. di tipo statico e p. di tipo dinamico (late( binding) in pratica è possibile assegnare il riferimento a un oggetto della classe estesa a una variabile il cui tipo è la classe base 30

31 Polimorfismo 31 Un'espressione di codice può invocare metodi diversi a seconda dei tipi di oggetti manipolati Esempio: overloading della funzione come il metodo min() di java.lang.math Il metodo invocato dipende dai tipi di argomenti effettivi int a, b, c; double x, y, z; c = min(a, b); z = min(x, y); // invoca min() su interi // invoca min() su double

32 Due tipi di polimorfismo Polimorfismo Polimorfismo sintattico: : determinare quale metodo invocare in fase di compilazione Efficiente Facile da comprendere e analizzare Detto anche polimorfismo primitivo Polimorfismo puro: : il metodo da invocare può essere determinato solo in fase di esecuzione 32

33 PolymorphismDemo 33 // Esempio di polimorfismo puro public class PolymorphismDemo { public static void main(string[] args) { Point[] p = new Point[4]; p[0] = new Colored3DPoint(4, 4, 4, Color.BLACK); p[1] = new ThreeDimensionalPoint(2, 2, 2); p[2] = new ColoredPoint(3, 3, Color.RED); p[3] = new Point(4, 4); for (int i = 0; i < p.length; ++i) { String s = p[i].tostring(); System.out.println("p[" + i + "]: " + s); return;

34 1. Persona r; 2. Polimorfismo Esempio 3. r = new Studente("Lino", "Torvaldi", ); System.out.println(r.toString()); 6. // Lino Torvaldi, matr // E NON Lino Torvaldi. 9. System.out.println(r.getMatricola()); 10. // NO, ERRORE (IN COMPILAZIONE)! 34

35 Late Binding 35 public class L { // L(): costruttore predefinito public L() { // f(): facilitatore public void f() { System.out.println("Uso f() di L"); g(); // g(): facilitatore public void g() { System.out.println("Uso g() di L");

36 Late Binding 36 public class M extends L { // M(): costruttore predefinito public M() { // nessun corpo necessario // g(): facilitatore public void g() { System.out.println("Uso g() di M"); public static void main(string[] args) { L l = new L(); M m = new M(); l.f(); m.f(); return; Output Uso f() di L Uso g() di L Uso f() di L Uso g() di M

37 Cast Persona p; 2. Studente s; p = new Studente("Letizia", "Arnaboldi", ); s = (Studente)p; 7. System.out.println("matr." + s.getmatricola()); 8. // matr

38 Classe Object 38 Ogni classe implicitamente o esplicitamente estende la classe più generica Object, definita nel package java.lang Metodi tostring() equals() clone() getclass() finalize() hashcode() wait(), wait(long), wait(long,int) come si vedrà, i metodi possono essere ridefiniti nelle classi derivate

39 1. int x,y; // coordinate 2. Metodo equals Esempio 3. public boolean equals(punto p) { 4. // pre: p!=null 5. return (this.x == p.x) && (this.y == p.y); public boolean equals(object p) { 9. // pre: p!=null 10. boolean uguali; 11. if (p instanceof Punto) 12. uguali = this.equals((punto) p); 13. else 14. uguali = false; 15. return uguali;

40 Classi: Ereditarietà e Progettazione L ereditarietà (in generale) è una tecnica che va tenuta in considerazione nella progettazione delle classi prima si progetta la gerarchia delle classi 40 criteri per decidere se una classe può essere definita come estensione di una classe poi vengono implementate le classi

41 Classi Astratte 41 Una classe astratta è una classe implementata in modo parziale metodi astratti: viene specificata la loro intestazione ma non il loro corpo una classe astratta non può essere istanziata Utilità delle classi astratte definire un comportamento comune le classi derivate dichiarare le funzionalità che devono essere implementate da tutte le classi che la estendono una classe senza metodi astratti è detta concreta

42 Classi Astratte Si supponga di voler creare una classe GeometricObject Esempio Metodi concreti ragionevoli comprendono getposition() setposition() getcolor() setcolor() paint() 42 Per tutti tranne paint(),, è possibile creare implementazioni. Per paint(),, occorre conoscere il tipo di oggetto da disegnare: è un quadrato, un triangolo ecc. Il metodo paint() dovrebbe essere un metodo astratto

43 import java.awt.*; Classi Astratte Esempio 43 abstract public class GeometricObject { Point position; Color color; public Point getposition() { return position; public void setposition(point p) { position = p; public Color getcolor() { return color; public void setcolor(color c) { color = c; abstract public void paint(graphics g);

44 Classe Astratta Forma abstract class Forma { 2. protected String colore; public Forma(String colore) { 5. this.colore = colore; public String colore() { 9. return colore; // Ogni forma deve saper calcolare la sua area 13. public abstract double area();

45 Classe Concreta Quadrato class Quadrato extends Forma { 2. protected double lato; public Quadrato(double lato, String colore) { 5. super(colore); 6. this.lato = lato; public double lato() { 10. return lato; // Restituisce l'area di questo Quadrato 14. public double area() { 15. return lato*lato;

46 Classe Concreta Cerchio class Cerchio extends Forma { 2. protected double raggio; public Cerchio(double raggio, String colore) { 5. super(colore); 6. this.raggio = raggio; public double raggio() { 10. return raggio; // Restituisce l'area di questo Cerchio 14. public double area() { 15. return raggio*raggio*math.pi;

47 Esempio Uso delle Classi Astratte/Concrete 1. Quadrato q; 2. Forma fq; // un quadrato // un altro quadrato q = new Quadrato(5, "bianco"); 5. fq = new Quadrato(10, "rosso"); System.out.println(q.area()); // System.out.println(q.colore()); // bianco 9. System.out.println(q.lato()); // System.out.println(fq.area()); // System.out.println(fq.colore()); // rosso System.out.println(fq.lato()); 15. // NO, errore di compilazione!

48 Interfacce 48 Una interfaccia (interface)) descrive un insieme di comportamenti consiste nella dichiarazione di un certo numero di metodi d istanza e pubblici i metodi sono considerati implicitamente astratti le variabili sono considerate public, final e static una classe implementa (implements)) una interfaccia se implementa tutti i metodi d istanza dichiarati dall interfaccia

49 Interfacce 49 Un'interfaccia è un modello che specifica che cosa deve essere presente in una classe che implementa l'interfaccia Un'interfaccia non può specificare nessuna implementazione dei metodi Tutti i metodi di un'interfaccia sono pubblici Tutte le variabili definite in un'interfaccia sono public, final e static

50 Interfacce 50 Un'interfaccia per un oggetto colorabile public interface Colorable { public Color getcolor(); public void setcolor(color c); Ora l'interfaccia può essere utilizzata per creare classi che implementano l'interfaccia

51 Interfacce 51 import java.awt.*; public class ColorablePoint extends Point implements Colorable { Color color; public ColorablePoint() { super(); setcolor(color.blue);...

52 Esempio Interfaccia Comparable public interface Comparable { 2. /* Confronta questo oggetto con o per determinare 3. * in che relazione d'ordine sono. 4. * Restituisce: 5. * - zero, se sono uguali 6. * - un valore negativo, 7. * se questo oggetto è minore di o 8. * - un valore positivo, 9. * se questo oggetto è maggiore di o. */ public int compareto(object o); 12. le classi String e Integer implementano questa interfaccia

53 Interfacce Implementazione // Un oggetto Numero rappresenta un numero intero, // con un valore che può essere letto e modificato. class Numero implements Comparable { private int valore; public Numero(int v) { this.valore = v; public int getvalore() { return this.valore; public void setvalore(int v) { this.valore = v;... segue... 53

54 Interfacce Implementazione 1. // Verifica la relazione tra numeri. 2. public int compareto(numero o) { 3. // pre: o!=null 4. int confronto; 5. if (this.valore==o.valore) 6. confronto = 0; 7. else if (this.valore<o.valore) 8. confronto = -1; 9. else // this.valore>o.valore 10. confronto = 1; 11. return confronto; // Verifica la rel. tra questo numero e l oggetto o 15. public int compareto(object o) { 16. // pre: o!=null && o instanceof Numero 17. return compareto((numero) o); // classe 54

55 Interfacce e Polimorfismo 55 Una interfaccia definisce un tipo (parziale) che può essere implementato polimorficamente da più classi: il metodo void sort(object[] a) di Arrays ipotizza che gli elementi di a siano tutti di uno stesso tipo che questo tipo implementi l interfaccia Comparable si può usare per ordinare un array di oggetti di tipo Numero

56 Interfacce 56 Rappresentazione int compareto(object o) implementa «interfaccia» Comparable Numero valore : int «costruttore» Numero(int v) «operazioni» int getvalore() void setvalore(int v) int compareto(numero o) int compareto(object o)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti 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

Dettagli

La classe java.lang.object

La 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

Dettagli

Ereditarietà: concetti di base

Ereditarietà: 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

Dettagli

Riassunto. La programmazione OO. Oggi. Esempio

Riassunto. 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

Dettagli

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

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: 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,

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - 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/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - 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/

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

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

Dettagli

Programmazione 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() 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

Dettagli

Polimorfismo. Subtyping-polimorfismo

Polimorfismo. Subtyping-polimorfismo Polimorfismo 23 Polimorfismo - Esempio Definiamo la classe Persona che gestisce i dati anagrafici di una persona (nome ed età per semplicità) La classe definisce un costruttore e il metodo print che stampa

Dettagli

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Ereditarietà. 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

Dettagli

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/

Dettagli

! 26/5: Fine lezioni teoria. ! ~ Settimana dopo: fine lezioni lab. ! ~ 5/6: Pubblicazione progetto 1o appello. !? Scadenza attività autovalutazione

! 26/5: Fine lezioni teoria. ! ~ Settimana dopo: fine lezioni lab. ! ~ 5/6: Pubblicazione progetto 1o appello. !? Scadenza attività autovalutazione La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 15 Calendario provvisorio! 26/5:

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. 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),

Dettagli

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Programmazione 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

Dettagli

Classi astratte Interfacce

Classi astratte Interfacce Classi astratte Interfacce Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Ereditarietà Abbiamo visto come L ereditarietà permette di costruire nuove classi utilizzando

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione 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

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione 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

Dettagli

Fondamenti di Informatica

Fondamenti 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

Dettagli

Ereditarietà 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à 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

Dettagli

ereditarietà e polimorfismo

ereditarietà 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

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione 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

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione 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

Dettagli

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Laboratorio 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

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione 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

Dettagli

Programmazione a oggetti

Programmazione 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

Dettagli

RIUSABILITÀ L OBIETTIVO

RIUSABILITÀ 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)

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

E18 Esercizi su ereditarietà e polimorfismo

E18 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

Dettagli

Ereditarietà (ultima)

Ereditarietà (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...

Dettagli

Ereditarietà (ultima)

Ereditarietà (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

Dettagli

16 - Ereditarietà, tipi e gerarchie

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

Dettagli

16 - Ereditarietà, tipi e gerarchie

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

Dettagli

Gerarchia di classi Java 1

Gerarchia 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

Dettagli

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

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà 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

Dettagli

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Corso 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

Dettagli

17 - Ereditarietà, tipi e gerarchie

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

Dettagli

Informatica Ereditarietà Java. Ereditarietà

Informatica 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

Dettagli

Paradigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1

Paradigmi 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

Dettagli

Il Linguaggio Java. Le interfacce

Il Linguaggio Java. Le interfacce Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,

Dettagli

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011. Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione 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

Dettagli

Gerarchia di classi Java 1

Gerarchia 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

Dettagli

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Programmazione 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

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. 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

Dettagli

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Programmazione 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

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione 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

Dettagli

Uguaglianza e Identità. (no, non avete sbagliato corso )

Uguaglianza e Identità. (no, non avete sbagliato corso ) 1 Uguaglianza e Identità (no, non avete sbagliato corso ) Fondamenti di Java Che vuol dire "uguaglianza"? Che vuol dire "Identità"? Che differenza c è? Uguaglianza public class Test { public static void

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 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

Dettagli

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Obiettivi. 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

Dettagli

PROGRAMMAZIONE 2 4. Java: un modello operazionale

PROGRAMMAZIONE 2 4. Java: un modello operazionale PROGRAMMAZIONE 2 4. Java: un modello operazionale PR2 2018-2019 1 Abstract Stack Machine Abstract Stack Machine: modello computazionale per Java che permette di descrivere la nozione di stato modificabile

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

14 - Metodi e Costruttori

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

Dettagli

e il loro uso: esistente e cambiare quel che va cambiato specializzare (per ereditarietà) la classe Counter public class EsempioNuovo {

e 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

Dettagli

e il loro uso: Oggetti composti IL TEMA DELLA RIUSABILITÀ APPROCCI PER IL RIUTILIZZO:

e il loro uso: Oggetti composti IL TEMA DELLA RIUSABILITÀ APPROCCI PER IL RIUTILIZZO: 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

Dettagli

Implementare un'interfaccia

Implementare un'interfaccia Le interfacce Un metodo astratto è un metodo senza corpo, con un ";" dopo l'intestazione. Una interfaccia (interface) in Java ha una struttura simile a una classe, ma può contenere SOLO costanti e metodi

Dettagli

OOP Ereditarietà A. FERRARI

OOP Ereditarietà A. FERRARI OOP Ereditarietà A. FERRARI ereditarietà l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza la nuova classe viene definita esprimendo solamente le differenze che

Dettagli

Fondamenti di Informatica I

Fondamenti di Informatica I Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:

Dettagli

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Programmazione 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

Dettagli

IL CONCETTO DI CLASSE

IL 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

Dettagli

Ereditarietà. Linguaggi di Programmazione: Paradigmi di Programmazione. Ereditarietà. Sottoclassi. Ereditarietà. Controllo statico dei tipi

Ereditarietà. Linguaggi di Programmazione: Paradigmi di Programmazione. Ereditarietà. Sottoclassi. Ereditarietà. Controllo statico dei tipi Linguaggi di Programmazione: Paradigmi di Programmazione Ereditarietà Meccanismo per lo sviluppo incrementale di programmi Consente di estendere classi preesistenti aggiungendo o modificando componenti

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. 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

Dettagli

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

Dettagli

Overloading - Overriding

Overloading - Overriding 1 Overloading - Overriding Overloading: Funzioni con uguale nome e diversa firma possono coesistere. move(int dx, int dy) move(int dx, int dy, int dz) Overriding: Ridefinizione di una funzione in una sottoclasse

Dettagli

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Fondamenti 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;

Dettagli

Java Classi wrapper e classi di servizio. Classi di servizio

Java Classi wrapper e classi di servizio. Classi di servizio Java Classi wrapper e classi di servizio 1 Ereditarietà - recap Una classe può derivare da un altra - extends Eredita metodi e attributi (non i costruttori) Aggiunge attributi e metodi, ma può anche ridefinire

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione 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,

Dettagli

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP?

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP? 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@uniud.it Programmazione, lezione

Dettagli

L ereditarieta` Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni)

L ereditarieta` Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) L ereditarieta` Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino

Dettagli

PRINCIPI DELLA OOP. Ereditarietà e polimorfismo

PRINCIPI 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à

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà 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

Dettagli

Dichiarazione di una classe. Dichiarazione ereditarietà

Dichiarazione 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

Dettagli

L ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà

L 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,

Dettagli

Bank account. private double balance; 11/2/2011

Bank 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

Dettagli

public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo.

public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 7 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà 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

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

PROGRAMMAZIONE 2 4. Un modello operazionale per Java

PROGRAMMAZIONE 2 4. Un modello operazionale per Java PROGRAMMAZIONE 2 4. Un modello operazionale per Java PR2 2017-2018 1 Liste in Java (à la OCaML) class Cons implements StringList { private String head; private StringList tail; public Cons (String h, StringList

Dettagli

SOMMARIO 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. 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

Dettagli

Modello procedurale versus modello O-O

Modello procedurale versus modello O-O Modello procedurale versus modello O-O Quando si scrive un programma si crea dentro il calcolatore un modello di una porzione del mondo reale. I linguaggi di programmazione procedurali consentono di costruire

Dettagli

La classe Object. Ce li ha anche HelloWorld!!!

La classe Object. Ce li ha anche HelloWorld!!! La classe Object Ogni classe estende implicitamente la classe java.lang.object La classe java.lang.object contiene dei metodi che vengono implicitamente ereditati I metodi ereditati sono: clone equals

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Uso dei Componenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Gerarchia di classi Java 1

Gerarchia 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

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E17 C. Limongelli Maggio 2012 1 Contenuti q Definizione di classi con ereditarietà q Uso di tipi di dati astratti q Ricorsione

Dettagli

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Paradigma a oggetti Programmazione orientata agli oggetti Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Programmazione ad oggetti. Si estendono i tipi di dati astratti che permettono:

Dettagli

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice Programmazione ad oggetti. Paradigma a oggetti Programmazione orientata agli oggetti Si estendono i tipi di dati astratti che permettono: information hiding e incapsulamento nascondo la rappresentazione

Dettagli