ISTITUTO STATALE DI ISTRUZIONE SUPERIORE “F. ENRIQUES” CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________ 1. Associare tramite una freccia ogni parola chiave nell’elenco alla rispettiva operazione: ( Nota Bene: Le parole chiave possono essere assegnate ad una, nessuna o più operazioni.. Una operazione può essere assegnata ad una, nessuna o più parole chiave. ) 2. 1) Import 2) Final A) Derivazione 3) Extends B) Modificatore d’accesso 4) Public C) Creazione Interfaccia 5) Comparable D) Astrazione 6) Abstract E) Istanziazione oggetto 7) Static F) Implementazione Interfaccia 8) New G) Accesso package 9) Protected 10) Implements Rispondere con una V se ritenete l’affermazione vera o con una F se la ritenete falsa : ___ Un package è una collezione di programmi Java. ___ Una classe derivata da una classe astratta ne deve implementare tutti i metodi astratti prima di poter essere istanziata. ___ L’utilizzo di un package permette il riutilizzo di codice scritto da altri. ___ Per creare una classe astratta si utilizza la parola chiave Extends. ___ Una classe astratta non può essere istanziata. ___ Per ottenere l’accesso ad un package si utilizza la parola chiave Extends seguito dal nome del package. ___ Una classe astratta non ha il metodo costruttore. ___ Se una classe è astratta significa che si può fare l’overridding ma non l’overloading. ___ L’associazione di un intero package tramite l’utilizzo del “.*” deve essere effettuata con cautela perché comporta un degrado delle prestazioni. Pag. 1 di 6 3. Dato il seguente grafico di relazione tra classi, contrassegnare le affermazioni a lato con una V se la ritenete vera o con una F se la ritenete falsa. A) B) ___ Un oggetto Studente può invocare il metodo getNome ___ C) Un oggetto Professore può modificare il valore di un attributo di Persona (Es. indirizzo) da cui eredita, solo se tale attributo è dichiarato public ___ D) Un oggetto Studente può invocare il metodo visualizza di Persona solo usando la parola chiave super ___ Un oggetto Professore, tramite l’oggetto Persona può accedere all’attributo matricola di Studente ___ E) F) 4. Un oggetto Persona può invocare il metodo aggiungiCorso. Una classe Studente non può implementare un metodo aggiungiCorso perché già presente nella classe Professore ___ Consideriamo il caso in cui la classe Persona dell’esempio precedente sia una classe astratta. Come andrebbero modificate le classi Studente e Professore? Pag. 2 di 6 5. 6. 7. Quali delle seguenti affermazioni sul casting sono vere? (Contrassegnare le vere con una croce) ___ Il casting può essere implicito, esplicito e assoluto. ___ Se a è un intero e b è un long allora l’istruzione b = a; è una operazione sicura. ___ Il casting esplicito si utilizza quando l’operazione può essere pericolosa, ovvero quando si converte un tipo di dato che occupa meno spazio in memoria verso un altro tipo di dato più grande. ___ Per fare il casting esplicito di una variabile occorre farla precedere dal tipo di destinazione racchiuso tra parentesi tonde. ___ Il casting tra due oggetti con legame di ereditarietà non è consentito. ___ E’ possibile effettuare il casting tra un tipo primitivo ed un oggetto. Quali delle seguenti affermazioni sul casting sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) ___ Le interfacce sono classi che possono contenere solamente costanti e metodi d’istanza ___ astratti. Per creare un’interfaccia si utilizza la parola chiave comparable. ___ Una interfaccia non può contenere né costruttori, né variabili statiche, né variabili di istanza, né metodi statici. ___ Se una classe implementa una interfaccia, significa che contiene al suo interno una implementazione di tutti i metodi dichiarati nell’interfaccia stessa. ___ Se una classe implementa una interfaccia, non deve avere attributi statici. ___ Il meccanismo dell’interfaccia permette di separare la fase di progettazione dalla fase di implementazione, utile soprattutto nei progetti di medie/grandi dimensioni Scrivere nel box sottostante quali sono le principali differenze tra un Array ed un Vector, non tanto a livello di nome di istruzioni, quanto alle differenze concettuali. Pag. 3 di 6 8. Inserire la parola corretta negli spazi vuoti. Ogni parola può essere usata una, più volte o mai. Eccezione – Dinamica – Oggetto – Pop – Tipo fondamentale –Associativa – Statica – Push Classe Involucro – Valore – Coda – Pila – Interfaccia – Attributo – Stringa – Chiave 1) Una ___________________ serve per racchiudere un _____________________________ 2) La struttura dati Vector è una struttura dati _____________________________________ 3) Un _______________ può essere inserito in un Vector con il metodo ________________ 4) La struttura dati Hashtable è una struttura dati ___________________________________ 5) Per ogni ____________________ esiste una ____________________________________ 6) Se chiamo il metodo ____________ di una __________ estraggo l’elemento inserito per 1° 7) La _______________________________________ si basa su una politica di accesso LIFO 8) L’Hashtable associa ad ogni ____________________ un __________________________ 9. 10. Quali delle seguenti affermazioni sono vere? (Segnare con una croce tutte le affermazioni che ritenete corrette) ___ Il metodo peek() di una Stack serve per leggere l’elemento in cima alla Pila. ___ Un oggetto Enumeration permette di scorrere gli elementi contenuti in una Hashtable. ___ Il metodo Push prende come parametro l’oggetto da inserire nella Pila (o Coda) ___ Il metodo isEmpty() di una Stack (o di una Queue) restituisce false se è vuota. ___ Il metodo MoreElement() appartiene ad un oggetto Enumeration. ___ Il metodo Pop prende come parametro l’oggetto da togliere nella Pila (o Coda) Inserire la parola corretta negli spazi lasciati vuoti: Java.util - Java.lang - statica - Java.java - Java.date - assoluta - Java.io - dinamica Java .text - Java.data - gerarchica - Java.common - Java.random - Java.default A) La libreria Random, fa parte della libreria ______________________________ B) La libreria __________________ contiene funzioni comuni del linguaggio C) L’organizzazione dei package ha una struttura______________________ per l’assegnamento dei nomi in modo da evitare eventuali collisioni in caso in cui alcuni programmatori usino lo stesso nome per differenti definizioni di classe. D) La libreria _________________________ non necessita di essere importata perché è sempre disponibile di default. E) Le classi delle strutture dati fanno parte della libreria ___________________ F) La libreria ______________________ è utilizzata per richiamate metodi necessari per la formattazione di input ed output. Pag. 4 di 6 11. Spiegare brevemente nel box sottostante cosa sono le eccezioni e come possono essere gestite (ovvero la sintassi dell’istruzione usata per la loro gestione…) 12. Quali delle seguenti affermazioni relative alle eccezioni sono vere? (Segnare con una croce tutte le affermazioni che ritenute corrette) ___ Quando viene intercettata una eccezione, il sistema risale dal metodo in cui si è verificata tale l’eccezione verso il metodo chiamante, cercando qualcuno che sia in grado di gestirla. . ___ L’eccezione ArrayIndexOutOfBoundException viene lanciata dal sistema quando si tenta di accedere ad un elemento dell’array che sta fuori della dimensione definita dell’array. ___ E’ sempre possibile trovare qualcuno che gestisce un eccezione, prima di raggiungere il metodo main(). ___ La parola chiave final viene utilizzata per indicare un blocco che deve essere eseguito in ogni caso, sia che un’eccezione sia stata intercettata, sia che non se sia stata lanciata nessuna. ___ Non tutte le eccezioni devono essere gestite. Alcune di queste quali ad esempio quelle che sono sottoclassi di Error e RuntimeException devo essere tralasciate. ___ E’ possibile definire e lanciare delle eccezioni personalizzate. Per fare ciò si utilizza l’istruzione new Exception (“ … “); Pag. 5 di 6 13. Inserire la parola corretta negli spazi vuoti. Ogni parola può essere usata una, più volte o mai. Clear( ) - True - Cardinality( ) - Size( ) - Capacity( ) - False - Delete (i, j) - Set( i, j) - Front( ) A) Quando si istanzia un oggetto BitSet i suoi elementi sono settati tutti come __________ B) Il metodo __________________ setta come ________________ gli elementi compresi tra i e j che appartengono ad un BitSet. C) Il metodo ______________ restituisce il numero di bit settati _____________ nel BitSet D) Il metodo_______________ restituisce il numero di elementi contenuti in un vettore E) Per svuotare una pila si chiama il metodo ____________________________________ F) Il metodo _______________________ restituisce la dimensione di un vettore, mentre il metodo ______________________ restituisce il numero elementi che il vettore in oggetto contiene. E) 14. Il metodo _______________________ non esiste per nessuna struttura vista a lezione. Scrivere un programma che legge due numeri interi da tastiera e ne stampa la somma. public static void main(String[] args) { } Pag. 6 di 6