fondamenti 2
|
|
Title of test:
![]() fondamenti 2 Description: uni ecampus |



| New Comment |
|---|
NO RECORDS |
|
Una interfaccia in Java: Non può mai essere instanziata. Si può sempre istanziare. Si può istanziare ma solo nel metodo main(). Non si può mai istanziare tranne che nel metodo main(). Quale dei seguenti esempi rappresenta la definizione di una interfaccia in Java?. private extends MiaInterfaccia. public MiaInterfaccia. public extends MiaInterfaccia. public interface MiaInterfaccia. Cosa è vero se ci si riferisce all'ereditarietà multipla in Java?. Non esiste in Java. Una classe può avere più superclassi. Si implementa tramite l'uso di interfacce. Una classe può avere una e una sola sottoclasse. Data una classe Java Persona e le interfaccie Cantante e Vip, quali fra le seguenti definizioni della classe CantanteVip è la più corretta?. public class CantanteVip extends Vip implements Persona, Cantante {...}. public class CantanteVip implements Persona, Cantante, Vip {...}. public class CantanteVip extends Persona implements Cantante, Vip {...}. public class CantanteVip extends Cantante implements Persona, Vip {...}. Tutti i metodi di una interfaccia: Devono essere privati. Devono essere pubblici. Devono essere implementati. Devono essere liberi. Dato un oggetto P di una classe C, a seguito dell'operazione "p=null;" si ottiene che: Lo spazio di memoria occupato dall'oggetto p viene marcato come da conservare. Lo spazio di memoria di p contiene 0. Vengono settati a null tutti gli attributi dell'oggetto p. Lo spazio di memoria occupato dall'oggetto p viene marcato come da cancellare. L'errore "error: variable p might not have been initialized" si genera se: La variabile p punta a dati non azzerati. La variabile p potrebbe non essere stata inizializzata. La variabile p non esiste. La variabile p esiste ma non ha dati diversi da zero. L'errore "java.lang.NullPointerException" si genera: Se un oggetto contiene troppi dati. Se i puntatori degli oggetti si incrociano. Quando un oggetto è stato allocato ma gli attributi sono vuoti. Se si cerca di accedere ad una variabile che è stata associata a null. Le seguenti istruzioni in Java: Persona p=null; p.nome="Mario"; provocano: Un errore perchè p non punta ad alcuna locazione di memoria. Nessun effetto perchè p non esiste in memoria. La memorizzazione della stringa "Mario" alla variabile nome di p. L'associazione di null alla variabile nome di p. Il Garbage Collector della Java Virtual Machine: Interviene quando si compila un programma. Interviene per liberare la memoria dopo che ad un oggetto viene assegnato null. Interviene quando si esegue un programma. Interviene per liberare la memoria dopo che termina un programma. In Java, quando si assegna il valore null ad un oggetto: Esso non esiste in memoria. Viene salvato come valore zero. Viene salvato come valore -1. Viene salvato come valore speciale e memorizzato nella locazione di memoria dell'oggetto. Una stringa String s che non è inizializzata: Contiene un valore nullo memorizzato in memoria. Non esiste come variabile e non può essere usata. Contiene un valore nullo ovvero non esiste in memoria. Non si può usare perchè vuota. In Java, relativamente ai valori nulli, le variabili definite come tipi complessi: Possono contenere valori nulli. Non possono contenere valori nulli. Possono contenere esclusivamente valori nulli. Possono contenere solo valori nulli. Dove si trovano le funzioni della classe Math?. Nel package java.hello. Nel package java.lang. Nel package java.Geometry. Nel package java.io. In Java un package: E' un pacchetto di strumenti per stampare. E' un pacchetto di variabili. E' uno strumento per raggruppare classi che abbiano una qualche similarità. E' uno strumento per raggruppare variabili. La sintassi gerarchica di un package Java è: dominio1.dominio2.dominio3. dominio1.Link.dominio2.Link.dominio3... dominio1/dominio2/dominio3... dominio1->dominio2->dominio3... Un package si può utilizzare nel proprio codice usando la direttiva: define. export. import. use. Le classi del package java.lang: Sono importate automaticamente. Sono inutili. Sono rilevanti. Vanno importate dall'utente. Un package "miopackage" si definisce all'inizio del codice con la dicitura: package newpackage miopackage. package miopackage. miopackage package. package new miopackage. Per importare tutte le classi al package "miopackage" si usa: import All miopackage. import miopackage.*. import miopackage. import All class in miopackage. In relazione ai package, un programmatore può: Importare solo package che non siano i suoi. Definire ma non includere un proprio package. Definire ma non usare un proprio package. Definire ed usare un proprio package. A cosa servono i modificatori di accesso?. A stabilire la correttezza di un attributo o di un metodo. A stabilire le politiche di visibilità di un attributo o di un metodo. A modificare l'accesso di un attributo ma non di un metodo. A verificare le politiche di visibilità di un attributo o di un metodo. Come si definisce in Java la politica di accesso di un metodo?. Verificandone la correttezza formale. Con l'indice di livello del metodo. Con le politiche di programmazione. Con un modificatore di accesso. A cosa serve la visibilità public?. A inibire l'accesso di un metodo alle sottoclassi. A rendere accessibile il metodo main al Sistema Operativo. A pubblicare un metodo in un package. A inibire l'accesso di un metodo alla superclasse. Per quale motivo si usa il livello di visibilità private?. Per rendere metodi e attributi inaccessibili anche dalla classe che li contiene. Per rendere attributi accessibili solo dalle sottoclassi. Per rendere metodi inaccessibili e incapsulare attributi. Per rendere metodi accessibili solo da classi dello stesso package. Per quale motivo si usa il livello di visibilità protected?. Per permettere l'accesso ad attributi e metodi anche alle sottoclassi. Per permettere l'accesso solo da classi dello stesso package. Per proteggere l'accesso di metodi e attributi da parte di tutte le altre classi. Per rendere metodi accessibili solo da classi dello stesso package. Per quale motivo si usa il livello di visibilità package?. Per permettere l'accesso solo da classi dello stesso package. Per rendere metodi inaccessibili e incapsulare attributi. Per rendere package inaccessibili. Per permettere l'accesso ad attributi e metodi anche alle sottoclassi. Nel linguaggio Java esiste la possibilità di rendere una risorsa non accessibile anche alla classe cui appartiene?. No. Si. Dipende dal contesto. Nessuna risposta è quella corretta. Quanti sono e con quale parola chiave si indicano i livelli di visibilità in Java?. Sono 4, indicati con "public", "private", "protected" e "". Sono 2, indicati con "public" e "private". Sono 3, indicati con "public", "private" e "protected". Sono 4, indicati con "public", "private", "protected" e "package". Il metodo "public boolean equals(Object obj)". Ritorna 0 se l'oggetto passato come parametro è uguale a quello corrente. Ritorna false se l'oggetto passato come parametro è uguale a quello corrente. Ritorna true se l'oggetto passato come parametro è uguale a quello corrente. Ritorna 1 se l'oggetto passato come parametro è uguale a quello corrente. La classe Object di Java fa parte di: Del package java.input. Del package java.lang. Del package java.output. Di nessun package. La funzione "public String toString()" cosa fa?. Ritorna una rappresentazione in formato float dell'oggetto. Ritorna una rappresentazione in formato stringa dell'oggetto. Ritorna una rappresentazione in formato intera dell'oggetto. Ritorna una rappresentazione in formato double dell'oggetto. L'espressione "!(obj instanceof NomeClasse)": Genera un errore se obj è una istanza della classe NomeClasse. Ritorna true se obj è una istanza della classe NomeClasse. Ritorna sempre false. Ritorna false se obj è una istanza della classe NomeClasse. Per definire un ordinamento esiste l'interfaccia Comparable. Per usarla bisogna: Definire oggetti dell'interfaccia. Implementare i metodi dell'interfaccia. Istanziare oggetti dell'interfaccia. Usare i metodi dell'interfaccia. La funzione "protected Object clone()" della classe Object: Crea e ritorna un puntatore all'oggetto. Crea e ritorna una copia degli oggetti in memoria. Crea e ritorna una copia di tutti gli Object. Crea e ritorna una copia di questo oggetto. La funzione della classe oggetto "int compareTo(Object o)": Ritorna false se l'oggetto su cui si invoca il metodo non è uguale a "o". Ritorna uno se l'oggetto su cui si invoca il metodo è uguale a "o". Ritorna uno se l'oggetto su cui si invoca il metodo è maggiore di "o". Ritorna true se l'oggetto su cui si invoca il metodo è uguale a "o". Il metodo "protected void finalize()" è chiamato: dal Garbage Collector quando esso rileva che l'oggetto corrente non è più raggiungibile. dal compilatore quando esso rileva che l'oggetto corrente non è più raggiungibile. dal Sistema Operativo quando esso rileva che l'oggetto corrente non è più raggiungibile. dall'utente quando esso rileva che l'oggetto corrente non è più raggiungibile. Il metodo Math.random(): Genera numeri double pseudocasuali fra 0 e 1. Genera numeri double pseudocasuali fra 1 e 10. Genera numeri interi pseudocasuali fra 0 e 1. Genera numeri interi pseudocasuali fra 1 e 10. E' possibile generare numeri casuali. usando esclusivamente hardware. sia usando algoritmi software che, in alcuni casi, usando hardware. usando esclusivamente codice scritto dall'utente. usando esclusivamente codice del sistema operativo. Come si possono generare numeri pseudocasuali in Java?. Si può utilizzare la classe RandomNumber. Si può utilizzare sia la classe Random che la classe Math. Si può utilizzare il metodo Math.pseudorandom(). Si può utilizzare la classe PseudoRandom. Quali sono le proprietà che deve soddisfare una sequenza di numeri pseudocasuali?. devono essere indipendenti. devono essere distribuiti uniformemente e devono essere indipendenti fra di loro. devono essere distribuiti in modo costante. devono essere generati uno di seguito all'altro nell'intervallo di definizione. Considerando l'intervallo [1,10], la sequenza di numeri {1,2,3,4,5,6,7,8,9,10} non è pseudocasuale perchè: non soddisfa la proprietà di indipendenza fra i numeri. i numeri sono interi e non double. i numeri non sono distribuiti equamente nell'intervallo. i numeri non sono sufficientemente casuali. La classe Random: genera numeri pseudocasuali solo interi. genera numeri pseudocasuali solo interi e solo nell'intervallo [0,n]. genera numeri pseudocasuali solo double. genera numeri pseudocasuali interi e double. Da cosa è generato un numero pseudocasuale?. da un algoritmo ricorsivo. da un algoritmo deterministico. da un algoritmo casuale. da un algoritmo random. Quali caratteristiche ha un numero pseudocasuale?. ha proprietà sia ricorsive che iterative. ha proprietà numeriche di tipo esponenziale. ha proprietà statistiche simili a quelle di un processo casuale. ha proprietà sia simmetriche che transitive. Quale delle seguenti frasi è errata se riferita alla classe Nodo di una Lista?. La classe Nodo rappresenta un elemento di una Lista. La classe Nodo contiene le informazioni strutturali di una Lista. La classe Nodo permette di manipolare gli elementi di una Lista. La classe Nodo contiene le informazioni topologiche di una Lista. Cosa sono le proprietà topologiche di una lista?. Le sue proprietà di memorizzazione. Le sue proprietà dimensionali. Le sue proprietà dinamiche. Le sue proprietà geometriche. Perchè si introduce il Tipo di Dato Astratto Lista?. Per migliorare la gestione della memoria di Java. Per supportare meglio gli array nella gestione della memoria. Per superare le limitazioni del tipo di dato array. Per allocare zone di memoria contigue più ampie rispetto agli array. Cos'è un oggetto della classe Lista?. Un tipo di dato base. Un oggetto dinamico. Un oggetto statico. Un tipo di dato astratto. Quale fra queste caratteristiche non è corretta se riferita alle Liste?. La sua lunghezza non è fissa. I suoi elementi occupano celle di memoria contigue. I suoi elementi non occupano celle di memoria contigue. Aggiungere o eliminare un elemento è indipendente dalla sua posizione. Quale fra le seguenti metafore è stata usata a lezione per descrivere le Liste?. La metafora delle perle e dei ganci. La metafora dell'ago e del filo. La metafora del nastro illimitato. La metafora del filo annodato. Lo schema del Nodo studiato a lezione: contiene un solo attributo. contiene due attributi, info e next. contiene due attributi, uno che punta al nodo precedente ed uno al successivo. contiene l'attributo next e un puntatore a se stesso. La definizione dell'attributo next nella classe Nodo: ne rende la definizione ricorsiva. ne rende la definizione nulla. ne rende la definizione iterativa. ne rende la definizione incongruente. Quando una classe Lista semplicemente linkata viene creata, come viene inizializzata la testa della lista?. Eliminando il nodo di testa. Azzerando il nodo di testa. Con il valore null. Con il valore -1. Un elemento nodo di una Lista semplicemente linkata: Contiene un attributo info e un riferimento al nodo precedente. Contiene un riferimento al nodo successivo. Contiene un riferimento al nodo precedente ed al successivo. Contiene un riferimento al nodo precedente. Gli attributi info e next della classe Nodo di una Lista semplicemente linkata: sono dichiarati private e sono accessibili tramite i metodi getter e setter. sono dichiarati private e non sono accessibili se non dalla classe. sono solitamente dichiarati static. sono solitamente dichiarati public. Qual è il simbolo per raffigurare graficamente che l'attributo next di un Nodo di una Lista vale null?. Un quadrato vuoto. La cifra zero. Il simbolo di insieme vuoto. Il simbolo elettrico di messa a terra. Quale fra le seguenti caratteristiche non è riferita ad una Lista semplicemente linkata?. Gli elementi che la compongono non occupano locazioni di memoria contigue. Il numero dei suoi elementi viene fissato dal costruttore. In generale, sono più efficienti nell'aggiunta di elementi rispetto agli array. Il numero dei suoi elementi può variare durante l'esecuzione del programma. Nella classe Lista semplicemente linkata: Esiste un riferimento a tutti i nodi. Esiste un riferimento alla coda. Non esiste riferimento ad alcun nodo. Esiste un riferimento alla testa. Di solito, quali attributi sono presenti nella classe Nodo di una Lista semplicemente linkata?. next e previous. head e tail. head e next. info e next. Dato il nodo n di una Lista semplicemente linkata definito come "Nodo n = new Nodo(1);" come posso collegargli un nuovo nodo contenente il valore 2?. n.addNodo(new Nodo(2));. n.setNext(new Nodo(2));. n+=new Nodo(2);. n.setNext(2);. Che differenza c'è tra la ricerca di un nodo in una Lista ordinata o non ordinata?. In media la ricerca in una lista ordinata è più efficiente. Possiamo effettuare la ricerca sono in liste ordinate. Possiamo partire dalla testa nel primo caso e dalla coda nel secondo caso. Sono identiche. Se effettuiamo la ricerca di un nodo in una Lista vuota: La ricerca non si può fare e viene generata un'eccezione di lista vuota. La ricerca va avanti e restituisce comunque un risultato. La JVM gestisce automaticamente l'eccezione rilevando che il primo nodo è null. Il compilatore genera un errore perchè rileva che il primo nodo è null. Dato un nodo di una classe Lista, l'istruzione "aux = aux.getNext()": Scorre in avanti al prossimo nodo assegnando al valore aux l'indirizzo contenuto in aux.next. E' ricorsiva e non si può eseguire. Scorre in avanti al prossimo nodo assegnando al valore aux l'indirizzo contenuto in aux. Scorre indietro al nodo precedente assegnando al valore aux l'indirizzo contenuto in aux. L'espressione "(aux!=null && aux.getInfo()<key)" con aux variabile ausiliaria Nodo di una Lista: Vale true se aux punta ad un nodo inesistente. Vale true se aux punta ad un nodo esistente (non nullo) o se il valore info contenuto nel nodo è minore di "key". Vale true se aux punta ad un nodo esistente (non nullo) e se il valore info contenuto nel nodo è minore di "key". Vale true se aux punta ad un nodo esistente (non nullo) e se l'attributo info contenuto nel nodo è maggiore di "key". Nel caso di ricerca di un nodo avente "info=3" in una Lista ordinata di interi: La ricerca visita la lista e per ogni nodo se trova il valore 3 si ferma e ritorna il riferimento al nodo. La ricerca visita la lista e per ogni nodo se trova il valore 3 continua a visitare e ritorna il riferimento al nodo. La ricerca visita tutta la lista e se trova il valore 3 in una info ritorna true e continua a visitare la lista. La ricerca visita tutta la lista e se trova il valore 3 in una info cancella il resto della lista e ritorna il riferimento al nodo. L'espressione "(aux != null && aux.getInfo() == key)" ritorna: True se il valore della variabile aux è null e se il contenuto dell'info nel nodo è diverso al valore key. True se il valore della variabile aux è non null e se il contenuto dell'info nel nodo è diverso al valore key. True se il valore della variabile aux è non null e se il contenuto dell'info nel nodo è pari al valore key. True se il valore della variabile aux è non null o se il contenuto dell'info nel nodo è diverso al valore key. La ricerca di un nodo in una Lista ordinata: E' possibile ma più complicata se la lista è ordinata. Non è possibile. E' possibile e se ordinata è più veloce. E' possibile ma dipende dal tipo di nodo. Per ricercare un valore in una lista: Si parte facendo assegnando null alla variabile temporanea aux di tipo Nodo. Si parte facendo puntare una variabile temporanea aux di tipo Nodo alla testa della lista. Si parte facendo puntare una variabile temporanea aux di tipo Nodo al centro della lista. Si parte facendo puntare una variabile temporanea aux di tipo Nodo alla coda della lista. Se una Lista contiene un solo nodo: L'eliminazione di un nodo non si può fare. L'eliminazione di un nodo genera una lista vuota e la testa sarà settata automaticamente a null. L'eliminazione di un nodo si può fare ma la lista punta sempre alla testa. L'eliminazione di un nodo genera una lista vuota e la testa deve essere settata a null. Per eliminare il primo nodo di una Lista non vuota l'istruzione corretta è: "head.info = null" che setta a null il valore del puntatore di testa. "head = head.getNext()" che setta la testa al prossimo nodo. "head = null" che setta a null il nodo di testa. "head.Next = null" che setta a null il prossimo nodo. Se una Lista contiene due nodi e si vuole eliminare l'ultimo nodo: Il nodo di testa deve essere modificato settando il campo next pari a null. Il nodo di testa deve esser modificato settando il campo next pari al nodo eliminato. Il nodo di testa va eliminato. Il nodo di testa non deve essere modificato. Dati due nodi Nodo1 e Nodo2 di una Lista, cosa fa l'istruzione "Nodo1.setNext(Nodo2.getNext())"?. Fa sì che entrambi i nodi abbiano lo stesso nodo successivo. Fa sì che il secondo nodo sia sostituito dal primo. Elimina la testa della Lista. Elimina il primo e il secondo nodo. Per eliminare l'ultimo nodo di una Lista semplicemente linkata: Basta partire dal nodo in coda. Basta eliminare il nodo di testa. Devo scorrere prima tutti i nodi della Lista partendo dalla coda. Devo scorrere prima tutti i nodi della Lista partendo dalla testa. In caso di cancellazione di un nodo intermedio di una Lista: Basta usare solo il riferimento al nodo di testa. Non serve nessuna variabile nodo ausiliaria perchè la lista rimane collegata. Serve avere un riferimento al nodo precedente ed uno al successivo per collegare la lista. Servono due riferimenti, uno alla testa ed uno alla coda della lista. La seguente istruzione "head = head.getNext();" che effetto ha su una Lista?. Si usa per inserire un elemento in testa ad una lista. Si usa per cancellare una intera lista. Si usa per cancellare il primo elemento di una lista. Si usa per duplicare l'elemento in testa ad una lista. Per eliminare un nodo da una Lista: E' necessario manipolare gli attributi next dei nodi in modo da lasciare la struttura sempre concatenata. E' necessario manipolare solo la testa della lista. Non serve considerare la posizione del nodo. E' necessario manipolare gli attributi info dei nodi in modo da lasciare la struttura sempre concatenata. In caso di Lista doppiamente linkata: E' possibile scorrere la lista solo a partire dalla testa. Non è possibile scorrere la lista in due direzioni. E' possibile scorrere la lista solo a partire dalla coda. E' possibile scorrere la lista in due direzioni. l Nodo di una Lista può contenere una stringa?. No perchè non fa parte del dominio numerico. Basta creare opportunamente l'attributo info della classe Nodo. Nella classe Nodo possono essere memorizzati solo tipi numerici. Non si può rappresentare come stringa ma solo come array di caratteri. Nell'implementazione di una Lista doppiamente linkata, quando si trova l'istruzione "head=new NodoDL(val)"?. Quando la lista è non vuota e si vuole inserire un nodo valore "val". Quando la lista è vuota e si vuole inserire un nodo con valore "val". Quando si vuole inserire un nodo con valore "val" in testa. Mai perchè è errata. In caso di Lista doppiamente linkata contenente solo nodo: Il puntatore alla coda punta a null. Il puntatore alla coda e alla testa non hanno lo stesso valore. Il puntatore alla coda e alla testa puntano a null. Il puntatore alla coda e alla testa hanno lo stesso valore. Nell'implementazione di una Lista, l'istruzione "head.getNext()==null" ritorna true se: La lista non contiene alcun nodo. La lista contiene almeno un nodo null. La lista contiene uno e un solo nodo. La lista contiene due nodi di cui il secondo punta a null. Una Lista doppiamente linkata ha il nodo di testa tale che: Ha un puntatore punta al primo nodo e uno che punta a null. Ha un puntatore punta al secondo e uno al terzo nodo. Ha un puntatore punta al primo e uno al terzo nodo. Ha un puntatore punta al primo e uno al secondo nodo. In una Lista doppiamente linkata: Si può inserire un nodo intermedio solo creando una copia dei nodi. La rimozione di un nodo intermedio è più semplice rispetto alla Lista semplicemente linkata. Non si può inserire direttamente il nodo di coda senza scorrere tutti gli elementi. Inserire un nodo solo partendo dalla testa. Una lista doppiamente linkata: E' una lista in cui ogni nodo ha un puntatore al successivo ed uno al precedente. E' una lista doppia. E' una lista in cui ogni nodo può memorizzare due valori. E' l'unico tipo di lista in cui i nodi sono collegati fra loro. In un Albero Binario Completo (ovvero ogni nodo ha due figli) al livello K ci sono: 2^(K-1) nodi. K^2 nodi. 2^K nodi. 2^(K-2) nodi. In una struttura dati Albero, un nodo senza figli si chiama: Radice. Figlio. Ramo. Foglia. In un Albero Binario: Ogni nodo ha due archi (binari). Ogni nodo ha due padri. Solo la Radice può avere due figli. Ogni nodo ha al più due figli. Che caratteristica deve avere un nodo interno di un Albero?. deve avere almeno due figli. deve avere almeno un figlio. deve avere dei fratelli. deve essere un nodo Foglia. Un Albero è una struttura dati fatta da nodi e connessioni detti rami dove: Ogni nodo è autonomo e non raggiungibile. Ogni nodo è raggiungibile da ogni altro nodo. Ogni nodo è il padre di tutti i nodi. Ogni nodo (eccetto il nodo radice) è connesso tramite un ramo ad un altro nodo, che ne è il padre, e di cui rappresenta il figlio. In una struttura dati Albero, un cammino con K nodi ha: K archi e lunghezza K-1. K-1 archi e lunghezza K. K+1 archi, ovvero ha lunghezza K+1. K-1 archi, ovvero ha lunghezza K-1. Dato un Albero, il numero di archi coinvolti in un cammino si chiama: Altezza del cammino. Lunghezza del cammino. Altezza dell'Albero. Profondità del cammino. La ricerca di nodi in un Albero implica: Uguale numero di passi rispetto ad una lista. Un numero di passi maggiore rispetto a una lista. Nessun attraversamento di nodi. Un numero di passi minore rispetto a una lista. La struttura Nodo di un Albero binario ricorda: L'implementazione degli array nelle stringhe. L'implementazione delle stringhe di caratteri. L'implementazione dei vettori negli array. L'implementazione dei Nodi della struttura dati Lista. La classe Nodo di un Albero Binario: Deve contenere due attributi info. Deve contenere almeno due attributi nodo e un attributi info. Deve contenere almeno due attributi info e un attributo nodo. Deve contenere almeno due attributi info. In un Albero Binario la visita Preorder: Visita la radice, visita ricorsivamente il sotto-albero sinistro, visita ricorsivamente il sotto-albero destro. Visita il nodo destro, visita la radice, visita ricorsivamente il sotto-albero sinistro. Visita la radice, visita ricorsivamente il sotto-albero destro, visita ricorsivamente il sotto-albero sinistro. Visita il nodo sinistro, visita la radice, visita ricorsivamente il sotto-albero destro. In un Albero Binario la visita Postorder: Visita la radice, visita ricorsivamente il sotto-albero destro, visita il sotto-albero sinistro. Visita il nodo destro, visita la radice, visita ricorsivamente il sotto-albero sinistro. Visita il ricorsivamente sotto-albero sinistro, visita ricorsivamente il sotto-albero destro, visita la radice. Visita il nodo sinistro, visita la radice, visita ricorsivamente il sotto-albero destro. Un Albero Binario si costruisce con una classe Nodo che contiene: Un intero per il figlio sinistro e un intero per il figlio destro. L'informazione, un oggetto Nodo figlio sinistro e un oggetto Nodo figlio destro. Un intero per il figlio sinistro, un intero per il figlio destro, un oggetto Nodo per l'informazione. L'informazione, un intero per il figlio sinistro e un intero per il figlio destro. In un Albero Binario: La connessione tra nodi si implementa con i numeri. La connessione tra nodi si implementa con i puntatori. La connessione tra nodi si implementa con i double. La connessione tra nodi si implementa con gli interi. In quale visita degli Alberi Binari si stampa prima l'info del nodo e poi si visitano il sotto-albero sinistro e poi il sotto-albero destro?. Nella visita Inorder. Nella visita Firstorder. Nella visita Preorder. Nella visita Postorder. Nelle visite Preoder, Inorder e Postorder di un Albero Binario, quale tecnica si usa per visitare i nodi?. Si usa la riflessione. Si usa un ciclo for. Si usa la ricorsione. Si usa l'iterazione. Il Collections Framework di Java contiene: Solo interfacce e classi astratte. Solo classi astratte. Interfacce, classi astratte e classi concrete. Solo interfacce. Le interfacce del Collections Framework di Java sono contenute: Nel package java.io. Nel package javax.swing. Nel package java.util. Nel package java.lang. Le Liste del Collections Framework di Java: Non hanno nulla a che vedere con il concetto matematico di insieme. Sono collezioni di tipi base di Java. Implementano l'intefaccia Collection. Non hanno nulla a che vedere con le collezioni. Il metodo "boolean add(Object o)" di una Collection Java: Verifica se si può aggiungere un elemento alla collezione (ritorna false se non è possibile). Aggiunge un elemento alla collezione (ritorna true se non è possibile aggiungerlo). Verifica se si può aggiungere un elemento alla collezione (ritorna true se è possibile). Aggiunge un elemento alla collezione (ritorna false se non è possibile aggiungerlo). Il metodo "boolean removeAll(Collection c)" di una Collection Java: Rimuove gli elementi della collezione passata come parametro che esistono nella collezione corrente e torna true se la collezione è stata modificata. Rimuove alcuni elementi della collezione passata come parametro che esistono nella collezione corrente e torna un boolean. Rimuove dalla collezione passata come parametro gli elementi che esistono anche nella collezione corrente e torna true se la collezione c è stata modificata. Svuota la collezione c passata come parametro. Il metodo boolean "containsAll(Collection c)" di una Collection Java: Ritorna true se tutti gli elementi della collezione c passata come parametro sono contenuti anche nella collezione corrente. Ritorna true se la collezione c passata come parametro contiene gli stessi elementi della collezione corrente. Ritorna true se la collezione c è piena. Ritorna true se la collezione c è vuota. Il metodo void "clear()" di una Collection Java: Elimina dalla collezione gli elementi nulli. Elimina la collezione dalla memoria. Elimina dalla collezione di tutti gli elementi. Elimina dalla collezione gli elementi non permanenti. Il metodo "Collection.iterator()" di una Collection Java: Ritorna una istanza di Iterator che possiamo usare la testa della collezione. Ritorna una istanza di Iterator che possiamo usare per leggere il primo elemento della collezione. Ritorna una istanza di Iterator che possiamo usare per scorrere ed eliminare gli elementi della collezione. Ritorna una istanza di Iterator che possiamo usare per rimuovere solo gli elementi finali della collezione. Quale fra le seguenti affermazioni è falsa se riferita ad un ArrayList?. La sua implentazione interna è basata su array. E' un oggetto immutabile. Eredita caratteristiche da Collection. L'aggiunta di nuovi elementi può essere molto poco efficiente. Quale fra le seguenti affermazioni è falsa se riferita ad una LinkedList?. Non è immutabile. L'accesso ai suoi elementi è meno efficiente rispetto ad un ArrayList. L'inserimento e la rimozione di elementi è più efficiente rispetto ad un ArrayList. L'inserimento e la modifica degli elementi sono in media sono poco efficienti. Quale fra le seguenti inizializzazioni di un ArrayList è errata?. ArrayList a = new ArrayList();. Collection a = new ArrayList();. ArrayList a = new ArrayList(10);. LinkedList a = new ArrayList();. Quale fra le seguenti affermazioni è falsa se riferita ad un ArrayList?. L'accesso ai suoi elementi è più efficiente rispetto ad una LinkedList. Le operazioni di inserimento sono potenzialmente poco costose. L'inserimento e la rimozione di elementi è più meno efficiente rispetto ad un ArrayList. Non è immutabile. Come si scorrono gli elementi di una Collection?. Dipende dalla sottoclasse concreta che si sta considerando. Con un oggetto di tipo Iterator. Iterando un oggetto wrapper numerico. Con un puntatore a Collection. Qual è la differenza tra le classi ArrayList e LinkedList?. ArrayList è implementata con un array, LinkedList con una lista. Sono identiche. ArrayList contiene solo oggetti di tipo array. ArrayList contiene array, LinkedList contiene liste. Come vengono utilizzate le classi wrapper dei tipi numerici nelle Liste?. A permettere alle sottoclassi del Collections Framework di contenere numeri. A permettere a un Iterator di manipolare numeri. A permettere alle sottoclassi dei Collection di leggere numeri dalla tastiera. A permettere a una Collection di wrappare oggetti. Qual è lo scopo delle classi wrapper dei tipi numerici?. A wrappare oggetti primitivi. A contenere tipi numerici primitivi. A contenere oggetti di tipo numerico. A manipolare oggetti numerici. A cosa serve l'operatore diamond di Java?. Permette di aggiungere tipi numerici in una Lista. Permette di restringere gli oggetti che si possono aggiungere a una Collection. A far funzionare il Collections Framework. Permette di utilizzare i tipi wrapper numerici. Cosa è falso se riferito all'operatore diamond di Java?. Permette di definire metodi generici. Funziona con tutti le classi Java. Permette di definire classi generiche. Funziona solo con le classi wrapper numeriche. L'operatore diamond di Java: Permette di specificare vincoli sui tipi che si possono passare ad un metodo. Permette di evitare cast impliciti. Permette di restringere i tipi utilizzabili. Permette di evitare cast espliciti. La correttezza delle operazioni vincolate con l'operatore diamond: Viene controllata dal compilatore. Viene controllata a tempo di esecuzione. Deve essere controllata dall'utente. Viene controllata dalla Java Virtual Machine. Cosa è falso se riferito alla definizione "LinkedList list = new LinkedList<>();": Demandiamo il controllo al compilatore circa gli oggetti inseriti in list. Se nella lista inseriamo un Double, a tempo di esecuzione verrà lanciata una eccezione. Restringiamo gli oggetti che si possono inserire in list alla classe Integer. Definiamo una Lista che accetta solo istanze della classe Integer. Come possiamo limitare gli oggetti generici di un metodo o di una classe?. In nessun modo. Possiamo restringerli alle classi di un certo package. Possiamo restringerli ai tipi base. Possiamo restringerli ad una certa gerarchia di classi. Il metodo "public Collection operazione(T[] a)": Ritorna una istanza della classe generica T. Per farlo funzionare dobbiamo definire la classe T nel file T.java. Ritorna un oggetto del tipo base T. Ritorna una istanza di Collection contenente oggetti di tipo T. Il metodo definito come "public T metodo()": Restringe il tipo T alla interfaccia Comparable ed estende Number. Dice che il tipo T può estendere sia Number che Comparable. Restringe il tipo T alla classe Number o alla interfaccia Comparable. Dice che il tipo T deve estendere Number ed implementare Comparable. Che cos'è la complessità computazionale?. Una misura del tempo di esecuzione di un algoritmo sun certo hardware. Una misura legata all'efficienza di un algoritmo al variare dell'input. Un modo per capire quanta memoria occupa un algoritmo. Un modo per misurare quanto è difficile un algoritmo. In termini matematico-insiemistici, un problema può essere visto come: Una funzione tra due insiemi, l'insieme degli input e quello degli output. Una funzione tra i parametri e il tipo di ritorno. Una funzione tra due insiemi, l'insieme delle istanze e quello delle soluzioni. L'algoritmo che lo implementa. Per definizione, un Algoritmo deve essere. non ambiguo. finito, non ambiguo e terminante. finito e non ambiguo. finito, efficiente e terminante. Un Algoritmo che non termina mai: è inaccettabile perchè occupa inutilmente risorse computazionali. in realtà non è un Algoritmo. è molto poco efficiente. è accettabile perchè non spreca memoria. In generale, il tempo di esecuzione di un Algoritmo: Aumenta con l'aumentare della dimensione dell'input. Dipende da molti fattori che non possono essere previsti. Dipende dall'hardware su cui gira ma è indipendente dai dati. E' sempre costante. La dipendenza di un Algoritmo tra la dimensione dell'input e il tempo di esecuzione: Dipende da come l'Algoritmo è stato implementato. Dipende solo dall'hardware. Dipende da innumerevoli fattori. Non può essere determinato. Per effettuare l'Analisi di complessità di un Algoritmo: Bisogna considerare la quantità di RAM occupata e la potenza della CPU. Bisogna tenere in considerazione l'hardware su cui gira. Non è utile considerare il suo tempo di esecuzione. Bisogna considerare il linguaggio di programmazione utilizzato. Per valutare le prestazioni di un Algoritmo: Non possiamo usare nulla. Si usa il tempo di esecuzione. Si usa la quantità di memoria occupata. Non viene mai usato il tempo di esecuzione. Per rilevare l'istante temporale in cui si verifica un evento, la classe StopWatch: Chiede il tempo alla Java Virtual Machine. Chiede il tempo al Sistema Operativo. Chiede il tempo ad una classe della libreria standard di Java. Chiede il tempo alla superclasse. Per misurare l'efficienza dei propri algoritmi possiamo: Utilizzare la classe StopWatch. Utilizzare un cronografo automatico di precisione. Utilizzare un cronometro. Utilizzare la classe Swatch. Cosa è falso se riferito alla classe StopWatch?. Posso misurare il tempo trascorso dall'avvio della Java Virtual Machine. Posso misurare l'efficienza di un algoritmo. Posso misurare il tempo trascorso tra due eventi. Posso misurare sia i tempi intermedi che il tempo totale. Cosa è falso se riferito alla funzione System.currentTimeMillis()?. Si può utilizzare per misurare il tempo CPU del Sistema Operativo. Si può utilizzare per misurare il tempo trascorso fra due eventi. Si può utilizzare per misurare l'efficienza di un algoritmo. Si può utilizzare per contare i millisecondi trascorsi dal 1 gennaio 1970. La classe StopWatch misura il tempo: Calcolando la differenza in millisecondi tra due misurazioni. Effettuando una chiamata alla Java Virtual Machine. Effettuando una chiamata al Sistema Operativo. Calcolando la differenza in secondi tra due misurazioni. Dopo aver creato una nuova istanza di StopWatch con "StopWatch t = new StopWatch();" con t.start(): Si avvia il timer della Java Virtual Machine. Si avvia il timer di Sistema. Si avvia il timer dell'algoritmo. Si avvia il timer dell'oggetto StopWatch. Il metodo getElapsedTime() della class StopWatch: Misura il tempo trascorso dall'avvio della macchina. Misura il tempo trascorso fra due eventi in secondi. Misura il tempo trascorso fra due eventi in millisecondi. Misura il tempo trascorso dalla new della classe StopWatch. La classe StopWatch vista a lezione: Serve ad implementare un orologio grafico. Serve a fermare ed avviare un algoritmo. Serve a migliorare le prestazioni di un algoritmo. Serve a misurare il tempo fra due eventi. La funzione di complessità "T(n)=3*n^2+log(n)+5" ha complessità asintotica: Lineare. Logaritmica. Quadratica. Costante. Cosa possiamo concludere sulla funzione di complessità "T(n)=n+1000"?. La complessità asintotica è lineare. La complessità può essere costante per qualche n. La complessità è costante. La complessità è sempre lineare. La funzione di complessità "T(n)=log(n)+3n+5" ha complessità asintotica: è O(log(n)). è O(n+log(n)). è O(n). è O(n^2). La funzione di complessità "T(n)=n^3+7n+2" ha complessità asintotica: Cubica. Costante. Lineare. Quadratica. Quali tipi di complessità esistono?. La complessità del caso peggiore. La complessità asintotica e quella lineare. La complessità del caso peggiore, del caso migliore e del caso medio. La complessità del caso peggiore e del caso migliore. Cosa si può concludere circa la complessità asintotica di un doppio ciclo for innestato?. La sua complessità è O(n^2). La sua complessità è sempre quadratica. Se entrambe le variabili di ciclo variano da 0 ad n, la sua complessità è n^2. La sua complessità è lineare. Cosa è falso se riferito alla complessità di un doppio ciclo for innestato?. La sua complessità è O(n^2). La sua complessità dipende dal numero di cicli. La sua complessità dipende dal numero di operazioni. La sua complessità massima è O(n^2). Cosa è falso se riferito alla complessità di un triplo ciclo for innestato?. La sua complessità massima è O(n^3). La sua complessità dipende dal numero di cicli. La sua complessità dipende dal numero di operazioni. La sua complessità è O(n^3). Come si fa ad avviare un nuovo Thread in Java?. Si usa il metodo thread(). Si usa il metodo avvia(). Si usa il metodo start(). Si usa il metodo run(). Un Thread in Java: Viene eseguito all'interno del contesto di esecuzione di un processo (o programma). Viene eseguito all'esterno del contesto di esecuzione di un processo (o programma). Viene eseguito in autonomia da un file .exe. Viene eseguito in parallelo del contesto di esecuzione di un processo (o programma). Per implementare un Thread in Java: Si estende la classe "Execute" oppure si implementa l'interfaccia "Thread". Si estende la classe "Thread" oppure si implementa l'interfaccia "Runnable". Si estende la classe "Runnable" oppure si implementa l'interfaccia "Thread". Si estende l'interfaccia "Thread" oppure si implementa l'interfaccia "Thread". All'interno di un programma Java: E' possibile eseguire più di un thread. E' possibile eseguire un solo thread. E' possibile eseguire solo thread multipli dello stesso tipo. Non è possibile eseguire un solo thread ma più di uno. Le principali fasi di un Thread sono: Creazione, esecuzione, sospensione e terminazione. Creazione, dedalock e cancellazione. Sospensione, terminazione, cancellazione. Cancellazione, creazione, esecuzione continua. Due Thread Java possono essere eseguiti contemporaneamente?. Vero ma solo se sono Thread con metodi run() vuoti. Vero, basta avviarli uno dopo l'altro. Dipende da quante CPU ha la macchina su cui vengono eseguiti. Falso non possono andare insieme in esecuzione. Se T1 è un Thread Java, l'invocazione al metodo T1.stop(): Serve a fermare l'esecuzione di T1. Causa lo stop della Java Virtual Machine. Serve a sospendere temporaneamente l'esecuzione di T1. Serve a chiudere T1 e tornare al Sistema Operativo. Il metodo suspend() della classe Thread. Blocca l'esecuzione del Thread in attesa di succesiva resume. Blocca l'esecuzione del Thread in attesa di succesiva rerun. Blocca l'esecuzione del Thread in attesa di succesiva start. Cancella l'esecuzione del Thread in attesa di succesiva resume. Nel formato DateFormat.SHORT, la data 4 Luglio del 2021 viene formattata come: 04/07/21. data di domenica, 4 luglio 2021. 4 luglio 2021. domenica 4 luglio 2021. Data l'istruzione Java "Date d = new Date(long n);". Crea una data a partire dall'anno 0 + "n" giorni. Crea una data a partire da numeri lunghi. Crea una data a partire dal 1 gennaio 1970 + "n" millisecondi. Crea una data a partire dall'anno "n". La classe SimpleDateFormat di Java: Permette di convertire stringhe in date e viceversa. Converte stringhe in intervalli temporali. Permette di usare solo date corte. Converte date semplici dal formato inglese a quello italiano. La casse Date di Java è nel package: java.calendar. java.lang. java.io. java.util. La classe Calendar di Java: Permette di ottenere l'ora di sistema. Si usa per ottenere un oggetto calendario contenente tutte le date. Permette di effettuare operazioni numeriche con le date. Aggiorna il calendario del Sistema Operativo. Il metodo "Date parse(String data)" della classe DateFormat: Scrive una rappresentazione stringa di una data in output. Converte una stringa di una data in millisecondi. Converte una rappresentazione stringa di una data in una istanza della classe Date. Converte una rappresentazione di data Date in una istanza della classe String. Il metodo "String format(Date data)" della classe DateFormat: Converte una istanza di Date in una stringa. Converte una istanza di Millisecondi in una stringa. Converte una istanza di Minuti in una stringa. Converte una istanza di Ore in una stringa. La classe Date in Java: Si usa per gestire flussi di dati temporali dallo standard input. Si usa per modificare il tempo di esecuzione. Si usa per gestire l'orologio del PC. Si usa per gestire variabili che contengono istanti temporali. La classe Permission fa parte del package: java.runnable. java.io. java.thread. java.security. Quale fra le seguenti è la definizione corretta per la classe Permission?. E' una classe astratta che serve a rappresentare le varie modalità di esecuzione delle risorse del sistema. E' una classe astratta che serve a rappresentare le varie modalità di accesso alle risorse del sistema. E' una interfaccia che serve a rappresentare le varie modalità di accesso alle risorse del sistema. E' una classe che serve a rappresentare le varie modalità di esecuzione delle risorse del sistema. La classe Java Security Manager: Consente a un'applicazione di determinare, a tempo di esecuzione, se un metodo fa parte di una classe. Consente a un'applicazione di determinare, a tempo di compilazione, se un'operazione può essere eseguita. Consente a un'applicazione di eseguire un'operazione di sicurezza. Consente a un'applicazione di determinare, prima di eseguire un'operazione, se può essere eseguita in sicurezza. L'utilizzo del Java Security Manager: Non puo' controllare l'autorizzazione per l'esecuzione di un modulo se non a run time una volta eseguito. Non puo' controllare l'esecuzione di un modulo prima dell'esecuzione. Puo' consentire o meno l'esecuzione di un modulo. Non puo' controllare l'autorizzazione per l'esecuzione di un modulo. La classe SecurityManager fa parte del package: java.util. java.lang. java.io. java.start. I metodi di controllo della classe SecurityManager: Iniziano con la parola "check". Iniziano con la parola "runnable". Iniziano con la parola "verify". Iniziano con la parola "try". I metodi della classe SecurityManager: Vengono eseguiti prima della compilazione. Vengono chiamati solo dall'utente. Vengono chiamati dietro le quinte dalle librerie Java prima di eseguire operazioni di classi potenzialmente pericolose. Vengono verificati prima della compilazione. Il metodo checkAccept() della classe SecurityManager permette di controllare: Se si è abilitati ad accettare connessioni di rete in ingresso da un particolare host e porta. Se si è abilitati a riscrivere le connessioni di rete in ingresso da un particolare host e porta. Se si è abilitati a modificare le connessioni di rete in ingresso da un particolare host e porta. Se si è abilitati a forwardare connessioni di rete in ingresso da un particolare host e porta. L'invocazione della seguente funzione "Runtime.getRuntime().exec("shutdown -s -t 0");": Blocca l'esecuzione di un thread. Esegue un comando che accende immediatamente una macchina Unix. Blocca il comando che accende immediatamente una macchina Unix. Esegue un comando che spegne immediatamente una macchina Unix. La classe Runtime in Java: E' una interfaccia che permette di eseguire programmi nativi esterni. E' una classe appartenente al package java.io e permette di eseguire programmi nativi esterni. E' una classe appartenente al package java.lang e permette di eseguire programmi nativi esterni. E' una classe appartenente al package java.util e permette di eseguire programmi nativi esterni. Che cos'è la JNI (Java Native Interface) di Java?. E' un comando che permette di ottenere informazioni sull'ambiente nativo. E' il sistema che permette di eseguore nativamente i file .class. E' un comando del Sistema Operativo che permette di eseguire codice Java. E' un sistema che permette l'integrazione bidirezionale fra Java e l'ambiente nativo. La parola chiave "native", usata nelle Java Native Interface: Definisce una sorta di metodo astratto che non verrà implementato in Java. Definisce un metodo solitamente dichiarato in una classe astratta. Definisce una sorta di metodo astratto che verrà implementato in Java. Definisce un metodo che sarà implementato in Java puro. Il metodo "Runtime.getRuntime().availableProcessors()" consente di: Ottenere informazioni sull'ambiente di esecuzione della Java Virtual Machine. Ottenere informazioni sull'ambiente di runtime. Ottenere informazioni sul Sistema Operativo di esecuzione. Ottenere informazioni sul numero di processori della macchina. Cosa permette di fare la JNI (Java Native Interface) di Java?. Permette il passaggio di parametri da Java verso altre macchine in rete. Permette di migliorare la compilazione. Permette il passaggio di parametri da Java verso l'ambiente nativo e viceversa. Permette il passaggio di parametri da Java verso l'utente finale. Cosa spinge i programmatori ad usare codice nativo?. La necessità di gestire direttamente dispositivi hardware. La necessità di avere codice proprietario. La necessità di gestire direttamente le classi Java. La necessità di gestire direttamente il processo di compilazione. L'istruzione "System.out.println(Runtime.getRuntime().availableProcessors())": Stampa true se il processore è installato sulla macchina. Stampa il numero di processori disponibili sulla macchina. Stampa il numero di processi disponibili sulla macchina. Stampa il numero seriale del processore disponibile sulla macchina. Cosa consente di fare il Garbage Collector di Java?. Liberare memoria secondaria distruggendo i dati non più utilizzati. Liberare spazio sull'hard disk. Liberare il floppy dai dati non più utilizzati. Liberare memoria heap distruggendo i dati non più utilizzati. Per accedere alle proprietà di ambiente del Sistema Operativo si utilizza: La classe Output. La classe System. La classe Runnable. La classe MainRuntime. Come viene invocato il Garbage Collector di Java?. Il programmatore non può invocarlo direttamente. Viene invocato con una chiamata al Sistema Operativo. Viene invocato mandando un messaggio alla Java Virtual Machine. Viene invocato con System.gc(). La classe System consente di gestire metodi per: La connessione tra dispositivi. Lo standard per la rappresentazione numerica binaria. Lo standard output e lo standard input. La comunicazione sulla rete Internet. La classe System appartiene al package: java.io, che va importato per usare la classe. java.lang, che non va importato per usare la classe. java.thread, che va importato per usare la classe. java.util, che va importato per usare la classe. Il metodo "static String getenv(String name)" della classe System: Permette di leggere dal Sistema Operativo il valore della variabile d'ambiente specificata come parametro. Permette di cancellare dal Sistema Operativo il valore della variabile d'ambiente specificata come parametro. Permette di scrivere nel Sistema Operativo il valore della variabile d'ambiente specificata come parametro. Permette di socrascrivere dal Sistema Operativo il valore della variabile d'ambiente specificata come parametro. Il metodo "arraycopy(Object src, int srcPos, Object dest, int destPos, int length)" della classe System consente di: Copiare un array di lunghezza length da una sorgente (src) verso una variabile di destinazione (dest). Copiare un certo numero di elementi (length) da un array sorgente (src) verso un array di destinazione (dest). Copiare un certo numero di elementi (length) da un array sorgente (src) verso un array di destinazione (dest) della stesa dimensione. Copiare un Oggetto sorgente (src) di lunghezza length verso un Oggetto destinazione (dest). La classe System estende: L'Interfaccia Thread. La classe Object. Il package java.lang. L'Interfaccia Runnable. I tag di blocco di Javadoc hanno la forma: <nometag></nometag>. /** nometag */. // nometag. @nometag. Il tool Javadoc di Java consente di: Trasformare la documentazione in una serie di file .java. Trasformare la documentazione in un minisito web in formato HTML. Trasformare la documentazione in un report in formato excel. Trasformare la documentazione in una presentazione in formato power point. I commenti nel codice Java: Si possono fare solo su più linee. Si possono fare solo su una linea. Non si possono fare. Si possono fare su una o su più linee. La specifica Javadoc consente di: Commentare il codice usando testo, tag HTML e tag di blocco. Commentare codice usando solo il linguaggio HTML. Commentare codice usando un linguaggio proprietario della libreria Javadoc. Commentare il codice usando solo il testo. Nel codice Java i commenti multilinea hanno la forma: /** COMMENTO **/. /** COMMENTO */. // COMMENTO. Per dire a Javadoc di generare, nella documentazione di una classe, un collegamento alla documentazione di un'altra classe, si usa il tag di blocco: @connect NomeClasse. @link NomeClasse. @doc NomeClasse. @goto NomeClasse. In Javadoc, per generare l'autore nella documentazione di una classe, si usa il tag di blocco: @programmer. @person. @name. @author. Il tool Javadoc di Java: Serve per consultare la documentazione del codice a partire dai suoi commenti. Serve per sovrascrivere la documentazione del codice a partire dai suoi commenti. Serve per generare la documentazione del codice a partire dai suoi commenti. Serve per salvare la documentazione del codice a partire dai suoi commenti. Usando un modello scritto nel linguaggio UML si può: Generare automaticamente il comportamento di un sistema hardware. Generare automaticamente la documentazione di un progetto software. Generare automaticamente la struttura di un sistema hardware. Generare automaticamente la struttura di un codice sorgente Java. Qual è la finalità della modellazione UML?. Specificare la struttura e il comportamento di un sistema software in maniera precisa, completa e senza ambiguità. Specificare il comportamento di un programmatore in maniera precisa, completa e senza ambiguità. Specificare la struttura di un linguaggio di programmazione in maniera precisa, completa e senza ambiguità. Specificare la struttura e il comportamento di un sistema scrivendo in maniera precisa, completa e senza ambiguità il suo codice sorgente. A cosa serve il linguaggio UML?. Ad effettuare la modellazione di un sistema software. Ad effettuare la programmazione in codice C++, Java o PHP. Ad effettuare la modellazione del codice. Ad effettuare la modellazione della sintassi del codice. Cosa vuol dire l'acronimo UML?. Unique Model Language. Unique Modeling Language. User Model Language. Unified Modeling Language. Con quale scopo si modella un sistema informativo usando il linguaggio UML?. Solo al fine di documentare e testare il codice. Al fine di documentare il codice, poi si usa un linguaggio di programmazione. Al fine di guidare tutte le fasi di un progetto, dalla progettazione all'implementazione. Esclusivamente al fine di documentare il codice preesistente. A cosa servono i Diagrammi UML?. Sono dei Diagrammi per rappresentare solo il comportamento dell'applicazione. Sono dei Diagrammi per rappresentare dei vari aspetti dell'applicazione. Sono dei Diagrammi che servono a programmare in Java. Sono dei Diagrammi per rappresentare il codice sorgente. Quale fra le seguenti risposte descrive meglio gli aspetti che si possono modellare con il linguaggio UML?. Astrazione, Incapsulamento, Ereditarietà e Polimorfismo. Aspetti legati al comportamento di un sistema che niente hanno a che fare col codice. Astrazione, Incapsulamento ed Ereditarietà. Gli aspetti più semplici di un linguaggio di programmazione ad oggetti. UML è indipendente dal linguaggio di programmazione?. Vero. Falso. Falso, tranne in alcuni casi. Vero, tranne in alcuni casi. Le classi in un Diagramma delle Classi di UML: Contengono informazioni temporali. Rappresentano gli stati del sistema. Si rappresentano con dei rettangoli. Si rappresentano con delle ellissi. In UML il Diagramma degli Oggetti contiene: Le interazioni fra le classi e gli oggetti esterni. Le possibili classi del sistema. Le possibili istanze delle classi del sistema. Le classi e le interfacce da implementare per il sistema. In UML il Diagramma delle Classi rappresenta: I componenti di interfaccia tra le classi. I componenti software di una applicazione. Solo le classi astratte. Solo le classi implementate. In UML a cosa servono i Diagrammi dei Casi d'Uso?. A rappresentare le interazioni fra le classi del sistema. A testare gli oggetti e gli utenti del sistema da implementare. Ad effettuare un test delle istanze del sistema. A rappresentare le interazioni fra gli utenti e le funzionalità dl sistema. Nei Diagrammi dei Casi d'Uso di UML, a cosa serve l'opzione "<<extends>>"?. Serve a specificare che una funzione richiama sicuramente un'altra funzione. Serve a specificare che una funzione estende una classe del sistema modellato. Serve a specificare che una funzione, per essere eseguita, deve prima invocare un'altra funzione. Serve a specificare che una funzione può essere richiamata da un'altra funzione. Nei Diagrammi di Casi d'Uso, a cosa serve l'opzione "<<includes>>"?. Serve ad evitare che, prima che una funzione possa essere eseguita, sia eseguita la funzione inclusa. Serve ad imporre che, prima che una funzione possa essere eseguita, deve eseguita prima la funzione inclusa. Serve a ricordare che, prima che una funzione possa essere eseguita, si può eseguire opzionalmente prima la funzione inclusa. Serve a suggerire che, prima che una funzione possa essere eseguita, potrebbe dover essere eseguita prima la funzione inclusa. Quale delle seguenti affermazioni è falsa se riferita ad una classe in un Diagramma delle Classi di UML?. E' possibile indicare soltanto il nome della classe. E' possibile indicare solo nome e gli attributi della classe. E' possibile indicare anche solo gli attributi, senza specificare un nome. E' possibile indicare anche solo nome e metodi della classe. Nel Diagramma delle Classi di UML e' possibile rappresentare interfacce?. No, perchè esistono solo in Java e non in UML. No perchè sarebbero confuse con le classi. No, perchè in UML non esiste il concetto di interfaccia. Si, e può avere la forma di un elemento circolare. Qual è la differenza principale tra Diagrammi di Collaborazione e di Sequenza UML?. La sequenza temporale dei messaggi è meno evidente che nel Diagramma di Collaborazione mentre sono più evidenti i legami tra gli oggetti. La sequenza spaziale dei messaggi è meno evidente che nel Diagramma di Sequenza mentre sono più evidenti i legami tra gli oggetti. La sequenza temporale dei messaggi è più evidente che nel Diagramma di Sequenza mentre non vi sono rappresentati gli oggetti. La sequenza temporale dei messaggi è più evidente che nel Diagramma di Collaborazione mentre sono meno evidenti i legami tra gli oggetti. Un Diagramma degli Stati UML di un oggetto di tipo Lampadina potrebbe contenere: on, off, accendi(), spegni(). crea(), svita(), avvita(). new, delete(), public, private. new, accendi(), avvita(). Un Diagramma degli Stati di UML: Descrive in quali stati può trovarsi l'istanza di una classe. Descrive in quali stati può trovarsi il sistema. Descrive in quali stati può trovarsi una classe. Descrive in quali stati può trovarsi un utente del sistema o un sistema esterno. In un Diagramma degli Stati UML una condizione di guardia: E' una condizione che genererà un ciclo for in Java. Sarà ignorata nella traduzione da UML a Java. E' un gestore della sicurezza di una classe. E' associata ad una transizione di stato. In un Diagramma degli Stati UML una transizione di stato: Indica lo stato di partenza. Indica il passaggio dallo stato di stop a quello di run. Indica lo stato di destinazione. Indica il passaggio dallo stato di partenza a quello di destinazione. Un Diagramma delle Attività di UML: Rappresenta un insieme di operazioni sia automatiche che umane. Rappresenta delle transazioni del sistema. Raffigura le classi attive e le funzioni. Raffigura gli ogetti attivi e le loro relazioni. In UML i Diagrammi di Sequenza: Descrivono l'ordinamento in memoria dei messaggi (invocazione di metodi) scambiati tra diversi oggetti. Descrivono l'ordinamento temporale dei tipi di dati scambiati tra diversi oggetti. Descrivono il contenuto semantico dei messaggi scambiati tra diversi oggetti. Descrivono l'ordinamento temporale dei messaggi (invocazione di metodi) scambiati tra diversi oggetti. I Diagrammi di Collaborazione di UML: Descrivono classi che partecipano ad uno scambio di messaggi. Descrivono come gli oggetti collaborano per allocare e liberare memoria. Descrivono la struttura dei dati che vengono scambiati nei messaggi. Descrivono gli oggetti che partecipano ad uno scambio di messaggi. Se un attributo di una classe raffigurata in un Class Diagram UML è rappresentato sottolineato, cosa significa?. Che non è ancora stato istanziato. Che la sua visibilità è protected. Che è un attributo a livello di classe, quindi static. Che è una costante. Quale fra le seguenti è una rappresentazione errata per un attributo di classe in un Class Diagram UML?. -stipendio:double. String matricola;. +nome:String. #cognome:String. Quale fra le seguenti è una rappresentazione errata per una classe in un Class Diagram UML?. Nome + attributi + metodi. Nome + attributi + metodi + stati. Nome + attributi. Nome. A differenza di UML, nel linguaggio Java: L'ereditarietà multipla è tollerata solo in alcuni casi. E' sempre possibile utilizzare l'ereditarietà multipla. E' possibile per una classe estendere due o più classi. Non è possibile usare l'ereditarietà multipla, se non usando le interfacce. Qual è la rappresentazione corretta della classe java.lang.System in un Diagramma delle Classi UML?. Si usa solo "System". java:lang:System. java.lang::System. System:java.lang. Quali fra le seguenti frasi è falsa se riferita al linguaggio UML?. E' sempre possibile estendere più di una classe alla volta. E' alcune volte possibile estendere più di una classe alla volta. E' possibile estendere una classe alla volta, ovvero possiamo avere più di una superclasse. Non è possibile estendere più di una classe alla volta, ovvero non possiamo avere più di una superclasse. Da un Diagramma delle Classi di UML: E' possibile generare solo un elenco di metodi e attributi delle classi. E' possibile generare programmi nativi eseguibili. E' possibile generare il codice Java delle classi. E' impossibile generare il codice Java delle classi. In un Diagramma delle Classi UML è possibile: Rappresentare che una istanza Direttore sovrascrive il metodo dati() (polimorfismo). Rappresentare che una istanza classe Direttore sovrascrive il metodo dati() (polimorfismo). Rappresentare che un Direttore è un Impiegato (generalizzazione) e ne sovrascrive il metodo dati() (polimorfismo). Rappresentare che una istanza di Impiegato sovrascrive il metodo dati() (polimorfismo). In un Diagramma delle Classi UML come si indica l'Aggregazione?. Con una freccia doppia. Con un rombo pieno. Con una freccia. Con un rombo vuoto. Quali caratteristiche specificano una associazione di un Diagramma delle Classi UML?. Un nome ed una coppia di molteplicità. Nome, molteplicità e navigabilità. Un nome e un verso. Solo un nome. Cosa significa per due classi essere in relazione tramite una associazione in un Diagramma delle Classi UML?. Che ciascuna avrà un attributo del tipo dell'altra classe. Che una è sottoclasse dell'altra. Che usa l'altra come parametro o come tipo di ritorno di un metodo. Che sono classi simili. Cosa cambia aggiungere un verso ad una associazione fra classi in un Diagramma delle Classi UML?. Serve a specificare in quale classe si troverà il riferimento all'altra classe. Il verso serve a specificare la molteplicità dell'associazione. Serve ad indicare la superclasse. Niente, l'associazione avrà lo stesso significato di quella senza verso. A che serve una Classe di Associazione (o associativa) in un Diagramma delle Classi UML?. A creare una associazione fra due classi. A caratterizzare una associazione fra due classi. A definire la navigabilità di una associazione fra classi. A specificare la cardinalità di una associazione fra classi. In un Class Diagram UML, le cardinalità di un'Associazione: Dicono quante volte può essere chiamato un metodo. Specificano quante sottoclassi partecipano all'associazione. Specificano quante istanze delle classi partecipano all'associazione. Servono a specificare quanti elementi ha un array. Cosa è falso dire relativamente alle differenze fra Aggregazione e Composizione di un Diagramma delle Classi UML?. Le classi che partecipano alla prima hanno significato solo in relazione con il tutto, mentre quelle che partecipano alla seconda hanno significato anche da sole. La prima è una relazione debole, la seconda una relazione forte. Le classi che partecipano alla prima sono indipendenti, mentre quelle che partecipano alla seconda non lo sono. La prima è caratterizzata da un rombo vuoto, la seconda da un rombo pieno. In un Diagramma delle Classi UML come si indica la Composizione?. Con un rombo vuoto. Con una freccia doppia. Con una freccia. Con un rombo pieno. Il tool ArgoUML: E' un insieme di metodi di Argomenti. E' un insieme di argomenti per UML. E' un IDE open source per compilare. E' un IDE open source orientato a UML. Il sistema Rational Rose: E' un insieme di metodi. E' un IDE per UML. E' una rosa razionale di metodi. E' un insieme di classi. A che serve ArgoUML?. Supporta la progettazione, lo sviluppo e la documentazione di applicazioni. Compila il codice e trova errori. Supporta solo la documentazione di applicazioni. Supporta la compilazione, lo sviluppo e l'esecuzione di applicazioni. Il software ArgoUML è: Un software scritto in UML che supporta la progettazione UML. Un software scritto in Java che supporta la progettazione UML. Un software scritto in pseudocodice che supporta la progettazione UML. Un software scritto in HTML che supporta la progettazione UML. Poseidon UML Community edition: E' un IDE che consente di progettare in UML in modo grafico. E' un IDE che consente di progettare in UML in modo automatico. E' un IDE che consente di progettare in UML in modo testuale. E' un IDE che consente di scrivere in UML in modo vocale. Gli IDE dedicati alla progettazione nel linguaggio UML: Scrivono codice in modo semiautomatico. Generano codice in modo automatico. Hanno un repository di codice generico riutilizzabile. Scrivono codice in modo automatico. Che differenza c'è tra un IDE dedicato a Java e uno dedicato a UML?. Un IDE Java genera codice in Java, un IDE UML permette di sviluppare in UML. Un IDE Java genera codice in Java, un IDE UML lo genera in UML. Un IDE Java serve a scrivere codice in Java, un IDE UML genera codice anche in Java. Un IDE Java serve a scrivere codice in Java, un IDE UML genera codice UML. Che cos'è un IDE per UML?. Un sistema grafico per supportare la definizione di metodi. Un sistema grafico per supportare la costruzione solo di attributi. Un sistema grafico per supportare l'istanza di metodi UML. Un sistema grafico per supportare la costruzione di diagrammi. |




