Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Gestione codici sconti

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371

    Gestione codici sconti

    Dovrei fare un semplice programma per la gestione di alcuni codici, in pratica deve solo permettere la generazione di alcuni codici che una volta utilizzati vengono segnati appunto come "già utilizzati" per evitare che si usufruisca più volte di un singolo codice

    Dato che è molto che non programma OO ho perso la mano e mi ritrovo quindi in difficoltà anche su scelte semplicissime:
    fin'ora ho creato le classi Codice, GeneratoreCodici e GestoreCodici, in quest'ultima mantengo una lista con i Codici presenti, solo non saprei come segnare quali codici sono utilizzati e quali invece sono ancora disponibili... voi come consiglieresti di agire?
    Inizialmente pensavo di dividere le 2 tipologie di codice in 2 liste (codiciUtilizzati e codiciInutilizzati) ma non so perché ma ho la sensazione che non sia una buona scelta... come già detto è molto che non programmo quindi anche le cose più stupide per ora mi sfuggono

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Potresti spiegare la relazione tra le varie classi?

    Il GestoreCodici e il GeneratoreCodici sono collegati? Nel senso, è il GestoreCodici che attraverso il GeneratoreCodici crea un nuovo Codice oppure sono classi utilizzate separatamente?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    Si scusate, il GeneratoreCodici si occupa di generare i vari codici ed è utilizzato dal GestoreCodici proprio come specificato da Alex

    Comunque ho pensato di utilizzare all'interno del GestoreCodici una HashMap che ha come chiavi i vari codici e come valori un valore booleano che indica se il codice è già stato utilizzato o meno...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Può essere una soluzione.
    Altre tre soluzioni potrebbero essere le seguenti:

    1) Usare un semplice ArrayList<Codice>. Quando viene generato un codice, verifichi se questo è già presente nell'ArrayList ( metodo contains() ). Se non c'è, lo inserisci, altrimenti è già stato usato.

    2) Usare HashSet<Codice>. Quando viene generato un codice, provi ad inserirlo. Se l'inserimento ritorna true, significa che il codice è buono, altrimenti era già stato usato.

    3) Usare un TreeSet<Codice>. Quando viene generato un codice, provi ad inserirlo (metodo add() che ritorna un boolean). Se l'inserimento va a buon fine, ok, altrimenti significa che il codice è già stato inserito in precedenza, quindi è già stato usato.

    Sinceramente, non userei TreeSet, poichè tale struttura dati mantiene anche un ordinamento degli elementi, che a te non interessa, quindi sarebbe solo un aggravio ingiustificato.

    Non userei nemmeno ArrayList poichè avresti un'inefficienza nell'uso di contains() che deve spazzolarsi tutti gli elementi.

    Io userei HashSet.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    Beh ma come dici te dovrei usare quindi 2 collection, una per i codici utilizzati e una per i codici ancora inutilizzati, o ho capito male?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Originariamente inviato da davidinho
    Beh ma come dici te dovrei usare quindi 2 collection, una per i codici utilizzati e una per i codici ancora inutilizzati, o ho capito male?
    Forse non ho ben capito come funziona il tuo programma... i codici li genera tutti subito o all'occorrenza?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    come preferisce il cliente, è possibile fare entrambe le cose, potrebbe per esempio generare 100 codici, poi più in là generare altri 100 codici e dovrei quindi preoccuparmi di non far generare codici già creati precedentemente...
    in effetti non avevo chiarito questo punto...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Originariamente inviato da davidinho
    come preferisce il cliente, è possibile fare entrambe le cose, potrebbe per esempio generare 100 codici, poi più in là generare altri 100 codici e dovrei quindi preoccuparmi di non far generare codici già creati precedentemente...
    in effetti non avevo chiarito questo punto...
    Ok.
    Quindi, se non vado errato, il tuo è un doppio problema:

    1) Non generare codici doppi
    2) Tenere traccia, fra i codici corretti generati, di quali sono già utilizzati e quali no.

    E' corretto?

    Se è così, allora la HashMap va benissimo, mentre l'HashSet non ti serve a nulla.
    Da quel che avevo capito io, quando un codice viene generato è automatico anche che venga usato subito. Mi pare di capire che non è così.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.