Linguaggi di programmazione
Lezione 224
Commento sul codice Java
Con riferimento al Java, si commenti il seguente: public class Territorio {}. Con questo codice dichiariamo una classe pubblica di nome Territorio vuota.
Domande e risposte su classi e oggetti
Che differenza c'è tra una classe ed un oggetto?
La classe è quella cosa che definisce il comportamento generale degli oggetti che vi appartengono. Con comportamento indichiamo le azioni (metodi) che un oggetto di quella classe può fare, e lo stato interno (le variabili). Gli oggetti sono delle "cose" che hanno il comportamento della classe. Ovviamente, due oggetti distinti possono avere comportamenti diversi in base al proprio stato interno (cioè alle variabili). Una classe è la descrizione astratta di un tipo di dato; un oggetto è la realizzazione (istanza) di una classe.
Cosa è una classe?
Una classe è la descrizione astratta di un tipo di dato. Una classe è un insieme di metodi e dati raggruppati in un'unica entità così come è nella realtà. Essa serve per descrivere un oggetto... e a sua volta è spesso costituita da altri oggetti, ha legami con altri oggetti, o ne eredita le caratteristiche di base. All’interno di una classe è possibile definire, oltre a metodi, variabili e costruttori (v. lezione precedente), anche altre entità: in particolare le classi interne (inner classes).
Cosa è un oggetto?
Un oggetto è un’aggregazione di variabili (dati) e metodi (comportamenti, cioè funzioni). L’oggetto occupa sempre memoria che deve essere inizializzata con qualche valore. Java garantisce che le aree di memoria associate ad un oggetto vengano inizializzate subito dopo la creazione dell'oggetto, attraverso l'attivazione del Costruttore.
Si faccia un esempio di creazione di un oggetto in Java usando l'operatore appropriato
Integer a = new Integer(3);
Per istanziare un oggetto si fa uso dell'istruzione new, cosicché la sintassi di dichiarazione e inizializzazione di una variabile oggetto è la seguente:
TipoOggetto nomeVariabile = new TipoOggetto(par1, ..., parN);
Dove TipoOggetto è il tipo della variabile oggetto che stiamo creando e nomeVariabile è il nome della variabile oggetto con cui faremo riferimento al nuovo oggetto. A destra del simbolo di uguale "=" compare l'invocazione del costruttore della classe TipoOggetto, preceduto dall'istruzione new che indica l'operazione di istanziazione di un nuovo oggetto.
In Java quale è la signature corretta del metodo main? Motivare la risposta
Il metodo main() viene automaticamente eseguito all’attivazione del programma, passandogli i parametri specificati a riga di comando. La signature del metodo è:
public static void main(String args[]) { ... }
Il metodo main() è preceduto dai modificatori public, static e void. Il modificatore public rende il metodo richiamabile dal codice Java esterno alla classe; il modificatore static permette di richiamare un metodo di una classe senza dover prima creare un oggetto della classe. Il modificatore void indica che il metodo non restituisce nessun valore.
Definizioni diverse ma non contraddittorie di "oggetto" e "classe" in Java
Con riferimento al Java, si introducano delle definizioni diverse, ma non contraddittorie, di "oggetto"
Un oggetto è un’aggregazione di variabili (dati) e metodi (comportamenti, cioè funzioni). L’oggetto occupa sempre memoria che deve essere inizializzata con qualche valore. Java garantisce che le aree di memoria associate ad un oggetto vengano inizializzate subito dopo la creazione dell'oggetto, attraverso l'attivazione del Costruttore. Inoltre, in Java intendiamo per “oggetto” l'istanza particolare di una certa classe, e esso può possedere (o esporre) alcuni metodi. Quindi un oggetto può ricevere un certo messaggio se possiede un metodo che l'oggetto sender è in grado di chiamare (con la opportuna visibilità).
Con riferimento al Java, si introducano delle definizioni diverse, ma non contraddittorie, di "classe"
Una classe è un insieme di metodi e dati raggruppati in un'unica entità così come è nella realtà. Essa serve per descrivere un oggetto... e a sua volta è spesso costituita da altri oggetti, ha legami con altri oggetti, o ne eredita le caratteristiche di base. Una classe è la definizione di un tipo di oggetto. Una classe specifica il nome e il tipo delle variabili di istanza degli oggetti, ma non specifica il loro valore. Una classe specifica i metodi dei suoi oggetti. Un oggetto di una classe è una istanza della classe.
Concetti di programmazione in Java
Con riferimento al Java, cosa si intende per "metodi di interfaccia" (o "interfaccia esposta")?
L'interfaccia esposta della classe include tutti e solo i metodi che possono essere usati per manipolare le istanze di quella classe. Un'interfaccia può avere solo metodi pubblici o, per impostazione predefinita, i metodi dell'interfaccia sono pubblici. Nessun altro modificatore di accesso può essere utilizzato all'interno dell'interfaccia. Quindi, che lo dichiariamo esplicitamente o meno, ogni metodo nell'interfaccia è per impostazione predefinita astratto con visibilità pubblica. Quindi se void printMethod() è il prototipo che intendiamo dichiarare in un'interfaccia, le seguenti dichiarazioni sono le stesse: void printMethod(); public void printMethod(); abstract void printMethod(); public abstract void printMethod();
Con riferimento al Java, si introduca il concetto di "costruttore"
Un costruttore è una componente di codice che viene chiamata automaticamente quando la classe viene istanziata, e provvede all’inizializzazione dell’oggetto. Un costruttore è simile a un metodo, ma ne differisce per due aspetti: – Un costruttore non viene mai chiamato esplicitamente, ma viene attivato dal sistema in fase di inizializzazione dell’oggetto. – Un costruttore non ritorna alcun valore.
In ambito di programmazione Object Oriented, cosa si intende con il verbo "istanziare" (un oggetto)? Motivare la risposta
Istanziare un oggetto di una determinata classe significa allocare dinamicamente spazio di memoria per le variabili definite in tale classe, inizializzarne i valori e ottenere il riferimento all’oggetto come un valore il cui tipo è compatibile con la classe in questione.
In ambito di programmazione Object Oriented, cosa si intende con il termine "metodo"? Motivare la risposta
Un metodo è una funzione definita all’interno di una classe. Un metodo opera solo sugli oggetti istanze di tale classe. Un metodo in Java definisce un'operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un'operazione può essere applicata più volte e su argomenti di volta in volta diversi.
In ambito di programmazione Object Oriented, cosa si intende con il termine "interfaccia"? Motivare la risposta
Un’interfaccia è l’insieme delle dichiarazioni (o signature) dei metodi pubblici di una classe. Il signature di un metodo comprende il nome del metodo, il tipo del valore ritornato, il numero e tipo dei parametri di chiamata, ma non il corpo del metodo (implementazione).
In ambito di programmazione Object Oriented, cosa si intende con il termine "costruttore"? Motivare la risposta
Un costruttore è una componente di codice che viene chiamata automaticamente quando la classe viene istanziata, e provvede all’inizializzazione dell’oggetto. Un costruttore è simile a un metodo, ma ne differisce per due aspetti: – Un costruttore non viene mai chiamato esplicitamente, ma viene attivato dal sistema in fase di inizializzazione dell’oggetto. – Un costruttore non ritorna alcun valore.
In Java, di cosa necessita una classe affinché possa diventare un programma eseguibile
Affinché una classe possa diventare un programma eseguibile, bisogna definire il metodo main fatto così:
public static void main(String args[]) { ... }
Il metodo main() viene automaticamente eseguito all’attivazione del programma, passandogli i parametri specificati a riga di comando.
Lezione 328
Cosa riferimento al Java, si introduca il blocco "for", eventualmente aiutandosi con un diagramma di flusso
L’istruzione for ripete l’esecuzione di un’istruzione. La forma più utilizzata è: for (; ; ). Viene prima eseguito il codice, poi viene valutata l'espressione; se questa ritorna true viene eseguita l'istruzione, poi si ritorna a valutare l'espressione, ripetendo il ciclo. Quando l’espressione assume il valore false il for termina. L’espressione deve essere di tipo booleano; può essere la dichiarazione di una variabile locale. Ad esempio:
for(int i = 0; i < 10; i++) System.out.print(i);
Da cosa è costituito un programma Java nella sua forma statica?
In fase di esecuzione un programma Java è costituito da una rete di oggetti connessi da relazioni d’uso. Nella sua forma statica (codice sorgente), un programma Java è costituito da un insieme di definizioni di classe. Ogni classe espone un’interfaccia pubblica, che le altre classi possono usare, e incapsula al suo interno l’implementazione dei servizi che offre. Nella sua forma più semplice, un programma è costituito da una sola classe (v. esempio HelloWorld).
Cosa riferimento al Java, che relazione c'è tra una classe pubblica e il nome del file che contiene la sua definizione? Motivare la risposta
Ogni file sorgente (unità di compilazione) Java deve contenere esattamente la definizione di una classe public. Il file sorgente deve chiamarsi come la classe public che definisce e deve avere estensione ".java".
Cosa riferimento al Java, quante classi posso definire all'interno di un singolo file? Argomentare la risposta
Oltre alla classe pubblica, ogni file sorgente può definire una o più classi aggiuntive, purché queste non siano dichiarate public.
Cosa riferimento al Java, si introduca il modificatore protected
Il modificatore protected può essere attribuito solo ai metodi e alle variabili interne alla classe e non può essere applicato alla classe stessa. I metodi e le variabili dichiarate come protected sono visibili da classi dichiarate nello stesso package e da sottoclassi e classi derivate dichiarate ovunque. Si può dire che è leggermente più restrittivo di public.
Cosa riferimento al Java, cosa si intende per blocco? Argomentare la risposta
Un blocco è una sequenza di istruzioni, dichiarazioni locali di variabile e di classe, delimitato da parentesi graffe { }. Un blocco è visto dall’esterno come una singola istruzione: ovunque sia lecito posizionare un’istruzione, lì ci può stare un blocco. Una variabile dichiarata all’interno di un blocco:
- Ha visibilità circoscritta a quel blocco: non può essere usata al di fuori di esso;
- Viene automaticamente allocata quando il flusso dell’esecuzione entra nel blocco, e deallocata all’uscita.
Cosa riferimento al Java, si introduca il blocco "if", eventualmente aiutandosi con un diagramma di flusso
L’istruzione if permette l’esecuzione condizionale di un’istruzione, o la scelta tra due istruzioni, eseguendone l’una o l’altra (ma non entrambe). Possiamo avere 2 casi:
- Primo caso: if-then
if( )deve ritornare un valore di tipo booleano; se è true, viene eseguita l'istruzione. - Secondo caso: if-then-else
if( ) elsese è true, viene eseguita l'istruzione; se è false, viene eseguita un'altra istruzione. L'espressione deve essere di tipo booleano.
Cosa riferimento al Java, cosa succede se una variabile di istanza è dichiarata public? Motivare la risposta
Una variabile public può essere acceduta, in lettura e in scrittura, da qualunque altro metodo del programma. Le variabili di istanza sono variabili appartenenti a una classe e al di fuori del corpo di qualsiasi metodo della classe. Sono usate per memorizzare lo stato di un oggetto. Sono visibili a tutti i metodi della classe. Possono essere visibili anche all'esterno del corpo della classe ma è consigliabile non farlo.
Cosa riferimento al Java, si introduca il blocco "while", eventualmente aiutandosi con un diagramma di flusso
L’istruzione while ripete l’esecuzione di un’espressione e di un’istruzione fino a quando l’espressione assume il valore false:
while( <espressione> ) <istruzione>
L'espressione deve essere di tipo booleano. Esempio:
int i = 0;
while (i < 10) {
System.out.print(i);
i++;
}
L'espressione viene valutata prima di eseguire l'istruzione: se all’ingresso nel while il suo valore è subito false, l'istruzione non viene eseguita.
Cosa riferimento al Java, si introduca il blocco "do", eventualmente aiutandosi con un diagramma di flusso
L’istruzione do ripete l’esecuzione di un’istruzione e di un’espressione fino a quando l’espressione assume il valore false:
do <istruzione> while( <espressione> )
L'espressione deve essere di tipo booleano. Esempio:
int i = 0;
do {
System.out.print(i);
i++;
} while (i < 10);
L'espressione viene valutata dopo l'istruzione, al termine del loop: anche se all’ingresso nel do il valore dell’espressione è false, l'istruzione viene eseguita almeno una volta. La struttura do ammette quindi al minimo 1 iterazione.
Cosa riferimento al Java, si introduca il blocco "switch", eventualmente aiutandosi con un diagramma di flusso
L’istruzione switch trasferisce il controllo a una tra diverse istruzioni in dipendenza del valore di un’espressione:
switch(<espressione>) {
case <costante1>: <istruzione1> break;
case <costante2>: <istruzione2> break;
…
default: <istruzioneN>
}
- Il tipo di <espressione> deve essere char, byte, short, int, Character, Byte, Short, Integer, o un tipo enumerato.
- Viene eseguita l’istruzione etichettata dal case il cui valore è uguale a quello di <espressione>. Se nessun valore corrisponde, viene eseguita l’istruzione etichettata da default.
In Java a cosa si applicano i modificatori di accesso? Motivare la risposta
I modificatori di accesso regolano la possibilità di accedere ad una Classe, ad un metodo o ad un attributo, da parte di una Classe o di un metodo, esterno od interno alla Classe stessa. In genere, solo le variabili di Classe, ma non è obbligatorio, hanno un modificatore che ne specifica la visibilità; le variabili dichiarate all'interno dei metodi non hanno modificatori di visibilità, d'altra parte esse sono visibili solo all'interno del metodo stesso.
Cosa riferimento al Java, cosa succede se una classe è dichiarata public? Motivare la risposta
Una classe public può essere istanziata da qualunque altra classe del programma. In ogni unità di compilazione (file sorgente) ci deve essere esattamente una classe pubblica.
Cosa riferimento al Java, cosa succede se un metodo di istanza è dichiarato public? Motivare la risposta
Un metodo public appartiene all’interfaccia esposta dalla classe in cui è definito, e può essere chiamato da qualunque altro metodo del programma.
Come si importano i package in Java?
Utilizzando la direttiva import. Per importare un package in Java si utilizza la dichiarazione import, es. import java.util.*;
Cosa è un package in Java?
Un package è uno strumento per raggruppare tipi in qualche modo legati fra di loro. Il package ha lo scopo di riunire classi (o entità analoghe, quali interfacce ed enumerazioni) logicamente correlate. Per esempio, le librerie standard Java sono organizzate in un sistema di package che comprende per esempio elementi strutturali del linguaggio, servizi di rete e così via. I packages sono uno strumento per organizzare programmi complessi e prevenire conflitti di nomi. Semplificando, possiamo pensare che il package corrisponda alla cartella del file system (folder) che contiene i file sorgenti.
- Se un programma consiste di un numero limitato di classi senza nomi duplicati, i file sorgenti possono risiedere in un’unica cartella, e il programma è costituito da un unico package (ad es. il package di default).
- Con programmi formati da molte centinaia di classi e potenziali duplicazioni di nomi, sarà viceversa opportuno organizzare i relativi file sorgenti in una gerarchia di cartelle articolata secondo una struttura logico-funzionale; il programma sarà costituito da un insieme di packages, tipicamente strutturati in forma gerarchica.
Esempio di programma Java minimo
Si faccia un esempio minimo di programma Java che possa essere mandato in esecuzione.
Un programma minimo che possa essere mandato in esecuzione può essere:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Lezione 460
Con riferimento al Java, si introduca (se esiste) l'operatore *=
*= significa moltiplicazione e assegnamento, es. a *= b è uguale a scrivere a = a * b.
Con riferimento al Java, si introducano gli operatori condizionali
Java supporta operatori condizionali, || e && per eseguire operazioni con OR condizionale e AND condizionale su due operandi booleani. Questo comportamento è anche chiamato comportamento di "cortocircuito". In questo comportamento, la valutazione del secondo operando avviene solo se necessario. Gli operatori condizionali effettuano delle operazioni tra 2 variabili e ritornano risultati booleani, true e false.
Si elenchino i tipi primitivi in Java
I tipi primitivi sono:
- Il tipo boolean, che può assumere due valori: false e true.
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.
-
Linguaggi di programmazione - domande aperte e chiuse ordinate
-
Linguaggi di programmazione - domande aperte svolte ed ordinate
-
Paniere svolto di Linguaggi di programmazione (2025) - Risposte aperte
-
Paniere svolto di Linguaggi di programmazione (2025) - Risposte aperte