In questa lezione. Polimorfismo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "In questa lezione. Polimorfismo"

Transcript

1 In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo I 3 meccanismi che caratterizzano un linguaggio object-oriented Incapsulamento (tipo di dato astratto, separazione fra interfaccia e implementazione) Ereditarietà (gerarchie di tipi e riuso) Polimorfismo 1

2 Gerarchie di tipi e polimorfismo Semantica IS_A In una gerarchia di tipi, il tipo più generale generale (sovra-tipo) rappresenta un astrazione di tutti i tipi che lo specializzano (sottotipi) Il Polimorfismo si basa sulla semantica IS_A delle gerarchie di generalizzazionespecializzazione definite attraverso i meccanismi di ereditarietà di Java Tipo statico Tipo dinamico Poligono p = new Rettangolo(); FiguraGeometrica f = new Ellisse(); FiguraGeometrica f = new Rettangolo(); Object o = new Triangolo(); Poligono p = new Ellisse(); Polimorfismo Polimorfismo = (letteralmente) molteplici forme In un programma Proprietà del codice di comportarsi diversamente in diversi contesti di esecuzione Realizzazione nei linguaggi OO Polimorfismo fra reference: usare una variabile reference per riferirsi a oggetti di tipo (tipo dinamico) diverso da quello dichiarato nel codice (tipo statico, noto a compile-time) Polimorfismo per inclusione: La corrispondenza fra tipi statici e dinamici è possibile nell ambito le gerarchie di tipi definite con il meccanismo di ereditarietà. Ovvero, i possibili tipi dinamici per un reference sono solo i sovra-tipi e sotto-tipi del tipo statico 2

3 Binding dinamico 1/2 (Vedi domanda nel codice sotto) public class Poligono extends FiguraGeometrica { public void disegna(){ ; //disegna un poligono public class Rettangolo extends Poligono { public void disegna(){ ; //disegna un rettangolo public class Triangolo extends Poligono { public void disegna(){ ; //disegna un triangolo public class Diagramma { public void inserisci(poligono p){ //Domanda: //Quale implementazione //del metodo disegna? p.disegna(); public static void main(string [] args){ //Corretto per polimorfismo: Poligono p1 = new Rettangolo(); //Corretto per polimorfismo: Poligono p2 = new Triangolo(); Diagramma d = new Diagramma(); d.inserisci(p1); d.inserisci(p2); Binding dinamico 2/2 Anche detto: late binding Il legame fra la definizione e l invocazione dei metodi non viene stabilito staticamente dal compilatore (compile-time), ma bensì dinamicamente a runtime Il compilatore non ha modo di stabilire quale implementazione del metodo disegna() deve chiamare: quella di Rettangolo, o quella di Triangolo, o quella di Poligono? Il tipo effettivo del parametro p è noto solo quando il metodo disegna viene invocato, cioè solo a runtime Tecnicamente: il compilatore non genera il codice per eseguire il metodo, ma genera codice che riconosce il tipo effettivo di p, cerca l implementazione giusta di disegna, e la esegue (dispatching) In Java, il binding è sempre dinamico!! NB: Il binding dinamico non è automatico in tutti i linguaggi di programmazione. Ad esempio in C++ viene abilitato inserendo la keyword virtual nella signature dei metodi 3

4 Ammissibilità compile-time del codice che usa il polimorfismo Nei linguaggi tipizzati il compilatore verifica l ammissibilità del codice in base ai tipi dichiarati (tipo statico) Ad esempio: le invocazioni di metodo ammissibili sono solo quelle ammissibili per il tipo statico dei reference Perché il polimorfismo sia possibile, il compilatore permette di assegnare fra loro reference di tipo diversi Casting = coercizione di tipo. Si impone al compilatore di considerare un dato (es. un reference) con tipo diverso da quello dichiarato In Java il casting è ammissibile in due forme: Up-casting (polimorfismo type-safe) Down-casting (polimorfismo type-unsafe) Upcasting 1/2 (Quale programma è corretto?) public class Diagramma { public void inserisci(poligono p){ p.disegna(); public static void main(string [] args){ Poligono p1 = new Rettangolo(); Poligono p2 = new Triangolo; Diagramma d = new Diagramma(); d.inserisci(p1); d.inserisci(p2); public static void main(string [] args){ Rettangolo r = new Rettangolo(); Triangolo t = new Triangolo; Diagramma d = new Diagramma(); d.inserisci(r); d.inserisci(t); Entrambi i programmi sono validi per il compilatore e producono il medesimo risultato!!! 4

5 Upcasting 2/2 Casting = coercizione di tipo Si impone al compilatore di considerare un dato (es. un reference) con tipo diverso da quello dichiarato Upcasting: coercizione di un tipo specializzato verso un tipo più generale (up = più in alto nella gerarchia di ereditarietà) In Java (e in generale nei linguaggi con polimorfismo) l upcasting viene garantito implicitamente dal compilatore. Per esempio (vedi programma slide precedente): Poligono p1 = new Rettangolo(); //Upcasting del risultato della chiamata new, che restituisce un reference di tipo Rettangolo, per l assegnamento a una variabile di tipo Poligono d.inserisci(r); //Upcasting del reference r di tipo rettangolo per il passaggio del parametro al metodo inserisci, che dichiara un parametro di tipo Poligono NB: dopo un upcasting, si possono invocare solo i metodi presenti nel tipo statico (si ricordi però il binding dinamico!!) NB: Upcasting è type-safe: ovvero i metodi invocabili per il tipo statico esistono sicuramente per qualsiasi tipo dinamico ammissibile Problemi con up-casting public class Poligono extends FiguraGeometrica{ public void disegna(){ ; //disegna un poligono public class Rettangolo extends Poligono { public void disegna(){ ; //disegna un rettangolo public double getbase(){ ; //restituisce la base public double getaltezza(){ ; //restituisce l altezza public class Diagramma { public void inserisci(poligono p){ p.disegna(); public static void main(string [] args){ Poligono p1 = new Rettangolo(); Diagramma d = new Diagramma(); d.inserisci(p1); double b = p1.getbase(); double a = p1.getaltezza(); System.out.println( Area = + b*a); Il compilatore segnalerebbe un errore. Qual è il problema? Non è possibile invocare getbase() e getaltezza() per un ref di tipo Poligono (p1) Messaggio di errore in compilazione: the method getbase() is undefined for the type Poligono 5

6 Downcasting (type-unsafe) Downcasting: coercizione di un tipo generale verso un tipo più specializzato (down = più in basso nella gerarchia di ereditarietà) In Java il downcasting è valido, ma deve essere dichiarato esplicitamente dal programmatore. NB: il compilatore si fida! public static void main(string [] args){ Poligono p1 = new Rettangolo(); Diagramma d = new Diagramma(); d.inserisci(p1); double b = ((Rettangolo) p1).getbase(); //Downcasting di p1 prima di getbase double a = ((Rettangolo) p1).getaltezza(); //Downcasting di p1 prima di getaltezza System.out.println( Area = + b*a); È responsabilità del programmatore usare il downcasting solo quando ha senso! Se la fiducia del compilatore è mal riposta (ovvero il programmatore effettua un downcasting sbagliato), potranno verificarsi errori a runtime! Errori runtime con Downcasting Downcasting è type-unsafe: in un programma che passa la compilazione, possono esserci errori nell uso dei tipi! Il seguente programma viene compilato correttamente ma fallisce a runtime (java.lang.classcastexception) public static void main(string [] args){ Poligono p1 = new Esagono(); Diagramma d = new Diagramma(); d.inserisci(p1); double b = ((Rettangolo) p1).getbase(); double a = ((Rettangolo) p1).getaltezza(); System.out.println( Area = + b*a); 6

7 Altri casting In Java, il casting di oggetti non primitivi è legale solo per classi legate in una gerarchia di ereditarietà ovvero solo Upcasting e Downcasting sono legali Un tentativo di effettuare un cast illegale viene segnalato come errore a compiletime Operatore instanceof Permette di testare il tipo dinamico dell oggetto associato a un reference Restituisce vero se il tipo del reference è compatibile con il tipo specificato void gestiscipoligono(poligono p){ if(p istanceof Rettangolo) ((Rettangolo) p).getbase(); else 7

8 Uso di instanceof: Qual è l output? class Parent { class Child extends Parent { public class Prova{ public static void main(string[] args){ String s = "Hello"; if(s instanceof java.lang.string) System.out.println( String ); else System.out.println( not Str"); s = null; if(s instanceof java.lang.string) System.out.println( String"); else System.out.println( not Str"); Child child = new Child(); if (child instanceof Child) System.out.println( Child"); if (child instanceof Parent) System.out.println( Parent"); Parent parent = new Parent(); if (parent instanceof Child) System.out.println( Child"); else System.out.println( Parent"); Polimorfismo con Object 1/3 In Java tutte le classi sono in relazione di ereditarietà con il tipo Object Ne consegue che: Upcasting (implicito) di un qualsiasi reference a Object è sempre possibile Dopo un upcasting a Object è possibile invocare solo i metodi definiti dalla classe Object (per esempio equals o tostring) ma ricordate il binding dinamico!! Downcasting (esplicito) di un reference di tipo Object a una qualsiasi classe è sempre accettato dal compilatore anche se ovviamente può produrre errori runtime nei casi in cui il tipo dinamico dell oggetto non fosse compatibile con la classe del casting 8

9 Polimorfismo con Object 2/3 public class Rettangolo extends Poligono { public String tostring(){ return Un rettangolo ; public double getbase(){ ; //restituisce la base public class Giallo extends Colore { public String tostring(){ return Colore giallo ; public class Main{ static void tracciaoggetto(object o){ String s = o.tostring(); System.out.println(s); public static void main(string [] args){ Rettangolo r = new Rettangolo(); Colore c = new Giallo(); tracciaoggetto(r); tracciaoggetto(c); Il programma è valido! Domanda: cosa viene stampato a video quando si esegue questo programma? Polimorfismo con Object 3/3 public class Rettangolo extends Poligono { public String tostring(){ return Un rettangolo ; public double getbase(){ ; //restituisce la base public class Giallo extends Colore { public String tostring(){ return Colore giallo ; public class Prova{ public void tracciaoggetto(object o){ String s = o.tostring()); System.out.println(s); double b = ((Rettangolo)o).getBase(); public static void main(string [] args){ Rettangolo r = new Rettangolo(); Colore c = new Giallo(); tracciaoggetto(r); tracciaoggetto(c); Il programma viene compilato correttamente, ma provoca un errore a runtime! Domanda: quale output si vedrà in fase di esecuzione del programma? 9

10 Il modo giusto di implementare equals equals viene sempre ereditato dalla classe Object con signature: public boolean equals(object otherobject){ Questo metodo va generalmente ridefinito (overridden) ma attenzione a non definire impropriamente un overload piuttosto che un override del metodo public class Persona { public boolean equals(persona p){ public class Persona { public boolean equals(object o){ Overloading di equals Overriding di equals Il modo giusto di implementare equals La ridefinizione di equals deve garantire che Il parametro passato non sia null Il parametro passato non sia di tipo diverso dall oggetto con cui deve essere confrontato Impementazione tipica: public boolean equals(object o){ if(this == o) return true; if(o == null)return false; if(getclass()!= o.getclass()) return false; Persona p = (Persona)o; //confronto fra this e p 10

11 Il metodo getclass() Metodo della classe Object È un metodo final, non può essere ridefinito Restituisce una rappresentazione del tipo dinamico dell oggetto Il risultato può essere confrontato con == o!= per determinare se due oggetti sono stati creati esattamente della stessa classe if(object1.getclass() == object2.getclass() Nessun binding dinamico per Metodi dichiarati static tali sono associati alle classi (e non agli oggetti) infatti non si invocano attraverso un reference, ma attraverso il nome della classe corrispondente il nome di una classe rappresenta un unico tipo (non c è differenza fra tipo statico e dinamico), quindi non è soggetto a polimorfismo 11

12 Nessun binding dinamico per Metodi dichiarati final tali metodi non possono essere ridefiniti nelle sottoclassi, quindi il binding dinamico non è necessario un metodo dichiarato final non può essere ridefinito (overridden) in una classe derivata: public class Triangolo { public final void metodo(){ public class TriangoloEquilatero extends Triangolo { public void metodo(){ //non valido ESERCIZI 12

13 Polimorfismo: esercizio 1 Si consideri il sistema informativo di un negozio di alimentari Realizzare una classe Prodotto e una gerarchia di classi che estendono prodotto: Biscotti, Verdura,... Ogni prodotto ha un prezzo che deriva dalla somma di costo fisso (che può differire di prodotto in prodotto) e un prezzo variabile in base a caratteristiche specifiche di ogni prodotto. Per i biscotti il prezzo specifico è 10 o 20 secondo che si tratti o meno della confezione grande ; Per la verdura il prezzo specifico dipende dal peso ed è di 5 per Kilo. Il prezzo dei prodotti è accessibile attraverso il metodo getprezzo. La descrizione di un prodotto è una stringa accessibile con il metodo tostring e ne include il prezzo Si realizzi la classe Ordine che memorizza il totale (int) di un ordinazione, man mano che si aggiungono dei prodotti attraverso il metodo aggiungiprodotto e memorizza la descrizione dell ordine facendo uso di un oggetto di classe Descrizione Un oggetto di tipo Descrizione incapsula una stringa ottenuta per concatenazioni successive delle rappresentazioni testuali degli oggetti passati al metodo append (che può ricevere oggetti di tipo qualsiasi). Si realizzi un caso di test che crea alcuni prodotti, li aggiunge a un ordine, stampa la descrizione dell ordine e verifica la correttezza del prezzo Si rifletta su quali punti del codice corrispondono a: invocazioni polimorfe con binding dinamico, upcasting o downcasting Polimorfismo: esercizio 2 (variabile di stato polimorfa) Si realizzi la classe Confezione secondo la seguente specifica: Ogni oggetto di tipo Confezione incapsula un altro oggetto che rappresenta il contenuto della confezione. Il contenuto deve poter essere un oggetto di tipo qualsiasi. Il metodo scarta restituisce l oggetto contenuto nella confezione e stampa una stringa che descrive tale oggetto Si realizzi un caso di test che inserisce in una confezione alcuni oggetti Prodotto (vedi esercizio precedente) e verifica il funzionamento del metodo scarta Domanda: si ipotizzi una gerarchia class Caramelle extends Prodotto in cui il metodo tostring definito nella classe Caramelle fa override del metodo tostring definito dalla classe Prodotto. Come si fa a fare in modo che il metodo scarta invochi il tostring di Prodotto (superclasse) quando il contenuto della confezione è un oggetto Caramelle (sottoclasse)? In particolare, si ragioni sulla possibilità (o meno) di usare upcasting esplicito a questo scopo? 13

14 Polimorfismo: esercizio 3 (downcast, instanceof) Si implementi una classe Cliente con un metodo acquisisci che riceve come parametro un oggetto di tipo Confezione. Sotto l ipotesi che l oggetto contenuto sia di classe Prodotto, ne restituisce il prezzo, altrimenti restituisce 0. Inoltre se l oggetto Prodotto è di tipo Caramelle, stampa a video il numero di caramelle nella confezione (si ipotizzi l esistenza della classe Caramelle e del metodo conta che restituisce il numero di caramelle) Si realizzi un caso di test che invoca acquisisci passando prima una Confezione che contiene un oggetto di classe Biscotti e poi una Confezione che contiene un oggetto di classe Caramelle Si realizzi un caso di test che invoca acquisisci passando una Confezione che contiene un oggetto di classe Descrizione Si simulino sul codice ottenuto alcuni casi in cui il downcast e l operatore instanceof falliscono staticamente (errore a compile time) Polimorfismo: esercizio 4 Si implementi una classe File che incapsula un array di byte. Il metodo getsize restituisce la dimensione (il numero di byte) dell oggetto File, e il metodo isbiggerthan restituisce true o false secondo che l oggetto File sia o non sia più grande di una data dimensione Si implementi una classe Folder che estende File e incapsula a sua volta un array di File (max 10). Il metodo aggiungifile permette di inserire un oggetto File nel folder fino al raggiungimento del numero massimo. Folder ridefinisce getsize come somma delle dimensioni dei file contenuti nel Folder Domande: in Folder è necessario ridefinire il metodo isbiggerthan? Come si rappresenzano progettualmente (in UML) le relazioni fra i File e i Folder secondo quanto definito nell esercizio? Si realizzi un caso di test che crea un Folder che contiene due File (da 100 e 5000 byte) e un ulteriore Folder vuoto, e verifica il funzionamento di getsize e isbiggerthan 14

15 Rappresentazione UML delle classi dell esercizio 4 File 0..* Folder Polimorfismo: esercizio 5 (polimorfismo con Object) Si implementi il metodo equals per le classi File e Folder dell esercizio precedentemente svolto, secondo l ipotesi che due File sono uguali se contengono esattamente gli stessi byte e due Folder sono uguali se tutti gli oggetti contenuti nello stesso ordine sono tutti uguali fra loro Si realizzi un caso di test che crea tre Folder: I primi due Folder contengono ciascuno due File: un File con 3 byte tutti di valore 1 e un File con 5 byte di valori 1, 2, 3, 4 e 5. Il terzo Folder è vuoto. Il test usa il metodo equals per confrontare i primi due Folder tra loro e il primo Folder con il terzo Folder, e verifica i risultati con asserttrue/assertfalse. Inoltre il test ripete il confronto tra i primi due Folder usando assertequals, senza invocare il metodo equals esplicitamente. Domande: l invocazione di assertequals causa l invocazione del metodo equals di Folder? Se sì, com è possibile che un metodo della libreria JUnit invochi il metodo equals implementato nell esercizio? 15

16 Polimorfismo: esercizio 6 (estensione di sistemi esistenti) Si personalizzi il framework AWT di Java (per la produzione di interfacce grafiche) attraverso un oggetto Label personalizzato: MyLabel. La personalizzazione deve garantire che il testo delle etichette di tipo MyLabel sia sempre concatenato con una stringa (ad esempio [Powered by ] ) qualsiasi sia il testo impostato attraverso il costruttore Suggerimento: si sfrutti l overriding del metodo gettext Si realizzi un caso di test che crea una Label (istanziata come oggetto di tipo MyLabel) e verifica il testo dell etichetta Si crei una semplice interfaccia (classe Frame) che visualizza un oggetto di tipo MyLabel 16

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

Programmazione Java: Polimorfismo

Programmazione Java: Polimorfismo Programmazione Java: Polimorfismo romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Polimorfismo» Upcasting» Selezione dei metodi» Comportamento dei metodi polimorfi dentro i costruttori»

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi 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

Dettagli

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

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

Ingegneria del Software

Ingegneria 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

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

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

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

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

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

Introduzione. Java. Esempio. Esempio

Introduzione. Java. Esempio. Esempio Java polimorfismo G. Prencipe prencipe@di.unipi.it Introduzione È un altro degli ingredienti fondamentali della OOP Permette di organizzare il codice e la leggibilità e di ottenere programmi estensibili

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

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

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

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

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime Java riconoscere i tipi G. Prencipe prencipe@di.unipi.it Introduzione Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime In particolare determina il tipo

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

La classe Object. L2-Linguaggi di Programmazione II-unina 1

La classe Object. L2-Linguaggi di Programmazione II-unina 1 La classe Object L2-Linguaggi di Programmazione II-unina 1 JAVA è dotata di una classe speciale, una classe cosmica, denominata Object Qualsiasi altra classe deriva da Object Object Una variabile di tipo

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori 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 di.unipi.it Corso di

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

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore

Dettagli

Classi, Ereditarietà e Polimorfismo. Lezione 7

Classi, Ereditarietà e Polimorfismo. Lezione 7 Classi, Ereditarietà e Polimorfismo Lezione 7 Scopo della Lezione Presentare il concetto di classe ed oggetto come istanza della classe; Affrontare il concetto di ereditarietà tra classi e le sue ricadute

Dettagli

Confronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei

Confronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei Confronti, equals Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals 1 Operatori relazionali All interno delle parentesi tonde della condizione dell if è possibile, come abbiamo

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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

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 Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Variabili statiche Se una variabile di una classe ha il

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

Dettagli

Programmazione ad oggetti

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

Dettagli

Eredità e Polimorfismo in Java

Eredità e Polimorfismo in Java Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello

Dettagli

TIPI PRIMITIVI: LIMITI

TIPI PRIMITIVI: LIMITI TIPI PRIMITIVI: LIMITI I tipi primitivi sono i "mattoni elementari" del linguaggio In varie situazioni può però essere necessario trattare i tipi primitivi come oggetti quando una funzione pretende come

Dettagli

Il linguaggio Java: aggiunte in Java 1.5

Il linguaggio Java: aggiunte in Java 1.5 .. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come

Dettagli

La programmazione ad oggetti: chiamate di metodi. Overloading. This

La programmazione ad oggetti: chiamate di metodi. Overloading. This ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.

Dettagli

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio) Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?

Dettagli

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x): Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 16 gennaio 2009 Cognome Jekyll Nome Doctor Matricola 112233 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del metodo

Dettagli

Il linguaggio Java. La superclasse universale Object

Il linguaggio Java. La superclasse universale Object Il linguaggio Java La superclasse universale Object La classe Object La classe Object è la superclasse, diretta o indiretta, di ogni classe La classe Object definisce lo stato ed il comportamento base

Dettagli

Programmazione orientata agli oggetti

Programmazione orientata agli oggetti Programmazione orientata agli oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che prevede di raggruppare in un unica entità (la classe)

Dettagli

1 Il Paradigma ad Oggetti

1 Il Paradigma ad Oggetti 1 Il Paradigma ad Oggetti 1.1 Mini-Java In questa sezione introduciamo un sottoinsieme molto elementare del linguaggio ad oggetti Java, che chiamiamo Mini-Java. Nel linguaggio Mini-Java abbiamo incluso

Dettagli

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico 2000-2001 Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli 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 di.unipi.it

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"

Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe wrapper 1 Classi Wrapper classe "wrapper" int Integer float Float char Char byte Byte double Double Generano oggetti che hanno come variabile di istanza un tipo di dato primitivo con nome uguale Integer int Float

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013 Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Programmazione Orientata agli Oggetti

Programmazione Orientata agli Oggetti Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato

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

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo Ereditarietà & Polimorfismo Ereditarietà Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un altra (classe base) La classe base modella un concetto generico La classe

Dettagli

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Programmazione ad oggetti Prova scritta 15 Gennaio 2013

Programmazione ad oggetti Prova scritta 15 Gennaio 2013 Programmazione ad oggetti Prova scritta 15 Gennaio 2013 Nome: Matricola: Istruzioni Scrivete il vostro nome sul primo foglio. Scrivete le soluzioni nello spazio riservato a ciascun esercizio. Studenti

Dettagli

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei

Dettagli

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi ad oggetti I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia

Dettagli

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato

Dettagli

Modificatori di visibilità

Modificatori di visibilità Modificatori di visibilità Attenzione nell overriding dei metodi: la restrizione di visibilità può essere allentata, ma mai resa più restrittiva. In particolare non si può ridefinire come privato un metodo

Dettagli

Marco Faella I pattern Template Method e Factory Method

Marco Faella I pattern Template Method e Factory Method Marco Faella I pattern Template Method e Factory Method 12 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

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,

Dettagli

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

Esercitazione n 1. Obiettivi

Esercitazione n 1. Obiettivi Esercitazione n 1 Obiettivi Introduzione all utilizzo di Java Development Kit (JDK) versione 1.3 Sviluppare programmi Java tramite linea di comando Es: javac, java, jdb, javadoc Primo esempio di programma

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio di Programmazione 1 [Java] Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli. Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Oggetti e classi. Cos è un oggetto

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

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010 Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Principi di Progettazione del Software. Principi di Progettazione del Software a.a

Principi 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

Dettagli

Definizione di classi

Definizione di classi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1 Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

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 Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le

Dettagli

Fondamenti di Informatica T1 Mappe

Fondamenti di Informatica T1 Mappe Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli