Consiglio struttura e logica

di il
3 risposte

Consiglio struttura e logica

Salve,
sto cercando di capire qual è il modo migliore per tenere traccia di dati.. Per esempio posti disponibili in un parcheggio alcune macchine entrano, vengono assegnati dei posti del parcheggio e successivamente magari ne esce una e lascia il posto libero. Secondo voi qual è il miglior modo per tenere costantemente traccia dei posti disponibili, dei posti occupati (in modo da visualizzarli a video singolarmente) e del totale di liberi e occupati? metterli dentro un array[]? e fare una ricerca mirata? o pensate ci siano metodi più adatti e più puliti nella programazione? Attualmente ho creato una scheda per ogni singola vettura con vari parametri tra cui la targa, il modello etc con un Hashmap e assegnando una Key con il numero del parcheggio solo che sto cercando di capire come ogni volta fare la ricerca di quel posto libero nella lista aggiornata per associarlo alla singola macchina
grazie mille

3 Risposte

  • Re: Consiglio struttura e logica

    pangolino ha scritto:


    Secondo voi qual è il miglior modo per tenere costantemente traccia dei posti disponibili, dei posti occupati (in modo da visualizzarli a video singolarmente) e del totale di liberi e occupati? metterli dentro un array[]? e fare una ricerca mirata?
    [...] sto cercando di capire come ogni volta fare la ricerca di quel posto libero nella lista aggiornata per associarlo alla singola macchina
    Partiamo dal presupposto che si può fare in svariati modi. Se usi una map, dovrai avere delle chiavi (Integer, presumo) e per cercare un posto libero devi "provare" tutte le chiavi possibili (es. da 0 a 19 o 1..20 se ci sono 20 posti) fino a trovare che una non è nella map (=libero). Se usi un array, userai degli indici (int) e per cercare un posto libero devi "provare" a tutti gli indici finché trovi un elemento es. null (=libero). La ricerca di un posto libero è in entrambi i casi proprio una "ricerca" lineare.

    Se non vuoi perdere tempo in questa ricerca, c'è un'altra strategia. OLTRE alla map o array tieni un'altra collezione es. un LinkedList dove mantieni i posti "liberi". All'inizio il LinkedList contiene tutti i posti liberi (es. valori da 0 a 19). Quando devi trovare un posto, togli la chiave/indice dalla "testa" del LinkedList (operazione veloce/efficiente) e lo usi. Quando un posto si libera, rimetti la chiave/indice al fondo (o testa) del LinkedList. Quindi non c'è più una "ricerca" del posto che richiede una scansione.
    E si possono fare varie altre varianti.

    Quello che invece è molto importante è che tutta questa logica la incapsuli dentro una classe. Ovvero fare una classe es. Parcheggio in cui è "nascosta" questa logica in modo che dall'esterno non si debba/possa sapere se hai usato un array piuttosto che una map o altro. Insomma, ragionare bene in termini della OOP.
  • Re: Consiglio struttura e logica

    Concettualmente NON ESISTE ""LA RISPOSTA DEFINITIVA"".

    Tutto dipende da che cosa hai fatto, cosa stai facendo e, sopprattutto, ""cosa farai"".

    Il miglior sistema e' SCEGLIERE una soluzione e scoprire che succede.

    Come fai a capire se la soluzione scelta e' buona o no?

    Questo e' semplice (per mod di dire, ovviamente ):

    SE per aggiungere una nuova funzionalita' DEVI SCRIVERE quantita' di codice assurdo (idealmente dovrebbe essere una cosa da 4 linee di codice ed invece ne hai scritte 100) ALLORA la soluzione e' sbagliata.

    Come fai a sapere quante linee di codice dovrebbero servire?

    E bravo furbo!!!!
    Sta' proprio qui' la differenza tra chi ha ""esperienza"" e chi no!

    Nel tuo caso, non avendo ""esperienza"" devi necessariamente andare a "'sensazione""/""stima""/""pseudo ragionamento"".

    NB: quella che ti e' stata appena proposta e' una delle INFINITE possibili soluzioni.
    Prova con una tua
  • Re: Consiglio struttura e logica

    Grazie mille per la celerità nella risposta.
    Ho utilizzato il metodo LinkedList ed in questo modo funziona tutto alla perfezione proprio come volevo io! grazie ancora per la disponibilità
    A presto
Devi accedere o registrarti per scrivere nel forum
3 risposte