Il linguaggio Java. Definito dalla Sun Microsystems (ora Oracle) nel 1995/96. Esistono anche

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il linguaggio Java. Definito dalla Sun Microsystems (ora Oracle) nel 1995/96. Esistono anche"

Transcript

1 Java

2 Il linguaggio Java Definito dalla Sun Microsystems (ora Oracle) nel 1995/96 Useremo la Standard EdiBon (versione 8) SenBrete parlare anche di jdk e di jre Esistono anche Java PlaIorm Enterprise EdiBon costruita sopra Java SE, offre servlets e JSP, EJB per sviluppare applicazioni "server side" Java PlaIorm Micro EdiBon per piccoli disposibvi (sopware embedded)

3 CaraTerisBche Object- oriented (OO) Distribuito RMI e altri strumenb di distribuzione Indipendente dalla piataforma Bytecode e Java Virtual Machine Sicuro Esecuzione in una "sandbox" che garanbsce che non si possa danneggiare l'host

4 Sorpresa! Non esistono i "tradizionali" conce] di "programma" "sotoprogramma" (funzione o procedura) Esistono le classi, che raggruppano (tra le altre cose) dab privab e metodi i metodi sono il termine OO usato per i sotoprogrammi hanno sintassi analoga alle funzioni C

5

6 Classi come astrazioni

7 La strutura di un programma Java Un programma Java è organizzato come un insieme di classi Ogni classe corrisponde a una dichiarazione di Bpo o a una collezione di funzioni Una classe conbene dichiarazioni di variabili (atribub) e di funzioni (metodi) Il programma principale è rappresentato da un metodo speciale di una classe, deto main

8 Il primo programma Java file: HelloWorld.java public class HelloWorld { public static void main(string[] args){ System.out.println("Hello world!");

9 Esempio di classe in Java public class Data { private int giorno; private int mese; private int anno; // restituisce il giorno public int leggigiorno(){ // restituisce il mese public int leggimese(){ // restituisce l anno public int leggianno(){

10 Il costruto class Una classe può essere vista come un Bpo definito dall utente che specifica le operazioni ublizzabili sul Bpo stesso Il Bpo può essere usato per dichiarare altre variabili int a, b; dichiara due variabili a e b sulle quali è possibile fare tute le operazioni predefinite per il Bpo int Data d; dichiara una variabile d sulla quale è possibile fare tute le operazioni definite nella classe Data Definisce un Bpo di dato astrato

11 Ogge] Tu] gli ogge] della stessa classe hanno la stessa strutura Il numero e Bpo dei loro atribub è lo stesso Ad esempio, la classe Data definisce tute le date possibili, tramite gli atribub giorno, mese, anno Ogni oggeto, in ogni istante dell esecuzione del programma, è caraterizzato da uno stato, che è dato dal valore degli atribub dell oggeto Lo stato dell oggeto oggi di Bpo Data è definito dal valore degli atribub giorno, mese, anno

12 Accesso ad atribub e metodi Tramite la "notazione punto" Esempio: Data d; int x; //codice che inizializza d x = d.leggigiorno(); Esegue leggigiorno() su oggeto d: resbtuisce valore del giorno della data d È come se leggigiorno() avesse come argomento implicito d: in C scriveremmo: leggigiorno(d); Si dice anche che all oggeto d inviamo il messaggio leggigiorno

13 CambiamenB di stato Lo stato degli ogge] (mutabili) può cambiare nel tempo, chiamando metodi opportuni data1 Data giorno = 30 mese = 12 anno = 2010 data1.giornodopo() data1 Data giorno = 31 mese = 12 anno = 2010 Esistono alcuni casi in cui gli ogge] sono immutabili (cioè non possono essere modificab) Ad es. la classe predefinita String

14 metodo giornodopo() Per modificare lo stato, il metodo deve potere accedere ai campi dell oggeto su cui è stato chiamato Nella definizione di un metodo ci si può riferire diretamente (senza notazione punto) ad atribub e metodi dell oggeto sul quale si sta lavorando public void giornodopo() { giorno++; if (giorno > 31) { giorno = 1; mese++; if (mese > 12) { mese = 1; anno++; Data d; d.giornodopo(); //modifica lo stato

15 Private e public ATraverso i metodi "public" di una classe è possibile vedere qual è lo stato di un oggeto... Data d; int x; x = d.leggigiorno(); ma non accedere ai dab "private" (al di fuori del codice di Data): if (d.mese == 12) //Errore di compilazione!

16 Tipi primibvi e variabili Tipi numerici: byte: 8 bit short: 16 bit int: 32 bit long: 64 bit float: 32 bit double: 64 bit Altri Bpi: boolean: true, false char: 16 bit, Unicode Dichiarazione byte unbyte; int a, b=3, c; char c= h, car; boolean trovato=false;

17 Variabili e Bpi riferimento Le variabili di Bpo primibvo (numerico, char, bool) contengono il valore TuTe le altre contengono riferimenb a valori (ecco perché si dicono essere "di Bpo riferimento") I Bpi riferimento sono: Tipi definib dall utente (classi, interfacce) Tipi array Enumerazioni Tipi riferimento possono essere ublizzab ovunque si usi un Bpo: Dichiarazioni di variabili e parametri, Bpo del valore resbtuito da un metodo Le variabili Consentono di accedere agli ogge] Sono allocate nello stack a run- Bme quando si chiama il metodo in cui sono dichiarate Gli ogge] referenziab dalle variabili sono invece allocab sullo heap Sono deallocate quando il sotoprogramma ritorna al chiamante

18 Ancora su Bpo riferimento Ogni variabile dichiarata con una classe conbene un riferimento a un oggeto: un indirizzo di memoria il valore effe]vo dell indirizzo non è noto e non interessa Un oggeto è memorizzato in un opportuna area di memoria d, di Bpo Data, conbene l indirizzo della prima cella dell oggeto d xxx 3 giorno 11 mese 2010 anno

19 Dichiarazione e inizializzazione La dichiarazione di una variabile di Bpo riferimento non alloca spazio per un oggeto, ma solo per il riferimento ad un oggeto A una variabile di Bpo riferimento è assegnato inizialmente il riferimento null, per indicare che la variabile non è ancora associata ad alcun oggeto Data d; d vale null, non esiste ancora un oggeto di Bpo Data Un parametro o una variabile locale non possono essere usab senza essere inizializzab Il compilatore rileva stabcamente mancanza di inizializzazione In entrambi i casi occorre costruire un oggeto e inizializzarlo esplicitamente

20 New La costruzione di un oggeto si realizza dinamicamente tramite l operatore new Esempio: Data d = new Data(); EffeTo di new: Costruisce un nuovo oggeto di Bpo Data ResBtuisce il riferimento all oggeto appena creato Il riferimento viene conservato nella variabile d per potere usare l oggeto Data() è un metodo parbcolare chiamato COSTRUTTORE Ha lo stesso nome della classe, si riconosce come metodo dalle parentesi ()

21 Dichiarazione e creazione Data data; data = new Data( ); data = new Data( ); data Creato con la prima new Creato con la seconda new. Il riferimento al primo oggeto Data è perso. Non c è più modo di accedere all oggeto. L oggeto verrà distruto dal garbage collector. Data Data

22 CostruTori di default Se non si definisce nessun costrutore, il compilatore fornisce il costrutore di default (senza parametri), che svolge le seguenb funzioni: Alloca lo spazio per gli atribub di Bpo primibvo Alloca lo spazio per i riferimenb agli atribub di Bpo definito dall utente Inizializza a null tu] i riferimenb, a 0 tute le variabili numeriche, a false tu] i boolean Il costrutore di default (senza parametri) viene fornito dal compilatore a meno che non si definiscano altri costrutori

23 public class C { private int i1; private int i2; I costrutori: esempio public class Esempio { public static void main(string args[]) { C x = new C(); x = new C(5,7); CorreTo perchè il compilatore ha inserito automabcamente il costrutore di default Sbagliato, non esiste nessun costrutore che prenda due parametri

24 public class C { private int i1; private int i2; public C(int a1, int a2) { i1 = a1; i2 = a2; public C(int a) { i1 = a; i2 = a; MolB costrutori y C i1 = 1 z C i1 = 1 public class Esempio { public static void main(string args[]) { C x, y, z; x i2 = 1 i2 = 4 x = new C(); y = new C(1); z = new C(1,4); Sbagliato, visto che il programmatore ha definito un costrutore, il compilatore non aggiunge quello di default CorreTo, esiste un costrutore che prende un parametro intero CorreTo, esiste un costrutore che prende due parametri interi

25 Esempio di costrutore public Data(int g, int m, int a){ giorno = g; mese = m; anno =a; Data d = new Data(20,3,2007); Crea un oggeto d di Bpo Data e lo inizializza al 20/03/2007 Un implementazione più sofisbcata potrebbe controllare che la data proposta sia legale, rifiutando il 31/2/2007

26 Inizializzazione e accesso public class Persona { private String nome; private Persona padre; private int eta; public Persona(String n) { nome = n; padre = null; eta = 0; public void setpadre(persona p) { padre = p; public void seteta(int e) { eta = e; paolo pietro Persona String nome Persona padre seteta int eta setpadre public class Esempio { public static void main(string[] args) { Persona paolo, pietro; int i = 20; paolo = new Persona("Paolo"); paolo.seteta(i); i = 30; // quanto vale paolo.eta? pietro = new Persona("Pietro"); pietro.seteta(i); paolo.setpadre(pietro); // quanto vale paolo.padre.eta? pietro.seteta(i+1); // quanto vale paolo.padre.eta? seteta setpadre i Persona nome = Paolo padre = Persona nome = Pietro padre = eta = 020 seteta eta = setpadre

27 Creazione e distruzione Se l implementazione deve essere private, l unico modo per inizializzare un oggeto è specificare uno o più metodi parbcolari, chiamab costrutori La creazione di un oggeto comporta sempre l invocazione di un costrutore Il costrutore svolge due operazioni fondamentali, obbligandoci a definirle insieme: L allocazione della memoria necessaria a contenere l oggeto L inizializzazione dello spazio allocato, assegnando opportuni valori A differenza del C, in Java non è necessario deallocare esplicitamente gli ogge] Il garbage collector si occupa di questo: è una roubne di sistema che provvede automabcamente a liberare memoria quando serve (invece in C/C++ )

28 Condivisione (sharing) Un oggeto è condiviso tra due variabili se entrambe accedono a esso L'assegnamento di variabili di Bpo riferimento genera condivisione Se ogge] condivisi sono modificabili, le modifiche apportate atraverso una variabile sono visibili anche atraverso l'altra

29 Allocazione stack vs. heap Quando un metodo termina, tute le variabili del corrispondente record di a]vazione sono distrute però gli ogge] creab sullo heap NON sono necessariamente distru] public static Data foo() { Data d = new Data(1,1,2005); return d; public static void main(string[] args) { Data x = foo(); d x xxx xxx d esiste solo sullo stack durante l esecuzione di foo(), ma viene deallocata quando foo() termina L oggeto costruito conbnua a vivere sullo heap!!!

30 Tipi array Dato un Bpo T (predefinito o definito dall utente) un array di T è definito come T[] Similmente sono dichiarab gli array mulbdimensionali T[][] T[][][] Esempi int[] float[] Persona[]

31 Dichiarazione e inizializzazione Dichiarazione int[] ai1, ai2; float[] af1; double ad[]; Persona[][] ap; Inizializzazione int[] ai={1,2,3; double[][] ad={{1.2, 2.5, {1.0, 1.5;

32 Il caso degli array In mancanza di inizializzazione, la dichiarazione di un array non alloca spazio per gli elemenb dell array L allocazione si realizza dinamicamente tramite l operatore: new <Bpo> [<dimensione>] int[] i=new int[10]; i={10,11,12; float[][] f=new float[10][10]; Persona[] p=new Persona[30]; Se gli elemenb non sono di un Bpo primibvo, l operatore new alloca solo lo spazio per i riferimenb

33 Array di ogge]: Definizione A Person[ ] person; person = new Person[20]; person[0] = new Person( ); E definita solo la variabile person. L array vero e proprio non esiste person

34 Array di ogge]: Definizione B Person[ ] person; person = new Person[20]; person[0] = new Person( ); Ora l array è stato creato ma i diversi ogge] di Bpo Person non esistono ancora. person

35 Array di ogge]: Definizione C Person[ ] person; person = new Person[20]; person[0] = new Person( ); Un oggeto di Bpo persona è stato creato e un riferimento a tale oggeto è stato inserito in posizione 0. person Person

36 Array di ogge] vs. array di Bpi base L istruzione: float f[] = new float[10]; crea un oggeto di Bpo array di float e alloca spazio per 10 float f L istruzione: Person p[] = new Person[10]; crea un oggeto di Bpo array di Person e alloca spazio per 10 riferimenb a ogge] di Bpo Person Non viene allocato spazio per gli oggef veri e propri f

37 Loop generalizzato per collezioni Se abbiamo una collezione C di elemenb di Bpo T, possiamo iterare su di essi scrivendo for (T x: C) { //si legge for each x in C // esegui azioni su x È equivalente a scrivere for (int i = 0; i < C.size(); i++) { T x = C.get(i); // esegui azioni su x Anche gli array sono collezioni, quindi

38 Esempio per array int sum(int[] a) { int result = 0; for (int n : a) result += n; return result; n indica il generico elemento dell'array, non l'indice! Un esempio più chiaro: array di Person int sumage(person[] a) { int result = 0; for (Person p: a) result += p.getage(); return result;

39 Automobile public class Automobile { private String colore, marca, modello; private int cilindrata, numporte; private boolean accesa; public void accendi(){ accesa=true; public boolean puopartire(){ return accesa; public void dipingi(string col){ colore=col; public void trasforma(string ma, String mo){ marca=ma; modello=mo;

40 Chiamata di metodi Vengono valutab i parametri atuali Viene creato il record di a]vazione sullo stack spazio per i parametri formali spazio per le variabili locali Esecuzione del corpo Regola per il passaggio parametri I parametri il cui Bpo è uno dei Bpi semplici sono passab per copia I parametri il cui Bpo è un Bpo riferimento sono passab per riferimento

41 Passaggio parametri e reference public class Data { private int giorno; private int mese; private int anno; public void copiain(data d){ d.giorno = giorno; d.mese = mese; d.anno = anno; public static void main(string[] args){ Data d1 = new Data(3,2,1984); Data d2 = new Data(1,1,1990); d1.copiain(d2); Quando copiain termina d2 è 3/2/1984 d2 d d1 xxx xxx yyy

42 Visibilità dei nomi Le variabili locali ad un metodo (o i parametri formali) possono mascherare gli atribub della classe Soluzione: La pseudo- variabile this conbene un riferimento all oggeto corrente e può essere ublizzata per aggirare eventuali mascheramenb

43 this per aggirare mascheramenb La pseudo- variabile this conbene un riferimento all oggeto corrente e può essere ublizzata per aggirare eventuali mascheramenb public class Automobile { private String colore, marca, modello; public void trasforma(string marca, String modello){ this.marca=marca; this.modello=modello; public static void main(string[] args){ Automobile a = new Automobile(); a.trasforma("ford", "T4"); a.marca diventa "Ford", a.modello diventa "T4"

44 Un altro esempio public class Data { private int giorno; private int mese; private int anno; public void giornodopo(){ this.giorno++; if (this.giorno > 31){ this.giorno = 1; this.mese++; public static void main(string[] args){ Data d1, d2; //d1 e d2 inizializzate qui d1.giornodopo(); //In giornodopo this e lo stesso riferimento di d1 d2.giornodopo(); //In giornodopo this e lo stesso riferimento di d2

45 this per resbtuire un riferimento La pseudo- variabile this può essere ublizzata per resbtuire un riferimento all'oggeto corrente public class InsiemeDiInteri { public InsiemeDiInteri inserisci(int i){ //modifica this inserendovi l elemento i return this; //restituisce l insieme modificato InsiemeDiInteri x,y,z; //qui x e y sono inizializzati opportunamente z = (x.inserisci(2)).unione(y) //utile che inserisci restituisca un insieme

46 Metodi e atribub di classe Sintassi: stabc <definizione dell atributo o metodo> Un atributo di classe è condiviso da tu] gli ogge] della classe Si può accedere a un atributo di classe senza bisogno di creare un oggeto tramite la notazione: <nome classe>.<nome atributo> Un metodo di classe può essere invocato senza bisogno di creare un oggeto tramite la notazione: <nome classe>.<nome metodo>(<par. atuali>) Un metodo di classe può essere comunque invocato su un oggeto della classe Il nome di classe può essere omesso se non ci sono problemi di ambiguità

47 Metodi e atribub di classe: vincoli Un metodo stabc può accedere ai soli atribub e metodi stabc Un metodo convenzionale può accedere liberamente a metodi e atribub stabc

48 Metodi e atribub di classe public class Shape { static Screen screen=new Screen(); // si noti l inizializzazione static void setscreen(screen s) {screen=s; void show(screen s) {setscreen(s); public static void main(string[] args) { Shape.setScreen(new Screen()); // corretto Shape.show(); // errato, show e un metodo normale Shape s1=new Shape(), s2=new Shape(); Screen s=new Screen(); s1.setscreen(s); // corretto, si possono chiamare metodi static su oggetti // in questo punto s2.screen==s1.screen==s

49 Metodi e atribub di classe public class Disc { private static int counter; private int discnumber; Disc(){discNumber = counter++; public int getdiscnumber(){return discnumber; public static int gettotalnoofdiscs(){ return counter; public static void main(string[] args) { System.out.println(Disc.getTotalNoOfDiscs()); // 0 Disc d1 = new Disc(); Disc d2 = new Disc(); System.out.println(d1.discNumber); // 0 System.out.println(d2.discNumber); // 1 System.out.println(Disc.getDiscNumber()); // errore!!! System.out.println(Disc.getTotalNoOfDiscs()); // 2

50 ATribuB costanb È possibile definire atribub costanb tramite la notazione: final <definizione di atributo>=<valore> public class Automobile { int colore; final int BLU=0, GIALLO=1; // e altri void dipingi(int colore) {this.colore=colore; public static void main(string[] args) { Automobile a=new Automobile(); a.blu=128; // errato System.out.println("BLU="+a.BLU); // corretto

51 Overloading di metodi All interno di una stessa classe possono esservi più metodi con lo stesso nome purché si disbnguano per numero e/o Bpo dei parametri ATenzione: Il Bpo del valore resbtuito non basta a disbnguere due metodi In Java l intestazione di un metodo comprende il numero, il Bpo e la posizione dei parametri; non include il Bpo del valore resbtuito Metodi overloaded devono avere intestazioni diverse UBle per definire funzioni con codice differente ma con effe] simili su Bpi diversi

52 Esempio public class Prova { public int max(int a, int b, int c) {... public double max(double a, double b) {... public int max(int a, int b) {... Ogni volta viene chiamata la funzione "giusta public static void main(string[] args){ Prova p = new Prova(); p.max(2,3,5); p.max(2.3, 3.14); p.max(2,3);

53 Ulteriore esempio public class Automobile { private String colore, marca, modello; private int cilindrata, numporte; private boolean accesa; public Automobile(String col, String mar, String mod) { colore=col; marca=mar; modello =mod; public Automobile() { // se serve e necessario definirlo anche se e come quello di // default, perche c e un altro costruttore colore=marca=modello=null; cilindrata=numporte=0; public void accendi() {accesa=true; public boolean puopartire() {return accesa; public void dipingi(string col) {colore=col;

54 Ancora sui costruttori È possibile invocare un costruttore dall interno di un altro tramite la notazione this(<elenco di parametri attuali>); Tuttavia il this deve essere la prima istruzione. Esempio: import java.util.calendar; public Data(int g, int m, int a){ if (datavalida(g,m,a)) {// datavalida e' un metodo statico giorno = g; mese = m; anno = a; else... public Data(int g, int m) { //giorno e mese + anno corrente this(g,m,calendar.getinstance().get(calendar.year));

55 Reference e operatore == L operatore di confronto == confronta i valori dei riferimenb e non gli ogge]! Data d1 = new Data(1,12,2001); Data d2= new Data(1,12,2001); if (d1==d2) {... d1=d2; xxx false: d1 e d2 sono riferimenb a ogge] diversi (anche se hanno gli stessi valori per gli atribub) e quindi hanno indirizzi diversi d1 yyy d2 1 giorno mese anno 1 giorno 2001 mese anno d1 == d2 diventa true: l indirizzo contenuto in d1 diventa uguale all indirizzo contenuto in d1 (diventano idenbci)

56 Confronto di uguaglianza Metodo equals( ) consente di verificare se due ogge] sono uguali (nel senso che hanno lo stesso valore dello stato) per String: contengono la stessa sequenza di carateri Dice se due ogge] sono equivalenb Che cosa ciò esatamente significhi dipende dal Bpo dell'oggeto per esempio, due insiemi sono equivalenb se contengono gli stessi elemenb, indipendentemente dall'ordine di inserimento va pertanto spesso ridefinita

57 Uso String stringa1 = "Luciano ; String stringa2 = "Giovanni ; Stringa1.equals(stringa2); //false String b = new String("Ciao"); String c = new String("Ciao"); if (b.equals(c)); //true

58 Enumerazioni Si possono dichiarare Bpi enumerab, per modellare insiemi con cardinalità ridota enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE; Size s = Size.MEDIUM; Size è una vera classe: ha esatamente quatro istanze Non se ne possono costruire altre Non c è bisogno di usare equal per confrontare i valori, basta == s può essere solo null o uno dei valori enumerab A una classe enumerata si possono aggiungere costrutore, metodi e atribub PermeTono di associare qualsiasi informazione alle costanb enumerate I costrutori sono invocab solo quando vengono costruite le costanb public enum Size { SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL"); private String abbreviation; private Size(String abbreviation) { this.abbreviation=abbreviation; public String getabbreviation(){ return abbreviation;

59 Enumerazioni TuTe le classi enumerate sono eredi della classe Enum che offre i seguenb metodi // resbtuisce la costante enumerata della classe indicata che ha quel nome stabc Enum valueof(string name) // resbtuisce il nome della costante enumerata String tostring() import java.util.scanner; public class ProvaString { public static void main (String[] args) { Scanner in = new Scanner(System.in); String str = in.next(); Size siz = Enum.valueOf(Size.class, str); System.out.println(siz.toString()); Ogni classe enumerata ha un metodo che resbtuisce un array contenente tu] i valori della classe Size[] valori = Size.values();

60 Altri metodi name() resbtuisce il nome della costante enumerabva ordinal() resbtuisce la posizione (partendo da 0) compareto( ) confronta l oggeto corrente C con la variabile enumerabva passata come parametro e resbtuisce Un valore negabvo se C è minore del parametro Zero se C è uguale al parametro Un valore posibvo se C è maggiore del parametro

61 Loop generalizzato enum Color {Red, White, Blue for (Color c: Color.values()) {...

62 Esempio Un esempio più ricco: pianeb del sistema solare, associab alla propria massa e raggio; si può calcolare il peso di un oggeto su ogni pianeta public enum Planet { MERCURY (3.303e+23, e6), VENUS (4.869e+24, e6), EARTH (5.976e+24, e6), MARS (6.421e+23, e6), JUPITER (1.9e+27, e7), SATURN (5.688e +26, e7), URANUS (8.686e+25, e7), NEPTUNE (1.024e+26, e7), PLUTO (1.27e+22, 1.137e6); private final double mass; // in kilograms private final double radius; // in meters Planet(double mass, double radius) { this.mass = mass; this.radius = radius; public double mass() {return mass; public double radius() {return radius; // universal gravitational constant (m^3 kg^-1 s^-2) public static final double G = E-11; public double surfacegravity() {return G * mass / (radius * radius); public double surfaceweight(double othermass) {return othermass * surfacegravity();

63 Esempio A parbre dal peso di un corpo sulla terra, calcola e stampa il peso su tu] gli altri pianeb public static void main(string[] args) { double earthweight = Double.parseDouble(args[0]); double mass = earthweight/earth.surfacegravity(); for (Planet p : Planet.values()) System.out.printf("Your weight on %s is %f%n", p,p.surfaceweight(mass)); 63

64 Tipi riferimento per i Bpi primibvi I Bpi primibvi sono comodi, ma a volte si preferirebbe usarli come riferimento, per omogeneità Java fornisce classi predefinite Integer, Character, Float, Long, Short, Double (sono in java.lang) Un oggeto Integer conbene un int, ma viene inizializzato solo con i costrutori Il Bpo Integer è immutabile

65 Esempi Integer i; // qui i vale null! i = new Integer(5); //i e un rif. a oggetto che contiene 5 Integer x = i; // sharing: x e i stesso oggetto int y = x.intvalue(); // vecchio modo i = y; // boxing automatico y = i; // unboxing automatico i = 3; // come sopra

66 Catene puntate Un oggeto può avere atribub che sono ancora ogge] o metodi che resbtuiscono ogge]: accesso a metodi e atribub avviene a catena

67 Esempi System.out.println(); out è atributo pubblico (stabco) di classe System La classe di out fornisce il metodo println() String b = new String("Ciao"); String a = b.substring(1).substring(2); System.out.println(a); //che oggetto e a? Operatore. è associativo a sinistra: (b.substring(1)).substring(2); (System.out).println();

68 Ereditarietà È possibile stabilire una relazione sotoclasse_di ( ) fra le classi di un programma Java relazione d ordine parziale (riflessiva e transibva) public class B extends A { A classe base, o antenato, o padre, o superclasse, B classe derivata, o discendente, o figlio, o erede, o sotoclasse,

69 Relazione di ereditarietà La sotoclasse eredita tuta l implementazione (atribub e metodi) della superclasse Gli atribub e metodi della superclasse sono implicitamente definib anche nella sotoclasse (ma con alcune differenze che vedremo fra poco) Una sotoclasse può aggiungere nuovi atribub e metodi ma anche ridefinire i metodi delle sue superclassi Lasciando invariato numero e Bpo dei parametri(overriding)

70 Un semplice esempio public class Automobile { private String modello; private boolean accesa; public Automobile(String modello) { this.modello=modello; this.accesa = false; public void accendi() {accesa=true; public boolean puopartire() {return accesa; public class AutomobileElettrica extends Automobile { private boolean batteriecariche; public void ricarica() {batteriecariche=true;...

71 Gerarchia a più livelli Figure pixel width color scale() rotate() draw() perimeter area ClosedFigure OpenFigure numberofsides Polygon Ellipse Rectangle

72 Overriding Una sotoclasse può ridefinire l implementazione di un metodo L intestazione del metodo non deve cambiare L intestazione non include il Bpo resbtuito, che quindi può cambiare secondo le regole della covarianza public class AutomobileElettrica extends Automobile{ private boolean batteriecariche; public void ricarica() {batteriecariche = true;... public void accendi() {// OVERRIDING // accensione auto elettrica e diversa da quella // di auto a benzina la reimplementiamo

73 Pseudo variabile super All interno di un metodo della sotoclasse ci si può riferire ai metodi della superclasse: super.<nome metodo>(<lista par. atuali>) public class AutomobileElettrica extends Automobile{ private boolean batteriecariche; public void ricarica() {batteriecariche=true; public void accendi() {// OVERRIDING if(batteriecariche) super.accendi(); else System.out.println("Batterie scariche");

74 CostruTori I costrutori non sono ereditab perché occorre inizializzare anche i nuovi atribub Per inizializzare gli atribub private ereditab, all interno di un costrutore è possibile richiamare il costrutore della superclasse tramite: super(<lista di par. atuali>) posta come prima istruzione del costrutore Se il programmatore non chiama esplicitamente un costrutore della superclasse, il compilatore inserisce automabcamente il codice che invoca il costrutore di default della superclasse (che potrebbe non esistere!) In AutomobileEleTrica: public AutomobileElettrica(String modello) { super(modello); //qui inizializza modello e accesa batteriecariche=false;

75 Object In mancanza di un indicazione differente, una classe Java estende la classe Object La classe Object fornisce alcuni metodi tra i quali: public boolean equals(object); public String tostring(); public Object clone();

76 String Le stringhe sono immutabili (non si possono aggiungere o togliere carateri a una stringa, ma occorre costruirne una nuova) CostruTori: String() String(String s) Operatore di concatenamento + Metodi pubblici: int length() resbtuisce la lunghezza di una stringa char charat(int index) resbtuisce il char alla posizione index il primo ha posizione 0 String substring(int beginindex) (parte da 0)

77 Esempio public class ProvaString { public static void main (String[] args) { String a = new String(); //a e una ref a stringa vuota String b = new String("Ciao"); //b e una ref a Ciao : //abbreviazione: String b = Ciao ; String c = new String(b); //Ora c e copia di b String d = b; //d e b sono alias System.out.println(b + " " + c + " " + d); L assegnamento d=b è un assegnamento dei riferimenb Non si copia l oggeto!

78 InformaBon Hiding

79 Package Le classi sono raggruppate in package Un package raggruppa classi definendo regole di visibilità Se una classe C è visibile nel package A, ma è dichiarata nel package B, questa viene denotata come B.C quindi si possono usare liberamente gli stessi nomi in package diversi, senza generare confusione

80 Package Una directory che conbene una o più compilabon unit Introduce un nuovo ambito di visibilità dei nomi: unit con lo stesso nome possono stare in package diversi ConBene un insieme di classi pubbliche ed un insieme di classi private al package ( friendly ) Le classi pubbliche si possono importare in altri package

81 CompilaBon unit Un file che conbene la dichiarazione di una o più classi (o interfacce) Una sola dichiarata pubblica (public class) e avente lo stesso nome del file C è al più un solo metodo main Si può specificare il package di appartenenza (lo stesso per tute) se non si specifica, si assume un package senza nome di default

82 Visibilità delle classi public sono visibili a tu] con import del package Il file deve avere lo stesso nome al più una public class per ogni file "friendly sono visibili solo all interno dello stesso package/ compilabon unit possono stare in un file con altre classi

83 Esempio package mytools.text; public class TextComponent {...Zzz z; package mytools.text; public class yyy {... class Zzz{... package myfigs.planar; public class DrawableElement {... class xxx {... compilabon units

84 Visibilità di atribub e metodi ATribuB e metodi di una classe vengono sempre ereditab e possono essere: public sono visibili a tu] private sono visibili solo all interno della classe non sono visibili nelle sotoclassi protected sono visibili alle classi nello stesso package sono visibili anche alle sotoclassi friendly sono visibili alle classi nello stesso package sono visibili solo alle sotoclassi nello stesso package

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Il linguaggio Java e la progettazione di software object-oriented. Java 1

Il linguaggio Java e la progettazione di software object-oriented. Java 1 Il linguaggio Java e la progettazione di software object-oriented Java 1 ANTEFATTO/MOTIVAZIONE: un (cattivo) esempio Per realizzare un'applicazione gestionale, di una certa dimensione, vari programmatori

Dettagli

ANTEFATTO/MOTIVAZIONE: un (cattivo) esempio. Il linguaggio Java e la progettazione di software object-oriented. Richiami sui tipi di dati

ANTEFATTO/MOTIVAZIONE: un (cattivo) esempio. Il linguaggio Java e la progettazione di software object-oriented. Richiami sui tipi di dati ANTEFATTO/MOTIVAZIONE: un (cattivo) esempio Il linguaggio Java e la progettazione di software object-oriented Per realizzare un'applicazione gestionale, di una certa dimensione, vari programmatori sono

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Alessio Massetti Politecnico di Milano - A.A. 2011/12 - II Semestre 1 Indice I Introduzione 7 1 Che cos'è l'ingegneria del software? 7 1.1 Denizione..............................

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

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

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA DEL SOFTWARE INGEGNERIA DEL SOFTWARE JAVA Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per aver

Dettagli

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File 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

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

Dettagli

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 11 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Tipi astratti di dato e loro realizzazione in Java

Tipi astratti di dato e loro realizzazione in Java Unità 13 Tipi astratti di dato e loro realizzazione in Java Sommario Tipo astratto di dato Specifica di tipi astratti Astrazione di valori e astrazione di entità Realizzazione di tipi astratti in Java

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: LA FASE DI REALIZZAZIONE La fase di

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it

ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it Programmazione con Java ArrayList e Generics Daniela Micucci daniela.micucci@unimib.it ARRAYLIST Programmazione con Java ArrayList e Generics 2 1 La classe ArrayList Fa parte delle librerie standard di

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

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

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Programmazione AA 2012 2013

Programmazione AA 2012 2013 Programmazione ad Oggetti AA 2012 2013 Contenuti del corso Modulo A Tecniche di programmazione Docente: Prof. Michele Bugliesi Modulo B Tecniche di progetto Docente: Prof. Alessandro Roncato Contenuti

Dettagli

Esercizi e soluzioni

Esercizi e soluzioni Esercizi e soluzioni Esercizi e soluzioni Esercizi modulo 1 Esercizio 1.a) HelloWorld Digitare, salvare, compilare ed eseguire il programma HelloWorld. Consigliamo al lettore di eseguire questo esercizio

Dettagli

Introduzione al linguaggio Java

Introduzione al linguaggio Java Introduzione al linguaggio Java Corso di Gestione della Conoscenza d Impresa Prof. Giovanni Semeraro Dott. Pasquale Lops Dipartimento di Informatica Università degli Studi di Bari A.A. 2006/2007 Credits

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Programmazione Java Avanzata Concetti su Java

Programmazione Java Avanzata Concetti su Java Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

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

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case 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 La fase di realizzazione si occupa

Dettagli

Java. Programmazione orientata agli oggetti

Java. Programmazione orientata agli oggetti Java Programmazione orientata agli oggetti Nella programmazione orientata agli oggetti (OOP), un applicazione consiste di una collezione di oggetti interagenti, ognuno dei quali comprende una struttura

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

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

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi

Eccezioni. Gestione degli errori. Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. Approccio tradizionale: Problemi Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica

Dettagli

Marco Faella Classi enumerate

Marco Faella Classi enumerate Marco Faella Classi enumerate 22 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Il problema

Dettagli

un programma Java 2.1 Scrittura, compilazione ed esecuzione

un programma Java 2.1 Scrittura, compilazione ed esecuzione 2 Scrivere ed eseguire un programma Java Contenuto 2.1 Scrittura, compilazione ed esecuzione 2.2 La compilazione 2.3 L esecuzione 2.4 I package e la direttiva import 2.5 Cosa può andare male? 2.6 Esercizi

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 3 Programmazione Java Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmazione Java 1 Contenuti

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

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Classi astratte Le classi astratte sono un ibrido tra le classi concrete e le interfacce. Hanno le stesse caratteristiche di una

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

Operazioni di scrittura e lettura con periferici in linguaggio Java Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println

Dettagli

Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/2013 1 SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE

Eccezioni 1 CASO: SENTIRE E GESTIRE UN ALLARME. Prof. Enrico Denti Università di Bologna A.A. 2012/2013 1 SITUAZIONI CRITICHE IL CONCETTO DI ECCEZIONE Università degli Studi di Bologna Scuola di Ingegneria e Architettura Eccezioni Corso di Laurea in Ingegneria Informatica Anno accademico 2012/2013 Prof. ENRICO DENTI Dipartimento di Informatica Scienza

Dettagli

Iprogrammi scritti in Java sono formati da Classi che

Iprogrammi scritti in Java sono formati da Classi che Capitolo 3. Pesci e Animali Domestici Le Classi di Java Translated by Francesco Orciuoli Iprogrammi scritti in Java sono formati da Classi che rappresentano gli oggetti del mondo reale. Sebbene le persone

Dettagli

La programmazione: tradizionale vs Orientata agli Oggetti (OOP)

La programmazione: tradizionale vs Orientata agli Oggetti (OOP) La programmazione: tradizionale vs Orientata agli Oggetti (OOP) In generale, nella soluzione di un problema si individuano dati e funzionalità (azioni) potendola implementare, a livello più semplice, in

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione

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 19 Ricorsione A. Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti q Funzioni e domini definiti

Dettagli

Introduzione a.net (2)

Introduzione a.net (2) Introduzione a.net (2) Il linguaggio C# Implementazioni alternative dell'architettura.net: Rotor Mono C#: un nuovo linguaggio C# : CLR = Java : JVM C# è il linguaggio di riferimento per.net Costruito su

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

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Introduzione al linguaggio Java Cosa c è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Dove trovare informazioni?

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

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 E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124 UnicastRemoteObject Java RMI fornisce diverse classi base per definire server remoti: UnicastRemoteObject < RemoteServer < RemoteObject dove A < B significa che A è una sottoclasse di B. UnicastRemotObject

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) 1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Input e Output da Console Leggere valori in input (Scanner); Stampare valori di output (System.out.print); Modulo 2: Strutture

Dettagli

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Salerno Formazione, società operante nel settore della didattica, della formazione professionale e certificata

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Il linguaggio C# Eventi ed eccezioni

Il linguaggio C# Eventi ed eccezioni Tecniche di Programmazione avanzata Corso di Laurea Specialistica in Ingegneria Telematica Università Kore Enna A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it

Dettagli

ELEMENTI DI PROGETTAZIONE SOFTWARE

ELEMENTI DI PROGETTAZIONE SOFTWARE ELEMENTI DI PROGETTAZIONE SOFTWARE Massimiliano Redolfi Lezione 7: la fortezza Perché un sistema sia robusto ogni suo componente deve essere robusto. Una semplice metodo public class Main { public static

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Dettagli

Astrazioni sul controllo. Iteratori

Astrazioni sul controllo. Iteratori Astrazioni sul controllo Iteratori Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di un operazione che consenta cicli (iterazioni) Es.: gli

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Linguaggi di programmazione II Silvio Imbòsilim@libero.it

Linguaggi di programmazione II Silvio Imbòsilim@libero.it Linguaggi di programmazione II Silvio Imbòsilim@libero.it Obiettivo del corso Divulgare la conoscenza di aspetti piùevoluti di programmazione in linguaggio Java, di metodologie di programmazione ad oggetti

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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 Corso di

Dettagli

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 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo

Dettagli