Dubbio progettazione classi

di il
1 risposte

Dubbio progettazione classi

Buongiorno,
sto facendo un esercizio per la gestione di un porto turistico.

Il testo chiede di tenere traccia delle barche ormeggiate nel porto e calcolare l'affitto (proporzionale ai giorni di ormeggio) una volta che le barche se ne vanno. I posti-barca hanno dei vincoli: le barche più corte di 10 metri vanno nei primi 20 posti mentre quelle a motore dal posto numero 51 in poi.

Ho creato 2 classi:
1) la classe Barca con le informazioni della barca (nome, lunghezza, stazza, ecc.)
2) la classe PostiBarca con un ArrayList per memorizzare le barche presenti nel porto

Ma mi rendo conto che così non funziona, mi manca qualcosa...ho i seguenti problemi:

1) come gestire la numerazione dei posti barca? uso un solo ArrayList o ne faccio 3 diversi (uno per i posti-barca 1-20, uno per i posti barca 21-50 e il terzo per i posti barca >51)? O faccio 3 classi diverse?

2) come tenere traccia dei giorni di arrivo e di partenza delle barche? Mi serve un'altra classe?

1 Risposte

  • Re: Dubbio progettazione classi

    mauronew ha scritto:


    1) come gestire la numerazione dei posti barca? uso un solo ArrayList o ne faccio 3 diversi (uno per i posti-barca 1-20, uno per i posti barca 21-50 e il terzo per i posti barca >51)? O faccio 3 classi diverse?
    Se la numerazione dei posti è "lineare", ovvero da 1 in avanti, si potrebbe usare un singolo ArrayList. C'è solo una cosa che non è ben descritta: il numero TOTALE dei posti è fisso/noto?
    Il ArrayList chiaramente è espandibile ma se all'inizio inserisci una barca al primo posto (indice 0 = posto 1) e poi ne va aggiunta una al posto 77, ovviamente sei tu che devi creare la necessaria "capacità" fisica del ArrayList, altrimenti l'indice 76 non esiste ... Ma questa logica è facilmente incapsulabile in PostiBarca.

    Un'altra soluzione è usare una map Integer (posto) ---> Barca. La scelta di quale implementazione di map usare (HashMap, TreeMap, ecc...) però dipende se devi poter iterare facilmente in sequenza sui posti oppure no.

    mauronew ha scritto:


    2) come tenere traccia dei giorni di arrivo e di partenza delle barche? Mi serve un'altra classe?
    Qui dipende da quando va preso il tempo di arrivo e partenza. Quando si fa un "aggiungi" e "rimuovi" di un Barca sul PostiBarca? Allora sì, è incapsulabile in PostiBarca.
    Basta quindi fare un'altra classe es. OrmeggioBarca che modella l'insieme di Barca+data arrivo+data partenza. E il ArrayList non sarà più ArrayList<Barca> ma ArrayList<OrmeggioBarca>.
Devi accedere o registrarti per scrivere nel forum
1 risposte