ragazzi nn riesco a capire alcuni punti allora.. prima di tutto la cosa più semplice:
il getCoefficiente dei parallelepipedi è trovato in base alla formula 7*c+3*L..... questo L è trovato con un metodo che restituisce il lato più lungo di questa figura, ma è necessario crearlo proprio questo metodo?
Beh, diciamo che è molto conveniente farlo.

Mi spiego meglio:
nella terza prova bisogna implementare direttamente solo i metodi specificati nel testo... tra questi c'è il metodo getCoefficiente(). Ora, per il parallelepipedo è necessario sapere il suo lato più lungo... se non crei il metodo getMaxL() (dovrebbe chiamarsi così se non erro), sei costretto a fornirne un'improbabile implementazione all'interno del metodo getCoefficiente(). Per fare questo devi perdere tempo ed inoltre è facile scrivere cose errate. Dichiarando il metodo getMaxL() all'interno della classe Parallelepipedo, invece, ti permette di
utilizzare il metodo dentro getCoefficiente(), ma poichè getMaxL() non è specificato nel testo,
non devi scrivere la sua implementazione.
Con questa "furbata" quindi hai risolto il problema, il codice all'interno di getMaxL() potrebbe essere complicatissimo, ma a te non importa.
E' fondamentale non perdere tempo durante la terza prova, visto che è davvero poco.
poi non riesco proprio a capire come funziona la classe Vertice, se la variabile che ha è un array di float, come fa poi il costruttore ad essere fatto passando (nComponenti: int)? non capisco per lo più cosa sono...
grazie!!

Innanzitutto ricordo che quel diagramma UML è stato il mio modo di affrontare il problema,

, e che ovviamente non è l'unico.
La classe Vertice contiene all'interno un'array di float.
Ogni elemento dell'array rappresenta una componente del vertice.
Il parametro nComponenti del costruttore indica da quante componenti è composto.
Di fatto quindi la classe Vertice rappresenta un vertice n-dimensionale. Di seguito riporto l'implementazione:
abstract class Vertice
{
public float[] componenti;
public Vertice(int nComponenti)
{
componenti = new float[nComponenti];
}
}
class Vertice2D extends Vertice
{
public Vertice2D(int x, int y)
{
super(2);
componenti[0] = x;
componenti[1] = y;
}
}
class Vertice3D extends Vertice
{
public Vertice3D(int x, int y, int z)
{
super(3);
componenti[0] = x;
componenti[1] = y;
componenti[2] = z;
}
}
Come vedi, le classi Vertice2D e Vertice3D non fanno altro che creare un vertice rispettivamente bidimensionale/tridimensionale, richiamando il costruttore.
ho provato a svolgere l'esempio che c'è sul sito del professore, bisogna disegnare ben 8 classi...
chiave<--chiave a scorrimento<----chiave elettronica<----(1)con microchip<-----(2)banda magnetica
da scorrimento deriva pure chiave meccanica.. inoltre ho aggiunto due altre classi di supporto (data e dente).
per disegnare tutto il grafico uml ci vuole un bel po di tempo senza contare eventuali note che spiegano i metodi!(che a questo punto non saprei dove infilare, perchè non c'è più spazio!)
Come si fa dunque??
avete consigli? le note che spiegano i metodi vanno inserite? come si fa se non c'è lo spazio??
Allora, se per note intendi tipo quei "fumetti" con all'interno la descrizione dei metodi, ti dico che
NON devi assolutamente metterli. Fondamentalmente per due motivi:
1) Occupano spazio (e ce n'è poco, a quanto hai visto)

2) Occupano tempo (e purtroppo ce n'è poco anche di questo)

occorre secondo voi mettere nella classe chiave la descrizione che poi non verrà mai utilizzata?
Assolutamente sì, devi mettere tutto quello che ti specifica nel testo.
Basta mettere lo stretto necessario alla soluzione dei quesiti che seguono?
Devi mettere quello che serve, (vedi appunto l'esempio di getMaxL(), che pur non essendo specificato nel testo, è molto conveniente mettere).
beh semplice.. le classi astratte sono quella "chiave" "scorrimento" ed "elettronica" getCosto() va dichiarato abstract in chiave
e poi va implementato in meccanica, magnetica e chiave con microchip.
scusa a cosa ti serve la classe microchip? e quella abilitazione? credo che siano eccessive
Quando ho fatto l'esercizio ho previsto le seguenti classi:
- abstract Chiave
- abstract Scorrimento extends Chiave
- abstract Elettronica extends Scorrimento
- Magnetica extends Elettronica
- Microchip extends Elettronica
- Meccanica extends Scorrimento
- Dentello
