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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Programmazione con Java ArrayList e Generics Daniela Micucci daniela.micucci@unimib.it ARRAYLIST Programmazione con Java ArrayList e Generics 2 1

2 La classe ArrayList Fa parte delle librerie standard di Java In generale, un ArrayList assolve lo stesso compito di un array, ad eccezione del fatto che un oggetto ArrayList può cambiare lunghezza mentre il programma è in esecuzione La classe ArrayList è implementata utilizzando un array come una variabile di istanza privata Quando l array è pieno, viene creato un nuovo array di dimensione più grande e vengono spostati al suo interno gli elementi Programmazione con Java ArrayList e Generics 3 La classe ArrayList Realizza una lista di elementi (oggetti) Gli elementi possono essere aggiunti: Alla fine All inizio Tra altri elementi È possibile editare, cancellare, accedere e contrare gli elementi all interni della lista Programmazione con Java ArrayList e Generics 4 2

3 Creare ArrayList Al fine di utilizzare la classe ArrayList, occorre importarla dal package java.util L utilizzo è lo stesso di una qualsiasi altra classe, ad eccezione del fatto che va specificato il tipo base come segue: ArrayList<TipoBase> objname = new ArrayList<TipoBase>(); In fase di instanziazione, il tipo base verrà sostituito da un tipo reference (o tipo classe) che specificherà il tipo di elementi che la lista conterrà import java.util.arraylist; public class Demo01 { //Capacità iniziale pari a 10 elementi ArrayList<String> lista = new ArrayList<String>(); Programmazione con Java ArrayList e Generics 5 Creare ArrayList Può essere specificata una capacità iniziale nel momento della creazione ArrayList<TipoBase> objname = new ArrayList<TipoBase>(cap); Anche se si specifica la capacità iniziale, la lista può crescere di dimensione dinamicamente import java.util.arraylist; public class Demo01 { //Capacità iniziale pari a 20 elementi ArrayList<String> lista = new ArrayList<String>(20); Programmazione con Java ArrayList e Generics 6 3

4 Usare metodi di ArrayList Per poter inserire/eliminare/manipolare elementi di una lista occorre utilizzare i metodi che ArrayList mette a disposizione A differenza degli array che permettono solo: Uso delle [] Variabile length Aggiungere elementi: In ultima posizione public boolean add(tipobase nuovoelemento) public void add(int index, TipoBase nuovoelemento) Modificare elementi: In posizione specificata da index. 0<= index <= indice dell ultimo elemento +1 In posizione specificata da index. 0<= index <= indice dell ultimo elemento public void set(int index, TipoBase nuovoelemento) Programmazione con Java ArrayList e Generics 7 Esempio 1 import java.util.arraylist; public class Demo03 { ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); lista.add("pere"); lista.add("uova"); lista.add(2, "Insalata"); System.out.println(lista); Output: [Mele, Pere, Insalata, Uova] Programmazione con Java ArrayList e Generics 8 4

5 Esempio 2 import java.util.arraylist; public class Demo03 { ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); lista.add("pere"); lista.add("uova"); lista.add(2, "Insalata"); System.out.println(lista); lista.set(0, "Albicocche"); System.out.println(lista); Output: [Mele, Pere, Insalata, Uova] [Albicocche, Pere, Insalata, Uova] Programmazione con Java ArrayList e Generics 9 Accedere in lettura e rimozione Accedere a singoli elementi: public TipoBase get(int index) ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); String elemento = lista.get(0); In posizione specificata da index. 0<= index <= indice dell ultimo elemento Rimuovere elementi: public TipoBase remove(int index) ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); String elemento = lista.remove(0); Programmazione con Java ArrayList e Generics 10 5

6 Numero elementi in un ArrayList Il metodo size è utilizzato per determinare il numero di elementi all interno dell ArrayList public int size() import java.util.arraylist; public class Demo03 { ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); lista.add("pere"); int numelem = lista.size(); System.out.println(numElem); Output: 2 Programmazione con Java ArrayList e Generics 11 Altri metodi Rimuovere tutti gli elementi public void clear() Verificare se la collezione è vuota public boolean isempty() Verificare se la collezione contiene un certo elemento public boolean contains(object elem) consultare la documentazione! Programmazione con Java ArrayList e Generics 12 6

7 Metodo contains Si basa sull equals Esempio: Creare un ArrayList di String e un ArrayList di Persona Inserire rispettivamente la String «Ciao» e la Persona con nome Mario e età 21 Verificare se il primo array contiene la String «Ciao» e il secondo la Persona Mario con età 21 Codificare equals in Persona e riprovare Programmazione con Java ArrayList e Generics 13 Scorrere un ArrayList La classe ArrayList è un esempio di collection class (letteralmente classe collezione) Con la versione 5.0, Java ha aggiunto un nuovo tipo di loop chiamato for each o enhanced for Questo ciclo è stato progettato per ciclare tutti gli elementi di una collezione (come appunto un ArrayList) Sintassi: for (TipoBase_Array_List var : ArrayList_Obj) { //istruzioni Programmazione con Java ArrayList e Generics 14 7

8 Esempio for-each import java.util.arraylist; public class Demo03 { ArrayList<String> lista = new ArrayList<String>(); lista.add("mele"); lista.add("pere"); lista.add("uova"); lista.add(2, "Insalata"); for (String elemento : lista) { System.out.println(elemento); Output: Mele Pere Insalata Uova Programmazione con Java ArrayList e Generics 15 Esempi pratico: Insieme di stringhe Si implementi il concetto di insieme di stringhe che supporti le tipiche operazioni fra insiemi: Aggiunta di elementi Appartenenza di un elemento Unione e intersezione di un insieme rispetto ad un altro insieme, Calcolo della cardinalità Verifica se l insieme è vuoto Si realizzi un caso di test che crea l insieme {«mela», «pera», «banana» e l insieme {«papaia», «banana», «fragola» faccia l unione del primo con il secondo e verifichi che il primo insieme non è vuoto ha cardinalità 5 faccia l intersezione del primo con il secondo e verifichi che il primo insieme non è vuoto ha cardinalità 1 InsiemeDiStringhe - elementi :ArrayList<String> + InsiemeDiStringhe() + aggiungi(elemento :String) :void + appartiene(daverificare :String) :boolean + cardinalita() :int + vuoto() :boolean + uniscicon(altroinsieme :InsiemeDiStringhe) :void + intersecacon(altroinsieme :InsiemeDiStringhe) :void TestCase InsiemeDiStringheTest + testunione() :void + testintersezione() :void Programmazione con Java ArrayList e Generics 16 8

9 Esercizio pratico: todo list «interface» ToDoList + inserisciattivita(attivita) : void + rimuoviattivita(attivita) : void + sostituisciattivita(attivita, Attivita) : void + svuotalista() : voi d + duratacomplessivaattivita() : int + duratacomplessivaattivitasvolte() : int + duratacomplessivaattivitadasvolgere() : int + svolgiattivita() : void Versione array e versione ArrayList per l associazione con Attivita TestCase TestToDoListArrayList + testsostituzione() : void + testrimozione() : void + testsvolgimento() : void ToDoListArray - lista: Attivita ([]) + ToDoListArray() + inserisciattivita(attivita) : void + rimuoviattivita(attivita) : void + sostituisciattivita(attivita, Attivita) : void + svuotali sta() : void + duratacomplessivaattivita() : int + duratacomplessivaattivitasvolte() : int + duratacomplessivaattivitadasvolgere() : int + svolgiattivita() : void + tostring() : String ToDoListArrayList - lista: ArrayList<Attivita> + ToDoListArrayList() + inserisciattivita(attivita) : void + rimuoviattivita(attivita) : void + sostituisciattivita(attivita, Attivita) : void + svuotalista() : void + duratacomplessivaattivita() : int + duratacomplessivaattivitasvolte() : int + duratacomplessivaattivitadasvolgere() : int + svolgiattivita() : void + tostring() : String Attiv ita - descrizione: String - duratainminuti: int - svolta: boolean -lista -lista + Attivita(String, int) * + getdescrizione() : String * + getduratainminuti() : int + issvolta() : boolean + svolta() : void Programmazione con Java ArrayList e Generics + tostring() : String 17 + equals(object) : boolean GENERICS Programmazione con Java ArrayList e Generics 18 9

10 Classi parametriche e Generici La classe ArrayList è una classe parametrica Ha un parametro, denominato tipo base che può essere sostituito da un qualsiasi tipo reference (tipo classe) A partire dalla versione 5.0 (Tiger), Java permette di definire classi con tipi parametrici Queste classi sono chiamate classi parametriche o definizioni generiche o generici Programmazione con Java ArrayList e Generics 19 Classi parametriche e Generici La classe ArrayList è una classe parametrica Ha un parametro, denominato tipo base che può essere sostituito da un qualsiasi tipo reference (tipo classe) A partire dalla versione 5.0 (Tiger), Java permette di definire classi con tipi parametrici Queste classi sono chiamate classi parametriche o definizioni generiche o generici Esiste anche la versione non parametrica della classe ArrayList Che tipo di oggetti specifica di contenere? Come manipolo i tipi specifici? Programmazione con Java ArrayList e Generics 20 10

11 Perché i generici? Si supponga di voler definire una classe che modella una scatola in grado di contenere un oggetto che a priori non si sa cosa sia Con le conoscenze attuali: public class ScatolaVersione1 { private Object oggetto; public void inserisci(object oggetto) { this.oggetto = oggetto; public Object rimuovi(){ Object tmp = oggetto; oggetto = null; return tmp; Programmazione con Java ArrayList e Generics 21 Perché i generici? Come recuperare un oggetto inserito nella scatola per poterlo manipolare correttamente? public class DemoScatolaVersione1 { ScatolaVersione1 scatola1 = new ScatolaVersione1(); scatola1.inserisci(new Libro("Programmazione", 600)); Object elemento = scatola1.rimuovi(); if(elemento instanceof Libro){ Libro libro = (Libro)elemento; System.out.println(libro.getNumeroPagine()); Object wow! Libro CDAudio - titolo: String - autore: String - numeropagine: int - titolo: String - numerotracce: int + Libro(titolo :String, numeropagine :int) + gettitolo() : String + CDAudio(autore :String, titolo :String, numerotracce :int) + getnumeropagine() : int + setautore(autore :String) : void + settitolo(titolo :String) : void + setnumerotracce(numerotracce :int) : void Programmazione con Java ArrayList e Generics 22 11

12 Generici Classi e metodi possono specificare un tipo parametrico invece di un tipo ben specifico (classe o primitivo) Il tipo parametrico può essere sostituito con qualsiasi tipo classe Tradizionalmente viene utilizzata una singola lettera maiuscola per specificare il tipo parametrico In realtà è possibile utilizzare qualsiasi identificativo diverso dalle keyword del linguaggio Programmazione con Java ArrayList e Generics 23 Generici Una definizione di classe con tipo parametro è memorizzata in un file e compilato come qualsiasi altra classe Una volta compilata, la classe può essere usata come qualsiasi altra classe La differenza sta solo nel fatto che va specificato il tipo classe prima di poter usare la classe parametrica Ciò lo si fa istanziando la classe generica: ClasseParametrica<TipoClasseScelta> objname = new ClasseParametrica<TipoClasseScelta>(); Esempio: ArrayList<String> objname = new ArrayList<String>(); Programmazione con Java ArrayList e Generics 24 12

13 Definire una classe parametrica La classe Scatola rivista public class ScatolaVersione2 <T> { private T oggetto; public void inserisci(t elemento){ this.oggetto = elemento; public T rimuovi(){ T tmp = oggetto; oggetto = null; return tmp; 1. Il tipo parametrico è specificato all interno di <> 2. Va specificato subito dopo il nome della classe 3. Può essere utilizzato un identificativo a piacere (ad esclusione delle keyword) 1. Il tipo parametrico è utilizzato all interno della classe come un qualsiasi altro tipo (primitivo o classe) T ScatolaVersione2 - oggetto: T + ScatolaVersione2(elemento :T) + ScatolaVersione2() + inserisci(elemento :T) : void + rimuovi() : T Programmazione con Java ArrayList e Generics 25 Usare una classe parametrica public class DemoScatolaVersione2 { ScatolaVersione1 scatola1 = new ScatolaVersione1(); scatola1.inserisci(new Libro("Programmazione", 600)); Object elemento = scatola1.rimuovi(); if(elemento instanceof Libro){ Libro libro = (Libro)elemento; System.out.println(libro.getNumeroPagine()); //Con i Generics ScatolaVersione2<Libro> scatola2 = new ScatolaVersione2<Libro>(); scatola2.inserisci(new Libro("Programmazione", 600)); Libro libro = scatola2.rimuovi(); System.out.println(libro.getNumeroPagine()); Programmazione con Java ArrayList e Generics 26 13

14 Classe parametrica con costruttori public class ScatolaVersione2 <T> { private T oggetto; public ScatolaVersione2(T elemento){ inserisci(elemento); public ScatolaVersione2(){ this(null); public void inserisci(t elemento){ this.oggetto = elemento; public T rimuovi(){ T tmp = oggetto; oggetto = null; return tmp; Programmazione con Java ArrayList e Generics 27 Convenzioni di naming I nomi per itipi parametrici più usati sono: E Element Usato in maniera estensiva dal Java Collection Framework K Key N Number T Type V Value S,U,V etc. 2nd, 3rd, 4th types Programmazione con Java ArrayList e Generics 28 14

15 Pitfall #1 Il costruttore di una classe parametrica non viene specificato mediante <> public ScatolaVersione2(T elemento) public ScatolaVersione2() public ScatolaVersione2<T>(T elemento) public ScatolaVersione2<T>() Ok! Ko! anche se quando si istanzia una classe parametrica si usano le <> Libro libro = new Libro( Programmazione", 600); ScatolaVersione2<Libro> scatola1 = new ScatolaVersione2<Libro>(libro); ScatolaVersione2<Libro> scatola2 = new ScatolaVersione2<Libro>(); Programmazione con Java ArrayList e Generics 29 Pitfall #2 Il tipo base non può essere sostituito con un tipo primitivo Però Java mette a disposizione per ogni tipo primitivo la classe corrispondente (chiamata wrapper) Un wrapper di tipo primitivo è un oggetto che incapsula un attributo di tipo primitivo: Mantiene il comportamento del tipo primitivo Permette di usarlo come un oggetto Tipo primitivo boolean char byte short int long float double Classe Boolean Char Byte Short Integer Long Float Double Programmazione con Java ArrayList e Generics 30 15

16 Classi wrapper: Boxing Il processo di conversione da tipo primitivo ad oggetto della corrispondente classe wrapper Si può pensare come ad una «scatola» in cui viene inserito un valore di tipo primitivo (boxing = inscatolamento) Fatto in maniera automatica da Java Integer n = new Integer(42); Double d = new Double(9.99); Character c = new Character( z ); Integer n = 42; Double d = 9.99; Character c = z ; Programmazione con Java ArrayList e Generics 31 Classi wrapper: Unboxing Il processo di conversione inverso da oggetto a corrispondente tipo primitivo Fatto in maniera automatica da Java Esistono dei metodi opportuni Integer n = new Integer(42); int i = n; int a = new Integer(42); double d = new Double(9.99); char c = new Character( z ); Programmazione con Java ArrayList e Generics 32 16

17 Pitfall #2: esempio public class DemoScatolaVersione3 { ScatolaVersione2<Integer> scatola = new ScatolaVersione2<Integer>(); scatola.inserisci(new Integer(4)); Integer i = scatola.rimuovi(); //inboxing aoutomatico scatola.inserisci(4); //outboxing aoutomatic int x = scatola.rimuovi(); Programmazione con Java ArrayList e Generics 33 Pitfall #3 A differenza di un tipo classe che può essere utilizzato sempre all interno di una definizione di classe, il tipo parametrico ha alcune limitazioni In particolare, non può essere utilizzato con la new, i.e., per creare oggetti T object = new T(); T[] a = new T[10]; Programmazione con Java ArrayList e Generics 34 17

18 Pitfall #4 Array definiti come segue sono illegali: ScatolaVersione2<String>[] a = new ScatolaVersione2<String>[10]; Anche se sembra ragionevole, ciò non è permesso dal modo con cui Java realizza i generici Programmazione con Java ArrayList e Generics 35 Più tipi parametrici Una definizione di classe può avere un qualsiasi numero di tipi parametrici I parametri sono elencati in parentesi angolari come unico tipo parametrico, ma sono separati da una virgola T E CoppiaAssortita - primo: T - secondo: E + CoppiaAssortita(primo :T, secondo :E) + setprimo(primo :T) : void + setsecondo(secondo :E) : void + getprimo() : T + getsecondo() : E public class CoppiaAssortita<T, E> { private T primo; private E secondo; public CoppiaAssortita(T primo, E secondo){ this.primo = primo; this.secondo = secondo; public void setprimo(t primo){ this.primo = primo; public void setsecondo(e secondo){ this.secondo = secondo; public T getprimo(){ return primo; public E getsecondo(){ return secondo; Programmazione con Java ArrayList e Generics 36 18

19 Utilizzo di una classe con più tipi parametrici public class DemoCoppiaAssortita { CoppiaAssortita<Libro, Integer> ca1 = new CoppiaAssortita<Libro, Integer> (new Libro("I pilastri della terra", 1000), 9); Libro l = ca1.getprimo(); int score = ca1.getsecondo(); System.out.println("Il libro " + l.gettitolo() + " ha uno score pari a " + score); Output: Il libro I pilastri della terra ha uno score pari a 9 Programmazione con Java ArrayList e Generics 37 Pitfall #5 Non è permesso definire classi generiche che specializzano Throwable o classi discendenti Eg. Exception, Error Ad esempio: public class ProvaEccezione <T> extends Exception genererà un errore in compilazione Programmazione con Java ArrayList e Generics 38 19

20 Limitare i tipi parametrici A volte risulta utile limitare (bound) i tipi che possono essere utilizzati per attualizzare un tipo parametrico T Ad esempio, per assicurare che i tipi classe che possono essere utilizzati siano di tipo VeicoloMotorizzato public class Silos <T extends VeicoloMotorizzato> { //... public class DemoSilos { Silos<Auto> silos1 = new Silos<Auto>(); Silos<Camper> silos2 = new Silos<Camper>(); «interface» VeicoloMotorizzato + accendi() : void + spegni() : void + frena() : void + accelera() : void T:extends VeicoloMotorizzato Silos + entrata(t) : void Camper + accendi() : void + spegni() : void + frena() : void + accelera() : void Auto + accendi() : void + spegni() : void + frena() : void + accelera() : void Programmazione con Java ArrayList e Generics 39 Limitare i tipi parametrici Ogni tentativo di inserire un tipo che non specializza la classe VeicoloMotorizzato risulterà in un errore in compilazione: Silos<Libro> silos1 = new Silos<Libro>(); Un bound su un tipo può essere specificato mediante un nome di classe (o di interfaccia) Solo le classi discendenti di quella bounding possono essere specificate come tipo Programmazione con Java ArrayList e Generics 40 20

21 Limitare i tipi parametrici Una espressione di bounding può contenere una o più interfacce, ma solo una classe La sintassi è la seguente public class ProvaSimple <T extends ClassC & InterfaceA & InterfaceB> Se c è più di un tipo parametrico public class ProvaSimple <T extends ClassC & InterfaceA & InterfaceB, E extends ClassD> Programmazione con Java ArrayList e Generics 41 Interface generiche Una interface può avere uno o più tipi parametrici I dettagli e le notazioni sono analoghe a quelle viste per le classi Programmazione con Java ArrayList e Generics 42 21

22 Ereditarietà con i generici Una classe generica può essere definita come derivata di Una classe ordinaria Un altra classe generica Date due classi Auto e CityCar e una classe generica Silos, non sussiste alcuna relazione tra Silos<Auto> e Silos<CityCar> anche se CityCar è una specializzazione di Auto Programmazione con Java ArrayList e Generics 43 Ultima nota Una volta specificato il tipo classe, è possibile utilizzare oggetti istanziati a partire da quella classe e sottoclasse «interface» VeicoloMotorizzato + accendi() : void + spegni() : void + frena() : void + accelera() : void T:extends VeicoloMotorizzato Silos + entrata(t) : void Camper + accendi() : void + spegni() : void + frena() : void + accelera() : void Auto + accendi() : void + spegni() : void + frena() : void + accelera() : void CityCar public class DemoSilos { Silos<VeicoloMotorizzato> silos3 = new Silos<VeicoloMotorizzato>(); silos3.entrata(new Auto()); silos3.entrata(new CityCar()); silos3.entrata(new Camper()); Programmazione con Java ArrayList e Generics 44 22

23 Sempre inerente all ultima nota Attenzione però a import java.util.arraylist; import java.util.list; public class Prova { //Vale tutto il principio dei tipi e sottotipi //List è una superclasse di ArrayList List<Number> numbers = new ArrayList<Number>(); //2 è un Integer che è una sottolcasse di Number numbers.add(2); //Integer //3.14d è un Double che è una sottolcasse di Number numbers.add(3.14d); //Double /*ATTENZIONE pero' che * che ArrayList<Integer> NON E' UN SOTTOTIPO di ArrayList<Number> * (e tanto meno List<Integer> di ArrayList<Number>) * in quanto viene violato il principio di sostituzione come * si evince dal seguente esempio:*/ //ArrayList<Number> integers = new ArrayList<Integer>(); //NON COMPILA List<Integer> interi = new ArrayList<Integer>(); interi.add(2); List<Number> numeri = interi; // non compila! numeri.add(3.14d); Programmazione con Java ArrayList e Generics 45 Esercizio lista concatenata Attiv ita - descrizione: String - duratainminuti: int - svolta: boolean + Attivita(descrizione :String, duratainminuti :int) + getdescrizione() : String + getduratainminuti() : int + issvolta() : boolean + svolta() : void + tostring() : String + equals(altraattivita :Object) : boolean E Nodo - dato: E - next: Nodo<E> + Nodo(dato :E, next :Nodo<E>) + getdato() : E + setdato(dato :E) : void + getnext() : Nodo<E> + setnext(next :Nodo<E>) : void + tostring() : String -head 1 concretizza dato in Nodo E DemoLista + main(args :String[]) : void ListaConcatenata + ListaConcatenata() + aggiunginodo(nodo :Nodo<E>) : void + aggiunginodo(elemento :E) : void + tostring() : String Programmazione con Java ArrayList e Generics 46 23

24 Esercizio conclusivo (1/2) TestCase Test + testcentrale() : void + testcentraleequa1() : void + testcentraleequasoloprioritarie() : void Persona - nome: String - indirizzo: String - citta: String + Persona(nome :String, indirizzo :String, citta :String) + getnome() : String + getindirizzo() : String + getcitta() : String + tostring() : String -destinatario -mittente CentraleSmistaPosta - filiale: String + CentraleSmistaPosta(filiale :String) + ricevilettera(nuovalettera :Lettera) : void # posizioneletteradasmistare() : int # getlettera(posizione :int) : Lettera + smistalettera() : Lettera + tostring() : String Lettera + PRIORITARIA: int = 1 {readonly + TRADIZIONALE: int = 0 {readonly - tipospedizione: int #lettere * + Lettera(mittente :Persona, destinatario :Persona, tipospedizione :int) + Lettera(mittente :Persona, destinatario :Persona) + getmittente() : Persona + getdestinatario() : Persona + gettipospedizione() : int + tostring() : String CentraleSmistaPostaEqua - numeroprioritariesmistate: int + NUMERO_MAX_PRIORITARIE_CONSECUTIVE: int = 2 + CentraleSmistaPostaEqua(filiale :String) # posizioneletteradasmistare() : int Exception DestinatarioNonSpecificatoException + DestinatarioNonSpecificatoException() Programmazione con Java ArrayList e Generics 47 Esercizio conclusivo (2/2) Entrambi i costruttori di Lettera lanciano eccezione se il mittente è null Il costruttore di Lettera public Lettera(Persona mittente, Persona destinatario), imposta il tipo di spedizione a tradizionale L associazione tra Lettera e CentraleSmistaPosta va realizzata con un ArrayList Metodi di CentraleSmistaPosta: public void ricevilettera(lettera nuovalettera) accoda la nuova lettera protected int posizioneletteradasmistare(): restituisce la prima prioritaria se c è o la prima tradizionale protected Lettera getlettera(int posizione): restituisce la lettera alla posizione specificata senza rimuoverla dalla lista public Lettera smistalettera(): rimuove e restituisce la prima lettera prioritaria che trova. In caso di lettere solo tradizionali, rimuove la prima Metodi CentraleSmistaPostaEqua L attributo numeroprioritariesmistate mantiene il numero di prioritarie attualmente smistate protected int posizioneletteradasmistare(): ogni NUMERO_MAX_PRIORITARIE_CONSECUTIVE lettere prioritarie smistate, restituisce la posizione della prima tradizionale. Se non esistono lettere prioritarie, restituisce la posizione della prima tradizionale. Se non ha ancora smistato NUMERO_MAX_PRIORITARIE_CONSECUTIVE lettere prioritarie, restituisce la prima prioritaria Programmazione con Java ArrayList e Generics 48 24

25 Digressione: wildcard Le classi e le interfacce possono specificare tipi parametrici che non sono completamente definiti Poiché specificano un ampio insieme di tipi, sono conosciuti come wildcard, i.e., caratteri generali public void metodo(string arg1, ArrayList<?> arg2) È una stringa È un ArrayList il cui tipo base può essere di qualsiasi tipo Programmazione con Java: Collection Framework 49 Digressione: wildcard Può essere messo un bound sul wildcard in modo da specificare che il tipo deve essere un tipo antenato tipo o un tipo discendente di qualche tipo classe o interfaccia La notazione <? extends Elemento> specifica che il tipo sostituito deve essere un discendente della classe Elemento La notazione <? super Elemento> specifica che il tipo sostituito deve essere un antenato della classe Elemento Programmazione con Java: Collection Framework 50 25

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist 20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist Esamina il codice seguente, eseguilo passo passo (F11) e rispondi ai quesiti: using System; using System.Collections; class Program

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

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

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

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

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

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

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

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

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

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

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente

Dettagli

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002 Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE

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

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 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

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

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

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

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

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

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

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

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

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

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

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

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

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

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

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

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

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

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

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

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

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

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

4. Un ambiente di sviluppo per Java

4. Un ambiente di sviluppo per Java pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools

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

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

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

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array 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

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

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

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

Archivio CD. Fondamenti di Programmazione

Archivio CD. Fondamenti di Programmazione Archivio CD Una persona possiede un certo numero di CD musicali e desidera organizzare il proprio archivio tramite uno strumento software. Il programma deve permettere: - l inserimento di un nuovo CD nella

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

Esempi di esercizi d esame

Esempi di esercizi d esame Esempi di esercizi d esame Fondamenti di Informatica L-B 1 Cellulare Testo esercizio: 1.Specifiche Si richiede di realizzare una classe che implementa il funzionamento di un telefono cellulare Tale classe

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

Supermarket Progetto di Programmazione Febbraio 2010

Supermarket Progetto di Programmazione Febbraio 2010 Supermarket Progetto di Programmazione Febbraio 2010 1 Supermercato Dovete realizzare un insieme di classi e interfacce che riguardano la gestione di un supermercato. nella Sezione 2 verranno descritte

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA ES 02 - ORGANIZER Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

Dettagli

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

Dettagli

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni delle prove al calcolatore Esercizio 7 (esame del 08/01/2009) class TabellaDiNumeri{ private double[][] tabella;

Dettagli

Prova di Laboratorio di Programmazione

Prova di Laboratorio di Programmazione Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare

Dettagli

www.filoweb.it STAMPA UNIONE DI WORD

www.filoweb.it STAMPA UNIONE DI WORD STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere

Dettagli

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

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

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 E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

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

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

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

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette

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

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

Corso di Informatica (Basi di Dati)

Corso di Informatica (Basi di Dati) Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.

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

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

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A. 2008-2009. Facoltà di Ingegneria Sede di Latina

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A. 2008-2009. Facoltà di Ingegneria Sede di Latina Università di Roma La Sapienza A.A. 2008-2009 Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria Informatica ed Ingegneria dell Informazione Corso di PROGETTAZIONE DEL SOFTWARE Esercitazione sulla

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

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio

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

Lezione 4 Le code. Informatica. 26 Aprile 2016. Le pizze devono essere preparate e consegnate seguendo l ordine di arrivo degli ordini

Lezione 4 Le code. Informatica. 26 Aprile 2016. Le pizze devono essere preparate e consegnate seguendo l ordine di arrivo degli ordini Lezione 4 Le code Informatica 26 Aprile 2016 Bender il pizzaiolo robot Bender ha aperto una pizzeria da asporto con i suoi amici: Dr. Zoidberg risponde al telefono e riceve gli ordini Bender prepara le

Dettagli

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

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

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

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

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

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