Vedere dispense per come usare Java in laboratorio.
(Teoria sulle dispense).
Partire dalla versione del rettangolo con funzioni setLength e setWidth (ved. esercizio 2 del laboratorio 0).
Incapsulare la classe Rectangle, cioe'
L'incapsulazione fa si' che nessuno dall'esterno possa accedere alle variabili length e width se non attraverso le funzioni set e get fornite. In particolare, nessuno puo' assegnare a queste variabili valori arbitrari senza passare attraverso i controlli fatti nelle funzioni setLength e setWidth.
Verificare se la classe Cuboid scritta la volta scorsa
(ved. esercizio 3 del laboratorio 0).
si compila senza dare errori.
Potrebbe dare errore per accesso alle variabili private di
Rectangle. Questo si evita mettendo le due variabili come
protected invece che private (in questo modo possono accederle anche
le sottoclassi).
Incapsulare anche la classe del cuboide mettendo height privata e scrivendo le due funzioni getHeight e setHeight.
(Teoria sulle dispense).
Aggiungere alla classe Rectangle altri costruttori (ved. dispense).
Aggiungere anche un costruttore con un solo parametro che
costruisca un quadrato (rettangolo con length == width).
In tutti i costruttori, se i valori degli argomenti sono inferiori a
MINIMUM_SIZE, allora sostituire il valore troppo piccolo con quello
di MINIMUM_SIZE.
(Teoria sulle dispense).
Tra due oggetti, per esempio tra due rettangoli, e' possibile avere:
Aggiungere nella classe Rectangle una funzione che controlla l'uguaglianza come uguale stato fra rettangoli (ved. funzione isEqual nelle dispense).
Aggiungere nel "main" una sezione che prova come funzionano questi due tipi di uguaglianza
Aggiungere la funzione di copia e il costruttore di copia per i rettangoli (ved. "Copia di oggetti" nelle dispense).
Prendere la classe RectanglePair che rappresenta coppie di rettangoli (ved. dispense).
Poiche' la classe ha attributi che appartengono a loro volta a classi (non sono tipi base come in Rectangle) allora l'uguaglianza come uguale stato si puo' distinguere ancora in:
Scrivere un "main" per la classe RectanglePair nel quale:
Nota: per compilare e per eseguire la classe RectanglePair
abbiamo bisogno anche della classe Rectangle.
Se i due file Rectangle.java e RectanglePair.java stanno
nella directory corrente, il sistema "si accorge" che il
secondo "usa" il primo:
compilare il secondo provoca compilazione del primo (se non
esiste gia' il .class).
Analogamente, se Rectangle.class e RectanglePair.class stanno
nella directory corrente, il sistema "si accorge" che il
secondo "usa" il primo: eseguire il secondo linka automaticamente
il primo.
Aggiungere nella classe RectanglePair le funzioni che controllano la shallow equality e la deep equality fra due coppie di rettangoli.
Scrivere un main che testi le due funzioni di shallow e deep equality per coppie di rettangoli.
Prendere la classe Vagone e la classe Treno dalle dispense, nella versione in cui Treno e' sotto-classe di Vagone.
Aggiungere la funzione di stampa, e il main nella classe Treno (sempre dalle dispense).
Aggiungere nel main la stampa del treno costruito. Provare a costruire treni piu' lunghi.