Paola Magillo, Univestita' di Genova,
Corso di Programmazione II per SMID, a.a. 2005-2006.
QUESTIONARIO di verifica non fiscale
Lunedi' 7 novembre 2005
Risposte e spiegazioni...
Attributi di classe e di istanza
Sia MyClass una classe che ha un attributo di instanza aIst
e un attributo di classe aCls.
Siano o1 e o2 due oggetti istanze della classe MyClass.
Per ogni affermazione dire se e' vera o falsa:
-
Ogni oggetto o1 e o2 ha la sua personale copia dell'attributo
di istanza aIst -- VERO
-
Ogni oggetto o1 e o2 ha la sua personale copia dell'attributo
di classe aCls -- FALSO
-
Gli oggetti o1 e o2 condividono la stessa ed unica
copia dell'attributo di istanza aIst -- FALSO
-
Gli oggetti o1 e o2 condividono la stessa ed unica
copia dell'attributo di classe aCls -- VERO
Spiegazione: per definizione di "attributo di istanza" e
"attributo di classe".
Parole chiave in Java
Sappiamo che seguenti parole chiave possono precedere il nome di
un attributo in Java:
- static
- final
- private
- protected
- public
Accoppiare ciascuna parola chiave sopra citata al suo
significato, scelto tra i seguenti:
- attributo di classe -- STATIC
- attributo di istanza
- attributo il cui valore puo' essere cambiato nel corso
dell'esecuzione del programma
- attributo il cui valore NON puo' essere cambiato nel corso
dell'esecuzione del programma -- FINAL
- attributo non appartenente alla classe
- attributo che posso accedere solo da dentro metodi della
classe stessa -- PRIVATE
- attributo che posso accedere da dentro metodi di qualunque
classe -- PUBLIC
- attributo che posso accedere solo da dentro metodi della
classe stessa o di una sua sotto-classe -- PROTECTED
Spiegazione: per definizione della sintassi Java.
Classi e sotto-classi
Sia MyClass una classe e SubClass una sua sotto-classe.
Sia myvar una variabile dichiarata di classe MyClass
e sia subvar una variabile dichiarata di classe SubClass.
Per ogni affermazione dire se e' vera o falsa:
-
nella variabile myvar posso mettere un oggetto di
classe MyClass -- VERO
-
nella variabile myvar posso mettere un oggetto di
classe SubClass -- VERO
-
nella variabile subvar posso mettere un oggetto di
classe MyClass -- FALSO
-
nella variabile subvar posso mettere un oggetto di
classe SubClass -- VERO
Spiegazione:
Chiaramente in una variabile dichiarata di classe C
posso sempre mettere oggetti della stessa classe C.
Posso anche metterci oggetti di una sotto-classe di C perche' tali
oggetti possiedono tutte le caratteristiche della classe C
(piu' altre proprie della sotto-classe).
Viceversa non posso metterci oggetti di una super-classe di C perche'
ad essi mancano alcune caratteristiche (quelle aggiunte da C rispetto alla
sua super-classe).
Classi astratte
Sia AbsClass una classe astratta.
Per ogni affermazione dire se e' vera o falsa:
-
non posso creare istanze, cioe' oggetti di classe AbsClass -- VERO
-
non posso dichiarare variabili di classe AbsClass -- FALSO
-
in AbsClass manca l'implementazione di alcuni metodi -- VERO
-
in AbsClass manca l'implementazione di tutti i metodi -- FALSO
-
non posso dichiarare sotto-classi di AbsClass -- FALSO
Spiegazione:
Una classe e' astratta se non implementa alcuni metodi.
Ne puo' implementare alcuni si' e altri no.
I metodi non implementati in una classe astratta
sono implementati nelle sue sotto-classi.
Una classe astratta serve per trattare in modo
uniforme oggetti appartenenti alle sue sotto-classi, percio'
una classe astratta AbsClass non ha senso senza sotto-classi.
Tipicamente dichiaro una variabile di classe AbsClass e ci
metto dentro oggetti di una qualunque delle sotto-classi.
Il fatto che manchi in AbdClass l'implementazione di alcuni metodi
non e' un problema, perche' Java prende sempre l'implementazione
del metodo nella classe a cui appartiene l'oggetto, non
nella classe a cui appartiene la variabile (questo si chiama "binding
dinamico").