none
Programmazione ad Oggetti: Consiglio su come meglio operare e generazione classi partendo da file. RRS feed

  • Discussione generale

  • Buongiorno a tutti.

    Sto sviluppando un programma che, al suo interno, deve gestire una serie di prodotti.

    Ci sono 4 tipologie di prodotti, e all'interno di ogni categorie le varie "sotto-categorie".

    Esempio: Un alimentari vende queste tipologie di prodotti: Pasta, Olio.
    Pasta: Spaghetti (SP), Fusilli (FS), Penne (PN), Mezzi-Rigatoni (MR).
    Olio: D'Oliva (OL), Di Girasoli (GS), Di Palma (PL).

    Quando viene acquistato un prodotto, viene generato un codice d'acquisto.
    Nel caso della pasta: [Quantità di confezioni acquistate della stessa pasta] [Codice] [Peso]
    Nel caso dell'olio: [Quantità di bottiglie di un olio acquistate] [Codice]

    Se ad esempio vengono acquistate 2 scatole di penne da mezzo chilo, e una bottiglia di olio d'oliva (Gli oli hanno peso standard), i codici generati saranno i seguenti: 2PN500, 1OL.

    I dati di ogni "scontrino" saranno salvati su un CSV che il mio programma riceverà in input.

    Io non devo far altro che estrarre le informazioni necessarie e lavorarci, ma mi attanaglia un dubbio.

    La classe "Scontrino" possiederà una lista di "Prodotto".

    Prodotto è una classe astratta con campi e metodi che vengono condivisi da tutti i prodotti.

    Creo le sotto-classi che ereditano da "Prodotto", con il nome delle varie categorie (Pasta, Olio) e i metodi sovrascritti dalla classe madre "Prodotto" (Come quello per estrarre il codice d'acquisto, ad esempio, che mi servirà in futuro e che è diverso per ogni categoria).

    Ora, il dubbio è questo. Rendo le categorie classi astratte e creo altre sotto-classi reali chiamate con il nome dei prodotti effettivi (Pasta -> Spaghetti, Penne, Fusilli, Mezzi-Rigatoni / Olio -> D'Oliva, Di Girasoli, Di Palma) oppure mi limito alle categorie identificate da classi reali con campi: "Nome", "Codice" + altri campi che ora non interessano che vengono riempiti ogni volta che viene caricato un prodotto? (Quindi, ad esempio: Pasta[Fusilli, FS])

    Inoltre, devo offrire la possibilità di aggiungere eventuali prodotti sotto le categorie prestabilite. Ad esempio se dovesse arrivare un nuovo tipo di pasta, il proprietario dovrà avere la possibilità di inserirla. Nel secondo caso non ci sarebbe nessun problema, creo un file con all'interno memorizzate tutte le categorie e le sotto-categorie che viene caricato in memoria e utilizzato per fare confronti con il CSV per stabilire quale categoria creare e come riempirla. Nel momento in cui dovesse essere aggiunto un nuovo tipo di pasta, basterà aggiornare quel file tramite software.
    Ma nel primo caso? Come faccio ad automatizzare la creazione di una classe? E' possibile?

    Grazie mille in anticipo per la vostra disponibilità!

    venerdì 24 agosto 2018 08:13

Tutte le risposte

  • Tutto è possibile, ma creare classi (nel senso di scrivere proprio il file della classe....) dinamicamente e, soprattutto, utilizzarle poi dopo diventa complicato, personalmente eviterei questa strada.

    Se vuoi comunque automatizzare al massimo questa operazione a livello di codice creerei solo la classe Prodotto, che poi avrà n istanze per categoria....

    Oppure prevedi a monte una serie di possibili categorie in cui il proprietario può caricare i suoi prodotti, nel caso in cui ne manchi una dovresti però chiaramente aggiornare il codice.

    La strada da prendere secondo me dipende principalmente da alcuni fattori:

    • Quanto è tipizzato questo eCommerce? si parla solo di alimentari oppure ci può essere un po' di tutto?
    • I proprietari della merce si registrano e caricano liberamente oppure c'è una sorta di accordo tra voi (cioè sai a priori cosa venderai in linea di massima e chi lo fornisce?)
    • Le varie categorie hanno bisogno di metodi specifici oppure se definisci alcuni metodi nella classe Prodotto vanno poi bene a tutti? Se ogni categoria esegue azioni diverse richiamando, ad esempio, il metodo 'Add()' credo sia abbastanza complicato da automatizzare

    venerdì 24 agosto 2018 17:12
  • Buongiorno, 

    Ha per caso la possibbilita' di risponderci sul suo problema?


    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    lunedì 27 agosto 2018 08:21
    Moderatore