Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Introduzione a Java
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
}
10. Cosa sono le classi numeriche in Java? Le classi numeriche in Java sono classi che forniscono metodi e funzionalità per manipolare numeri. Ad esempio, la classe Integer
fornisce metodi per convertire un numero in una stringa, per eseguire operazioni matematiche, ecc.
Lezione 1107. 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.
08. Con riferimento al Java, si introduca ActionListener
La ActionListener è un'interfaccia in Java che viene utilizzata per gestire gli eventi generati da un componente grafico, come ad esempio un pulsante. Implementando questa interfaccia, è possibile definire le azioni da eseguire quando l'utente interagisce con il componente.
Una interfaccia che viene notificata ogni volta che si fa clic su un pulsante o su una voce di un menù. L'interfaccia ActionListener si trova nel pacchetto java.awt.event. Ha solo un metodo: actionPerformed()
. Un listener o semplicemente ascoltatore, non è altro un interfaccia che contiene metodi relativi al tipo di evento che si vuole intercettare. Una volta creata una implementazione dell'interfaccia basta installarla nel controllo grafico da cui vogliamo intercettare gli eventi. Sarà quest'ultimo infine a notificarci le azioni invocate su di esso. Ad esempio se vogliamo intercettare gli eventi generati da un JButton, cioè l'azione del click sul pulsante, bisogna implementare l'interfaccia adatta a questo tipo di evento, l'ActionListener.
Lezione 1208. Si introducano le entità principali che fanno parte del Java Collections Framework. Le soluzioni per la gestione di un insieme di oggetti in Java sono molteplici; come sempre,
A seconda delle circostanze, bisogna individuare la soluzione migliore da adottare. Tutte le classi e le interfacce che permettono di gestire gruppi di oggetti, costituiscono il Java Collection Framework. In questo articolo analizziamo le caratteristiche del framework e studiamo le principali classi concrete che permettono di gestire al meglio le nostre collezioni di oggetti.
Il Java Collection Framework è costituito dai seguenti elementi:
- le interfacce che definiscono le operazioni classiche di una generica collezione di oggetti.
- le classi concrete che implementano le interfacce utilizzando differenti tipi di strutture dati.
- gli algoritmi di ricerca e di ordinamento utilizzati dalle classi concrete.
Le interfacce possono essere suddivise in due macro-categorie:
- le Collection che sono ottimizzate per operazioni di inserimento, modifica e cancellazione di elementi all'interno di un insieme di oggetti;
- le Map che sono ottimizzate per operazioni di ricerca.
Cosa è
Il Java Collections Framework (JCF)?
Nel corso degli anni la libreria Java si è dotata di molte collezioni che sono andate a formare la Java Collection Framework (JCF). Si tratta della libreria standard dedicata alle collezioni, intese come classi deputate a contenere altri oggetti. Questa libreria contiene strutture dati di supporto come liste, array di dimensione dinamica, insiemi, mappe associative e code.
I parametri di tipo mettono in evidenza tutta la loro utilità con le collezioni. Una stessa struttura dati può essere utilizzata svariate volte con i tipi parametrici, inoltre con questi ultimi il codice dei programmi diventa più leggibile e soprattutto eventuali conflitti vengono scoperti a tempo di compilazione.
Le classi e interfacce del JCF si dividono in due gerarchie:
- La gerarchia che parte dall'interfaccia Collection:
- La gerarchia che si sviluppa a partire dall'interfaccia Map
Il Java Collection Framework è costituito dai
4. le interfacce che definiscono le operazioni classiche di una generica collezione di oggetti.
5. le classi concrete che implementano le interfacce utilizzando differenti tipi di strutture dati.
6. gli algoritmi di ricerca e di ordinamento utilizzati dalle classi concrete.
Le interfacce possono essere suddivise in due macro-categorie:
3. le Collection che sono ottimizzate per operazioni di inserimento, modifica e cancellazione di elementi all'interno di un insieme di oggetti;
le Map che sono ottimizzate per operazioni di ricerca.
10. 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à. Una collezione può essere ordinata o no e ammettere o meno elementi duplicati. L'interfaccia Collection non specifica nessuno di questi.
aspetti e infatti non ci sono classi che la implementano direttamente. Le sue sottointerfacce sono:Set
non ammette ripetizioni di elementi (la sottointerfaccia SortedSet
fornisce in aggiunta un ordine totale sui suoi elementi); List
l'utente può decidere l'ordine in cui inserire gli elementi, a cui può accedere usando l'indice della loro posizione; Queue
prevede operazioni di inserimento, rimozione e ispezione degli elementi (due metodi per ciascuna, uno dei quali lancia un'eccezione se fallisce l'operazione), l'ordinamento è tipicamente FIFO.
11. 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, la chiave consente non solo di recuperare ed inserire un elemento in una mappa, ma anche diDefinire un ordinamento per le implementazioni che prevedono questa funzionalità. All'interno del linguaggio Java una Map è definita attraverso l'interfaccia java.util.Map e il linguaggio stesso offre diverse implementazioni. HashMap, HashTable e TreeMap sono quelle utilizzate più frequentemente e le caratteristiche che le differenziano sono essenzialmente le seguenti:
- HasMap non è dotata di metodi sincronizzati ma consente elementi con valore null;
- HashTable è dotata di metodi sincronizzati ma non consente elementi con valore null;
- TreeMap è una mappa che definisce un ordinamento degli elementi basato sul valore delle chiavi.
Lezione 1302. 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 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 è completata la ricerca senza trovarlo:
- Confronta la chiave con l'elemento centrale della sequenza
- Se la chiave è uguale
All'elemento centrale, allora la ricerca termina positivamente,
Se invece la chiave è maggiore dell'elemento centrale si effettua la ricerca solo sulla sottosequenza a destra,
Se invece la chiave è minore dell'elemento centrale dello spazio di ricerca, si effettua la ricerca solo sulla sottosequenza a sinistra.
Lezione 14
Cosa si intende per metodi generici in Java? Si faccia un esempio di utilizzo
Un metodo generico è un metodo con una variabile di tipo. Lo si può definire all'interno di classi normali o generiche. Quando invocate il metodo generico non dovete specificare il tipo effettivo da usare al posto delle variabili di tipo Rectangle[] rectangles = . . .; ArrayUtil.print(rectangles);
Il compilatore deduce che il tipo effettivo da usare per E è Rectangle
Potete definire anche metodi generici che non siano statici
Potete infine definire metodi generici all'interno di classi generiche
Non potete usare
Tipi primitivi per sostituire variabili di tipo. Ad esempio, non si può usare il metodo print per stampare un array di tipo int[]
Lezione 1612. Quale è la clausola (parola chiave) per lanciare una eccezione in Java?
In Java per lanciare una eccezione viene utilizzata la clausola (parola chiave) throw
13. Come si specifica un exception handler in Java?
In Java un exception handler si specifica prima del corrispondente blocco catch. Le parti di codice che possono generare errori vengono incapsulate in un blocco try {...}; al termine di questo blocco si possono specificare gli handler delle eccezioni: blocchi catch(TipoEccezione e) {...} che prendono il controllo quando si verifica un'eccezione del loro tipo
14. Cosa è un exception handler?
Il run-time system procede a ritroso nel call stack alla ricerca di un metodo che contenga un blocco di codice in grado di gestire l'eccezione. La ricerca inizia dal metodo più recente (quello che ha usato l'eccezione) e
procede lungo lo stack (LIFO) nell'ordine inverso a quello in cui i metodi sono stati chiamati