![]() ![]() |
|
![]() ![]() |
Fin qui abbiamo visto i tipi di dato primitivi che il linguaggio Java mette a disposizione.
Sebbene sia possibile scrivere programmi interessanti usando solo i numeri, i caratteri e i booleani, spesso i programmi hanno bisogno di manipolare tipi di dato più complessi che rappresentano più fedelmente le entità del mondo reale. Conti bancari, anagrafiche di dipendenti sono alcuni esempi di questo genere di dati. Per questi motivi un linguaggio a oggetti mette a disposizione anche meccanismi per definire nuovi tipi di dato, basati sul concetto di classe (vedremo in dettaglio questo meccanismo nel secondo modulo di questo corso).
Una classe definisce un insieme di oggetti (per esempio i conti bancari), cioè
definisce (descrive)
Si possono creare oggetti di una classe con la primitiva new. Ogni diverso oggetto, detto anche istanza, della classe ha la struttura descritta nella classe e può essere manipolato invocando su di essi i metodi di istanza definiti nella classe.
Ogni classe definisce un tipo di dato, i cui elementi sono le sue istanze. Quindi possiamo dichiarare variabili il cui tipo è una classe, e potremo assegnargli solo oggetti di quella classe.
Il linguaggio Java oltre a fornire i meccanismi
necessari per definire nuove classi (questo però lo vediamo poi),
mette a disposizione del programmatore un gran numero di classi
predefinite (queste invece dobbiamo imparare a usarle adesso).
Riassumendo quindi, i dati che possono essere manipolati in un programma Java
sono di due tipi:
N.B. Un linguaggio orientato agli oggetti puro avrebbe solo classi e oggetti .... |
![]() ![]() |
|
![]() ![]() |
Tra le centinaia di classi fornite
da Java, la classe java.awt.Rectangle
definisce oggetti che rappresentano rettangoli.
La classe java.awt.Rectangle descrive il modo con il quale sarà rappresentato ciascun rettangolo: usando due variabili per descrivere la posizione nel piano del suo vertice superiore sinistro (x e y) e due variabili per descrivere la sua dimensione (height e width). Si noti che questa è una scelta realizzativa. Ogni rettangolo (istanza della classe) sarà quindi rappresentato usando quattro variabili d'istanza. Ad esempio, in un programma possiamo creare tre rettangoli con opportuni valori per le variabili d'istanza. Possiamo visualizzare ogni oggetto come uno scatolotto avente in alto il nome della classe, e sotto le variabili d'istanza.
|
![]() ![]() |
|
![]() ![]() |
Una classe definisce sia il modo in cui rappresentiamo una determinata
collezione di oggetti sia
le operazioni per manipolare tali oggetti (tramite i metodi di istanza) . Se vogliamo rappresentare un conto corrente, ad esempio, le operazioni che possiamo voler definire possono essere:
Nel caso dei rettangoli un' operazione che può essere utile per manipolarli è l'operazione che permette di translare (spostare) un rettangolo nel piano. La classe Rectangle [locale, Medialab, Sun] descrive sia il modo in cui costruire un rettangolo con i valori desiderati per la variabili d'istanza sia un metodo d'istanza translate che sposta il rettangolo nel piano (assieme a molti altri). Il metodo translate ha due parametri formali che rappresentano lo spostamento lungo l'asse x e quello lungo l'asse y.
|