ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it
|
|
- Beniamino Romano
- 8 anni fa
- Visualizzazioni
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): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
Dettagli20. 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
DettagliPer 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
DettagliModulo 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
DettagliProgrammazione 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
DettagliLe 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.
DettagliTipi 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
DettagliRealizzazione 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
DettagliLaboratorio 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
DettagliIntroduzione. 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
DettagliJava: 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
DettagliL 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,
DettagliVariabili 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
DettagliQUEUE : 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
DettagliAlgoritmi 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
DettagliUno 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
DettagliTricks & 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
DettagliUniversità 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
DettagliCorso 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
Dettaglidall 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 È
DettagliGli 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
DettagliI 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à
DettagliFunzioni 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
DettagliOrganizzazione 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
Dettagli3 - 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
DettagliFunzioni. 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
DettagliEsercizi 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
DettagliUso 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
DettagliProgrammazione 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
Dettagli12 - 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,
DettagliInizializzazione, 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
DettagliProgrammazione 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
DettagliFondamenti 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
DettagliAlgebra 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
DettagliIntroduzione 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
Dettaglicostruttori 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,
DettagliGESTIONE 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
DettagliFondamenti 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
DettagliProgrammazione 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
DettagliLaboratorio 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
DettagliStruttura 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
Dettagliesercizi 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
DettagliConcetto 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
DettagliEsercitazione 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:
Dettagli4. 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
DettagliLa 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.
DettagliProgrammazione 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");
DettagliReflection 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
DettagliParola 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
Dettagli10 - 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
DettagliSynchronized (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.
DettagliRegione 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
Dettagli13 - 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/
DettagliArchivio 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
DettagliProgrammazione 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
DettagliEsempi 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
DettagliLinguaggi 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
DettagliSupermarket 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
DettagliLinguaggio 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
DettagliAllocazione 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
DettagliAlcune 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
DettagliProf. 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
DettagliTest 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
DettagliUso 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
DettagliAPPELLO 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.
DettagliLa 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
DettagliSoluzioni 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;
DettagliProva 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
Dettagliwww.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
DettagliWG-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
DettagliNascita 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
DettagliCorso 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
DettagliIntroduzione 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
DettagliGestione 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
DettagliAlgoritmi 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
DettagliLuca 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
DettagliJava: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
DettagliOggetti 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
DettagliCorso 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.
DettagliArduino: 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
DettagliFondamenti 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
DettagliObiettivi 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
DettagliCorso 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
DettagliCorso 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
DettagliCorso 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
DettagliLezione 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
DettagliProgetto: 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
DettagliProgrammazione 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
DettagliLe 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" è
DettagliStrutture. 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
DettagliEsempio 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
DettagliProgettazione : 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
DettagliCorso 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.
Dettagli11/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
DettagliOttava 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
DettagliRelazioni 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
DettagliTipi 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
DettagliLinguaggio 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
DettagliUML 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