![]() ![]() |
|
![]() ![]() |
Può capitare che un programma debba
rappresentare e gestire insiemi ristretti di possibili valori, ad
esempio;
In questi casi vorremmo usare delle variabili che possono assumere solo un limitato numero di valori. |
![]() ![]() |
|
![]() ![]() |
Vediamo alcune soluzioni piuttosto diffuse:
Altre soluzioni (che non stiamo a illustrare perché richiedono alcune nozioni più sofisticate) sono possibili, ma presentano sempre lo svantaggio di costringere il programmatore a inventare un meccanismo ad hoc per il particolare dominio applicativo. |
![]() ![]() |
|
![]() ![]() |
Alcuni linguaggi di programmazione
permettono di definire nuovi tipi semplicemente elencando tutti gli
elementi possibili che hanno quel tipo (i valori del dominio
corrispondente).
Dalla versione 5.0 anche Java comprende i cosiddetti tipi enumerativi, che possono essere dichiarati con la parola chiave enum e poi usati per dichiarare variabili di quel tipo: Una variabile di tipo enumerativo potrà assumere soltanto quei valori elencati nel definire il tipo enumerativo. La soluzione adottata da Java è assai più flessibile e potente di quella presente in altri linguaggi (es. C, C++, pascal), perché è integrata perfettamente con i principi della programmazione a oggetti e con alcuni costrutti di programmazione. |
![]() ![]() |
|
![]() ![]() |
Per definire un tipo enumerativo è
sufficiente usare la parola chiave enum e elencare i possibili valori
di quel tipo.
Esempi di dichiarazioni di nuovi tipi:
In generale la sintassi è la seguente:
I tipi enumerativi prevengono assegnamenti errati di valori non previsti.
|
![]() ![]() |
|
![]() ![]() |
Una volta definito un nuovo tipo
enumerativo è possibile dichiarare variabili di quel tipo.
Esempi di assegnamenti a variabili di tipo enumerativo:
In generale la sintassi è la seguente:
Oltre ai valori elencati nella definizione del tipo enumerativo, le variabili di un tipo enumerativo possono sempre assumere anche un altro valore: null. |
![]() ![]() |
|
![]() ![]() |
I valori di tipi enumerativi possono anche essere confrontati tra loro. Per il confronto di uguaglianza si può usare == o equals indifferentemente (i valori enumerati sono in realtà oggetti, ma sono oggetti unici).
Per il confronto di ordinamento bisogna usare compareTo, analogamente a quanto visto per il confronto tra stringhe.
|