|
1 | 1 | # Programmazione ad Oggetti - Laboratorio 02
|
| 2 | + |
2 | 3 | ## Esercizio 6 - constructors
|
3 | 4 |
|
4 | 5 | #### FASE 1 - Costruttori
|
5 | 6 |
|
6 |
| -1. Si rimuova dalle classi `Train` e `Student` il metodo `void main(String[])` ed il metodo `void build(...)` |
| 7 | +1. Si osservi e poi si rimuova dalle classi `Train` e `Student` il metodo `void main(String[])` ed il metodo `void build(...)` |
| 8 | + - Si noti come tra l'istanziazione di uno `Student` e la sua "costruzione" mediante `build` l'oggetto si trovi in uno stato semanticamente inconsistente |
7 | 9 | 2. Si implementi un costruttore a zero argomenti per `Train`
|
8 |
| - - I campi dovranno essere inizializzati con valori di default *sensati* a scelta dello studente |
9 |
| -3. Si implementi un costruttore che specifica un numero di parametri idoneo ad inizializzare la l'istanza della classe |
10 |
| -4. Si implementi in autonomia il costruttore della classe Student |
| 10 | + - I campi dovranno essere inizializzati con valori di default *sensati* a vostra scelta |
| 11 | +3. Si implementi un costruttore con un set minimale di parametri atto ad inizializzare un'istanza della classe |
| 12 | +4. Si implementi in autonomia il costruttore della classe `Student` |
11 | 13 | 5. Si seguano le istruzioni riportate in `UseConstructors`
|
12 | 14 | 6. Facendo riferimento a quanto discusso a lezione circa la possibilità di richiamare costruttori esistenti nel corpo di un altro costruttore tramite istruzione `this`, si modifichi il costruttore a zero argomenti di Train in modo che riusi quello che accetta parametri per l'inizializzazione.
|
13 | 15 | 7. Si crei (se non già realizzato) un costruttore `Train(int, int)` dove gli argomenti passati siano i posti in prima e seconda classe, rispettivamente.
|
14 | 16 | 8. Si seguano le istruzioni in `UseConstructorsEvolved` per effettuare il test.
|
15 | 17 |
|
16 | 18 | #### FASE 2 - Esercizio più avanzato
|
| 19 | + |
17 | 20 | 1. Si completi la classe `oop.lab02.constructors.Smartphone` con i campi:
|
18 |
| - - `int nCPU, ram, sdSize` |
19 |
| - - `String brand, model` |
20 |
| - - `boolean hasGPS, hasNFC, has3G` |
| 21 | + - `int nCPU, ram, sdSize` |
| 22 | + - `String brand, model` |
| 23 | + - `boolean hasGPS, hasNFC, has3G` |
21 | 24 | 2. Si implementino nella classe suddetta i seguenti costruttori:
|
22 |
| - - `Smartphone(String brand, String model)` |
23 |
| - - `Smartphone(String brand, String model, int sdSize, boolean hasGPS, boolean has3g)` |
24 |
| - - `Smartphone(String brand, String model, int sdSize)` |
25 |
| - - `Smartphone(String brand, String model, boolean hasNFC)` |
26 |
| - - Costruttore con un argomento per campo |
27 |
| - Nota: ci si assicuri di usare `this` per richiamare i costruttori esistenti |
| 25 | + - `Smartphone(String brand, String model)` |
| 26 | + - `Smartphone(String brand, String model, int sdSize, boolean hasGPS, boolean has3g)` |
| 27 | + - `Smartphone(String brand, String model, int sdSize)` |
| 28 | + - `Smartphone(String brand, String model, boolean hasNFC)` |
| 29 | + - Costruttore con un argomento per campo (NB: ci si assicuri di usare `this` per richiamare i costruttori esistenti) |
28 | 30 | 3. Si utilizzino i commenti riportati nel `main` della classe per scrivere un test ed eseguirlo.
|
0 commit comments