vuoi
o PayPal
tutte le volte che vuoi
– {NORD, SUD, EST, OVEST}
I nomi dei valori di un tipo enum sono in lettere maiuscole trattandosi di costanti.
Un esempio di definizione di un tipo enum può essere:
public enum Giorno {
LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI,
VENERDI, SABATO, DOMENICA }
116. cosa sono le classi numeriche in Java? Si faccia un esempio di utilizzo
In generale quando ci troviamo a lavorare con valori numerici usiamo i tipi primitivi che
però non sono oggetti in quanto non sono istanze di classe.
Ci sono situazioni in cui è però opportuno o necessario usare oggetti in luogo dei tipi
primitivi e così in Java esistono classi wrapper per ogni tipo di dato primitivo.
Le classi wrapper numeriche sono sotto classi della classe Number e si chiamano tutte
come il primitivo, ma con la prima lettera maiuscola, ad eccezione di Integer che è i
wrapper di int.
Si usano classi numeriche in quanto molte collezioni lavorano su oggetti e non su tipi
primitivi: ad esempio Vector può contenere istanze di Integer ma non di int.
Le classi wrapper definiscono vari metodi statici per convertire valori da e verso i tipi
primitivi, da e verso le stringhe, e per la conversione tra diversi sistemi numerici (decimale,
ottale, esadecimale, binario).
LEZ 011
117. Con riferimento al Java, si introducano gli eventi
Ogni volta che l’utente di un programma scrive qualcosa, seleziona col mouse un controllo
del programma, sposta o ridimensiona una finestra ecc.., viene generato un evento. Ogni
evento ha una Sorgente (event source), che è il controllo che l’ha generato: ad esempio, il
bottone che è stato premuto dall’utente. In tale oggetto possono essere registrati uno o
più ascoltatori (event listener), cioè oggetti in grado di intraprendere le azioni necessarie a
gestire l’evento.
Ad ogni event source è possibile associare più di un event listener: in questo modo, quando
si verifica l’evento tutti gli ascoltatori vengono attivati sequenzialmente, nell’ordine in cui
sono stati registrati .
118. Con riferimento al Java, si introduca ActionListener
La ActionListener è una interfaccia che viene notificata ogni volta che si fa clic su un
pulsante,su una voce di un menù o si fa un Return su una riga di testo. L'interfaccia
ActionListener si trova nel pacchetto java.awt.event.
Ha solo un metodo: actionPerformed () che dovrà essere scritta esattamente così e
chiunche implementi ActionListener dovrà definire un metodo actionPerformed ()
dichiaratoesattamente come previsto da ActionListener.
LEZ 012
119. Si introducano le enità principali che fanno parte del Java Collections Framework
JFC offre 13 tipi diversi di collezione per uso generale, più varie altre classi specializzate per
usi particolari. In questa lezione presentiamo tre classi principali, il cui uso copre una vasta
gamma di esigenze:
ArrayList che implementa un array di riferimenti a oggetti. L'array ha dimensioni
variabili: è in grado di crescere e decrescere automaticamente secondo
necessità.Implementa inoltre l'interfaccia List (v. oltre), quindi la collezione può
essere manipolata come se fosse una lista, con inserimenti e rimozioni in qualunque
posizione (costo computazionale O(n)), e visitata mediante l'interfaccia Iterator
HashSet che implementa un insieme (set) di riferimenti a oggetti. L'insieme ha
dimensioni variabili: è in grado di crescere e decrescere automaticamente secondo
necessità.
A differenza di ArrayList, HashSet non ammette elementi duplicati: tutti gli elementi
della collezione devono essere diversi. Inoltre la posizione di un dato elemento
nella collezione non è rilevante: la collezione non mantiene l'ordinamento dei suoi
elementi.
HashSet implementa l'interfaccia Set (v. oltre), che prevede metodi per inserimento
e rimozione (costo computazionale O(1), costante), e visita mediante l'interfaccia
Iterator
HashMap che implementa una hash table di riferimenti a oggetti. La tabella hash ha
dimensioni variabili: è in grado di crescere e decrescere automaticamente secondo
necessità.
Gli elementi della collezione sono coppie <chiave, valore> dove sia la chiave che il
valore sono tipi reference (oggetti, non valori primitivi). Non sono ammessi
duplicati: ogni chiave può mappare al massimo un valore.
HashMap non mantiene l'ordinamento dei suoi elementi.
HashMap implementa l'interfaccia Map (v. oltre), che prevede metodi per
inserimento e rimozione (costo computazionale O(1) nel caso ottimale), estrazione
degli insiemi delle chiavi e dei valori, ricerca di una chiave o di un valore.
Due parametri regolano le prestazioni di una HashMap: la capacità iniziale (lo spazio
allocato inizialmente, a tabella vuota) e il fattore di carico (la percentuale massima
di spazio occupato). Ogni volta che il numero di elementi supera la capacità della
collezione per il fattore di carico, la tabella viene automaticamente riallocata
raddoppiandone la capacità.
120. Cosa è il Java Collections Framework (JCF) ?
Col termine Collections Framework in Java si denota un'architettura unificata per la
rappresentazione e la manipolazione di collezioni.
Il Java Collections Framework (JCF) contiene:
Interfacce: tipi di dato astratto che permettono di manipolare le collezioni
indipendentemente dai dettagli delle loro implementazioni.
Implementazioni: strutture dati riusabili che concretamente realizzano le
collezioni.
Algoritmi: metodi riusabili che realizzano computazioni utili, ad es. la ricerca di
un elemento in una collezione, o l'ordinamento degli elementi di una collezione secondo
determinati criteri. Gli algoritmi sono polimorfici: possono essere usati su implementazioni
diverse di una stessa interfaccia.
121. Con riferimento al Java, si introducano le "collezioni"
Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della
collezione) in una singola unità e sono usate per memorizzare, recuperare, manipolare e
comunicare dati aggregati. Tipicamente rappresentano dati che formano
naturalmente un gruppo, come ad esempio le coppie (nome, numero di
telefono) di un elenco telefonico.
Una collezione può essere ordinata o no e ammettere o meno elementi duplicati.
122. cosa è il tipo di dato astratto Mappa? A cosa serve?
Una Map (Mappa) rappresenta il tipo astratto che definisce una struttura dati in grado di
memorizzare elementi nella forma di coppie chiave-valore. Ogni elemento all’interno di
una mappa è identificato da una determinata chiave(che deve essere unica e può mappare
al massimo un valore), la chiave consente non solo di recuperare ed inserire un elemento
in una mappa, ma anche di definire un ordinamento per le implementazioni che prevedono
questa funzionalità.
LEZ 013
123. Descrivere a parole come avviene la ricerca in una lista
Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza
oppure l’elemento non è presente nella sequenza stessa. In generale una sequenza di
elementi si può realizzare come un array. E la scansione avviene usando un indice. Se la
sequenza non è ordinata a priori occorre eseguire una ricerca lineare o sequenziale. Se la
sequenza è ordinata è opportuno eseguire una ricerca binaria. L’algoritmo di ricerca lineare
(o sequenziale) in una sequenza (array) è basato sulla seguente strategia:
• Gli elementi dell’array vengono analizzati in sequenza, confrontandoli con
l’elemento da ricercare (chiave) per determinare se almeno uno degli elementi è uguale
alla chiave.
• Quando si trova un elemento uguale alla chiave la ricerca termina
La ricerca è sequenziale, nel senso che gli elementi dell’array vengono scanditi uno dopo
l’altro sequenzialmente. L’algoritmo prevede che al più tutti gli elementi dell’array vengano
confrontati con la chiave. Se l’elemento viene trovato prima di raggiungere la fine della
sequenza non sarà necessario proseguire la ricerca. L’algoritmo di ricerca lineare richiede
che al più tutti gli elementi dell’array vengano confrontati con la chiave. Questo è
necessario perché la sequenza non è ordinata. Se la sequenza su cui occorre effettuare la
ricerca è ordinata si può usare un algoritmo di ricerca molto più efficiente che cerca la
chiave sfruttando il fatto che gli elementi della sequenza sono già disposti in un dato
ordine. Esempi di sequenze ordinate: elenco telefonico, agenda, etc. In questi casi si usa un
algoritmo di ricerca binaria che è più efficiente perché riduce lo spazio di ricerca.
L’algoritmo di ricerca binaria cerca un elemento in una sequenza ordinata in maniera
crescente (o non decrescente) eseguendo i passi seguenti finché l’elemento viene trovato o
si è si è completata la ricerca senza trovarlo:
1. Confronta la chiave con l’elemento centrale della sequenza
2. Se la chiave è uguale all’elemento centrale, allora la ricerca termina positivamente
3. Se invece la chiave è maggiore dell’elemento centrale si effettua la ricerca solo sulla
sottosequenza a destra
4. Se invece la chiave è minore dell’elemento centrale dello spazio di ricerca, si effettua la
ricerca solo sulla sottosequenza a sinistra.
Per 3 o 4 si riparte dalla 1.
Se alla fine non si può più dividere la sottosequenza e non si è trovato ancora la chiave
allora il metodo terminerà comunque.
LEZ 014
124. cosa si intende per metodi generici in Java? Si faccia un esempio di utilizzo
I metodi generici sono metodi e costruttori che introducono i propri tipi parametrici. Tutto
è simile ai tipi parametrici definiti a livello di classe visti finora, con la differenza che
l'ambito di definizione del tipo parametrico (il suo scope) è limitato al metodo e non esteso
all'intera classe.
Un esempio della definizione di un metodo generico è il seguente:
class Util {
static <T> boolean confronta(Box<T> box1, Box<T> box2) {
T v1 = box1.get();
T v2 = box2.get();
return v1.equals(v2);
}
}
In cui T rappresenta il tipo del parametro e può corrispondere a qualunque tipo non
primitivo.
LEZ 016
125. quale è la clausola (parola chiave) per lanciare una eccezione in Java?
In Java per lanciare una eccezione viene utilizzata la clausola (parola chiave) throw
Quando in un metodo si verifica un errore, viene creato un oggetto (exception object) che
contiene informazioni sull'errore e sullo stato del programma.
L' exception object viene passato al run‐time system. Questo particolare meccanismo si
chiama thro