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

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

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

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

! 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

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

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

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

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Generalizzazione di funzioni e di classi. Macro come funzioni generiche Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Struttura di un programma Java. Package. Uso dei package

Struttura di un programma Java. Package. Uso dei package 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) Struttura di un programma

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Scuola Specializzazione Istruzione Superiore Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Michele Batocchi ITC Vittorio Emanuele II Perugia A.S. 2007/2008 Introduzione

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

1 EJB e Portal Component Object http://desvino.altervista.org

1 EJB e Portal Component Object http://desvino.altervista.org 1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread 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 - lezione 14 - Thread in Java 1 Cos è un

Dettagli

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI di Luca Carnini Tesina presentata per la discussione del diploma di laurea in Ingegneria informatica Politecnico di Milano sede

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Programmazione Funzionale

Programmazione Funzionale Programmazione Funzionale LP imperativi: apparenza simile modello di progettazione = macchina fisica Famiglia dei LP imperativi = progressivo miglioramento del FORTRAN Obiezione: pesante aderenza dei LP

Dettagli

STRUTTURE DATI IN JAVA

STRUTTURE DATI IN JAVA Package java.util STRUTTURE DATI IN JAVA Molto spesso, una computazione si basa su una o più strutture dati, di vario tipo: insiemi, code, stack, tabelle, liste, alberi Data la loro importanza, Java ne

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Dichiarazioni di import: Introduzione

Dichiarazioni di import: Introduzione Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 10 Import di classi e di metodi statici Dichiarazioni di import:

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

La ricorsione. Politecnico di Milano Sede di Cremona

La ricorsione. Politecnico di Milano Sede di Cremona La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Progettazione Orientata agli Oggetti

Progettazione Orientata agli Oggetti Progettazione Orientata agli Oggetti Sviluppo del software Ciclo di vita del software: comprende tutte le attività dall analisi iniziale fino all obsolescenza (sviluppo, aggiornamento, manutenzione) Procedimento

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute

I name server DNS. DNS: Domain Name System. Esempio di DNS. DNS: Root name server. DNS: queries ripetute DNS: Domain Name System I name DNS Persone: identificatori: CF, nome, Numero di Passaporto Host e router Internet: Indirizzo IP ( bit) - usato per instradare i pacchetti nome, per es., massimotto.diiie.unisa.it

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

I class diagram. Class - names

I class diagram. Class - names I class diagram Forniscono una vista strutturale (statica) del sistema in termini di classi attributi operazioni relazioni tra classi (associazioni, generalizzazioni,...) Un class diagram rappresenta uno

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Il Tutorial per BlueJ

Il Tutorial per BlueJ Il Tutorial per BlueJ Versione 1.4 per BlueJ Versione 1.2.x Michael Kölling Mærsk Institute University of Southern Denmark Tradotto in italiano da Vito Di Viggiano, Orlando Demauro, Gianluca Leo, Gianpaolo

Dettagli

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo.

Il modello client/server consente a due processi di condividere risorse e di cooperare per il raggiungimento di un obiettivo. In una rete di ampie dimensioni, ciascuna sottorete (es. LAN, WAN) è connessa ad altre sottoreti tramite router. Internet è un insieme di reti connesse tra loro. Essenzialmente, in una rete alcune macchine

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: FUNZIONI La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: double sqrt(double) double pow (double, double) della libreria matematica, che abbiamo già usato anche senza

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Integrare le MFC con Irrlicht. Sezione 1: Creazione del progetto. by Raffaele White tiger Mancuso

Integrare le MFC con Irrlicht. Sezione 1: Creazione del progetto. by Raffaele White tiger Mancuso Integrare le MFC con Irrlicht by Raffaele White tiger Mancuso In questo topic spiegherò come integrare irrlicht in un documento singolo MFC *(1). Io ho usato il visual c++ 6 ma la procedura dovrebbe essere

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame.

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. 1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame. (a) Da quanti bit è costituito l indirizzo logico? (b) Da quanti bit

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com Corso di Informatica Medica Esercitazione 1I 2013-2014! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com 1 2 Esercizio 1 Scrivere un programma che legga due array di interi da tastiera dica

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli