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
ESTATE
cosa sono le classi numeriche in Java? Si faccia un esempio di utilizzo
Con i valori numerici usiamo quasi sempre i tipi primitivi, questi non sono
oggetti pero sono istanze di classi. In alcuni casi, però, bisogna usare oggetti
in luogo dei tipi primitivi. Quindi Java offre una classe wrapper per ogni tipo
di dato primitivo che inglobano il dato primitivo in un oggetto.
Principalmente le classi wrapper numeriche sono delle sotto classi della
classe astratta Number.
Esistono anche altre classi wrapper che non sono numeriche e sono Char e
Boolean.
Quindi le classi wrapper numeriche sono delle sotto classi di Number e
vengono chiamate con il tipo primitivo e con la prima lettera maiuscola
(tranne Integer che è wrapper di int). Le classi numeriche si usano
principalmente perché molte collezioni lavorano sugli oggetti e non sui tipi
primitivi.
Le classi wrapper definiscono anche diversi metodi statici, che convertono i
valori da e verso i tipi primitivi, da e verso le stringhe e per la conversione
tra diversi tipi numerici.
Integer
x,y;
x=12;
y=15;
System.out.println(x+y);
7. Con riferimento al Java, si introducano gli eventi
I bottoni che utilizziamo nella programmazione (i controlli), generano
degli eventi quando vengono attivati. Dobbiamo predisporre un event handler
che gestisce l'evento e lo associa al controllo. Così, ogni volta che l'utente di
un programma scrive qualcosa e seleziona con il mouse un controllo del
programma, viene generato un evento. Ogni evento ha un event source
(sorgente) che rappresenta il controllo che lo ha generato. Nell'oggetto
possono essere registrati uno o già eventi listener (ascoltatori), oggetti che
sono in grado di intraprendere le azioni necessarie a gestire l'evento.
Event Listener, viene associato ad ogni event source, così quando si verifica
l'evento tutti gli ascoltatori vengono attivati in modo sequenziale nell'ordine
in cui sono stati registrati. Poi, l'event listener può essere associati a diversi
event source, e permette di riusare comportamenti analoghi in diverse
situazioni. Ogni evento viene rappresentato da un oggetto contenete
informazioni relative all'oggetto stesso. Questo oggetto viene passato a
parametro ai metodi dell'event listener. Java definisce diversi tipi di eventi,
ai quasi corrispondono altri tipi di event listener. Il package java.awt.event
include:
- ActionEvent
- WindowEvent
- MouseEvent
- MouseMotionEvent
- ComponentEvent
- FocusEvent
- ListSelectionEvent
8. Con riferimento al Java, si introduca ActionListener
In Java esiste un'apposita classe per definire event listener, questa classe
implementa un determinato insieme di metodi (interface). L'event listener
diventa istanza di una classe che implementa l'interfaccia ActionListener,
quando la sorgente dell'evento è un bottone. L'interfaccia ActionListener si
trova nel pacchetto java.awt.event ed ha solo il metodo actionPerformed() ,
chiunque implementi ActionListern dovrà definire il metodo
actionPerformed().
LEZIONE 12
8. Si introducano le enità principali che fanno parte del Java
Collections Framework
La Java Collection Framework è un'architettura unificata che
rappresenta le collezioni ed effettua le manipolazioni su di esse. Il JCF
contiene le interfacce, le implementazioni e gli algoritmi.
Le entità di questa architettura sono ArrayList, HashSet, HashMap.
Per utilizzare ArrayList java.util.ArrayList<E> e viene implementato un
array di dimensioni variabili, ossia è in grado di crescere e decrescere
automaticamente secondo le necessità. ArrayList implementa l'interfaccia
List, la collezione viene manipolata come se fosse una lista, si possono
effettuare inserimenti o rimozioni in qualsiasi posizione usando l'Iterator. La
classe riceve il tipo dell'elemento a parametro.
La classe HashSet<E> java.util.HashSet<E> , implementiamo un insieme di
riferimenti agli oggetti. Questo insieme ha dimensioni variabili ed è in grado
di crescere e decrescere automaticamente in base alle necessità. HashSet non
ammette duplicati, e la posizione di un dato elemento non è importante, la
collezione non mantiene l'ordinamento degli elementi. HashSet implementa
anche Set e contiene i metodi per inserimento e rimozione. Include anche la
visita con l'Iteratore. HashSet usa all'interno un has table.
La classe HashMap<K,V>, java.util.HashMap<K,V> implementa hash table
di riferimenti ad oggetti. Le tabelle Hash hanno dimensioni variabili e
crescono e decrescono automaticamente secondo le necessità. La collezione
è costituita da elementi che sono coppie <chiave,valore> e sono entrambe
tipi reference. Non ammette duplicati, ogni chiave può mappare un solo
valore. HashMap non mantiene l'ordinamento, implementa l'interfaccia Map
e quindi prevede metodi per la rimozione e l'inserimento, estrazione degli
insiemi delle chiavi e dei valori, include anche la ricerca di una chiave o di
un valore. La capacità iniziale ed il fattore di carico sono i parametri che
regolano le prestazioni di un HashMap. Quando il numero di elementi
supera la capacità della collezione per il fattore di carico, la tabella viene
automaticamente riallocata raddoppiando la capacità.
9. Cosa è il Java Collections Framework (JCF) ?
La Java Collection Framework è un'architettura unificata che
rappresenta le collezioni ed effettua le manipolazioni su di esse. Il JCF
contiene le interfacce, le implementazioni e gli algoritmi. Le entità di questa
architettura sono ArrayList, HashSet, HashMap.
10. Con riferimento al Java, si introducano le "collezioni"
La collezione è un oggetto che raggruppa elementi multipli in una
singola unità. Usiamo le collezioni per memorizzare , manipolare ,
recuperare e comunicare dati aggregati. Le collezioni rappresentano dati che
formano un gruppo naturalmente. Le collezioni sono dette anche container.
11. cosa è il tipo di dato astratto Mappa? A cosa serve?
Map<K,V> è usata quando vogliamo rappresentare una collezione di
coppie <chiave, valore>. Non si ammettono i duplicati nell'insieme delle
chiavi, ogni chiave può mappare al massimo un valore. La chiave ed il valore
sono tipi reference. L'ordinamento di map si definisce come l'ordine con cui
gli iteratori ritornano gli elementi. Alcune implementazioni garantiscono
l'ordinamento naturale delle chiave o dei valori. HashMap implementa Map,
e non mantiene l'ordinamento dei suoi elementi.
LEZIONE 13
02. Descrivere a parole come avviene la ricerca in una lista
Per verificare se un elemento fa parte di una sequenza di elementi oppure
se non è presente, la scansione avviene usando un indice. Nel caso in cui la
ricerca non è ordinata a priori, bisogna eseguire una ricerca lineare o
sequenziale. Se la sequenza è ordinata, allora si esegue una ricerca binaria.
Intanto gli elementi dell'array vengono analizzati in sequenza e vengono
confrontati con l'elemento da ricercare per determinare se almeno un
elemento della sequenza è uguale alla chiave (elemento che stiamo
cercando). Quando trova un elemento uguale alla chiave, la ricerca termina.
In questo tipo di ricerca gli elementi dell'array vengono scanditi
sequenzialmente uno dopo l'altro.
Questo algoritmo richiede che al più tutti gli elementi dell'array vengano
confrontati con la chiave, perché la sequenza non è ordinata. Se la
sequenza fosse ordinata, allora si può usare un algoritmo di ricerca più
efficiente che cerca la chiave sfruttando il fatto che gli elementi della
sequenza sono già disposti in ordine.
L'algoritmo di ricerca binaria invece, cerca l'elemento in una sequenza
ordinata in modo crescente: confronta la chiave con l'elemento centrale della
sequenza, se la chiave è uguale all'elemento centrale la ricerca termina
positivamente. Se la chiave è maggiore dell'elemento centrale, si effettua la
ricerca solo sulla sottosequenza destra, se la chiave è minore dell'elemento
centrale, si effettua la ricerca solo sulla sotto sequenza sinistra. Se arriva alla
fine e non si può più
dividere in sottosequenze, allora la chiave non si è ancora trovata ed il metodo
terminerà comunque.
LEZIONE 14
06. cosa si intende per metodi generici in Java? Si faccia un esempio di
utilizzo
Con i metodi generici, i costruttori ed i metodi introducono i propri tipi
parametrici. Lo scope del metodo parametrico è limitato al metodo stesso e
non si estende all'intera classe.
Esempio:
class Util{
static <T> boolean confronta(Box<T> box1, Box<T>
box2){
T v1=box1.get();
T v2=box2.get();
return
v1.equals(v2);
}
}
T è il tipo del parametro e può corrispondere a qualsiasi tipo non primitivo.
LEZIONE 16
12.quale è la clausola (parola chiave) per lanciare una eccezione in Java?
Per lanciare le eccezioni in Java, viene usata una clausola, una parola
chiave: throw. In un metodo, quando si verifica un errore, viene creato un
oggetto detto exception object, quest'ultimo contiene informazioni
sull'errore e sullo stato del programma. Exception object viene passato al
run-time system. Questo meccanismo si chiama throwing an exception ,
ossia lanciare un eccezione.
13. come si specifica un exception handler in Java?
Un exception handler si specifica prima del blocco catch. Il run-time
system procede a ritroso nel call stack, ricerca un metodo che contenga un
blocco di codice capace di gestire l'eccezione. Si inizia la ricerca dal metodo
più recente, che è quello che ha causato l'eccezione. Poi procede lungo lo
stack (coda LIFO
- last in first out) nell'ordine inverso a quello in cui i metodi sono stati
chiamati. Il sistema, quando trova un handler appropriato , gli passa
l'eccezione. Un handler si definisce appropriato se il tipo di exception object
che ha generato dall'errore, corrisponde al tipo gestito dallo handler.
L'exception handler scelto cattura l'eccezione.
14. cosa è un exception handler?
Il run-time system procede a ritroso nel call stack per cercare un metodo
che contenga il blocco di codice capace di gestire l'eccezione. Si inizia la
ricerca dal metodo più recente, che è quello che ha causato l'eccezione. Poi
procede lungo lo stack (coda LIFO - last in first out) nell'ordine inverso a
quello in cui i metodi sono stati chiamati. Il sistema, quando trova un handler
appropriato , gli passa l'eccezione. Un handler si definisce appropriato se il
tipo di e