Visualizzazione dei risultati da 1 a 10 su 20

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Ho visto che una persona ha usato un ArrayList di Integer (id) perché presumibilmente in Asta mantiene solo il riferimento (id) all'oggetto Offerta, stessa cosa per le informazioni. Per la persistenza i dati sono salvati tutti in un database di MapDB di tipo ConcurrentNavigableMap (non mi chiedere perché :-)). Pensi che così possa andar bene? Grazie ancora. Purtroppo non ho molta familiarità con le collection, quindi non saprei se una di loro sia meglio rispetto ad un ArrayList.
    Giusto una premessa, visto che non hai familiarità con le collection. Quelle che ho detto prima List/Set/Map/Queue sono le interfacce (quindi astrazioni "pure") principali delle 4 tipologie di collezioni. Poi per ciascuna esistono svariate implementazioni. ArrayList e LinkedList sono le due implementazioni più note di List (ma ne esistono altre).
    Quindi ArrayList NON è una cosa diversa da List ... ArrayList è-un List nel senso della relazione di ereditarietà.

    Detto questo, invece riguardo le relazioni tra oggetti, mettiamola così. Se ragioniamo solo a livello di oggetti e loro relazioni (niente DB, ORM, ecc.. in ballo) se una asta deve avere nozione di N offerte, allora è giusto che in un oggetto Asta ci sia un "insieme" (detto in generale, può essere come ripeto array o collezione) di riferimenti ad oggetti Offerta. Questo è sensato a livello object-oriented.

    MapDB non lo conosco in dettaglio (so cosa è) quindi non so dire ora se ha requisiti specifici nei confronti degli oggetti. Tenere solo gli Id ... non è sbagliato di per sé ma richiede allora che ci sia una architettura in generale tale per cui sia facile "tirar su" gli oggetti da DB a fronte del loro Id (e viceversa). Altrimenti è poco utile.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Giusto una premessa, visto che non hai familiarità con le collection. Quelle che ho detto prima List/Set/Map/Queue sono le interfacce (quindi astrazioni "pure") principali delle 4 tipologie di collezioni. Poi per ciascuna esistono svariate implementazioni. ArrayList e LinkedList sono le due implementazioni più note di List (ma ne esistono altre).
    Quindi ArrayList NON è una cosa diversa da List ... ArrayList è-un List nel senso della relazione di ereditarietà.
    Ok, grazie per la precisazione.

    Detto questo, invece riguardo le relazioni tra oggetti, mettiamola così. Se ragioniamo solo a livello di oggetti e loro relazioni (niente DB, ORM, ecc.. in ballo) se una asta deve avere nozione di N offerte, allora è giusto che in un oggetto Asta ci sia un "insieme" (detto in generale, può essere come ripeto array o collezione) di riferimenti ad oggetti Offerta. Questo è sensato a livello object-oriented.
    MapDB non lo conosco in dettaglio (so cosa è) quindi non so dire ora se ha requisiti specifici nei confronti degli oggetti. Tenere solo gli Id ... non è sbagliato di per sé ma richiede allora che ci sia una architettura in generale tale per cui sia facile "tirar su" gli oggetti da DB a fronte del loro Id (e viceversa). Altrimenti è poco utile.
    Riflettendo meglio mi rendo conto che:
    - ad un'asta possono corrispondere N offerte ma una specifica offerta può essere riferita ad una sola asta. Questo significa forse che sarebbe più sensato mettere in Offerta il riferimento all'asta ma è inutile tenere in Asta un arrayList di Offerte o comunque un qualsiasi riferimento ad Offerte...o no?
    - ad un'asta possono corrispondere N domande e N risposte, e qui la cosa si complica... perché le risposte sono riferite sia alle domande che alle aste, le domande solo alle aste.
    Non so che pesci pigliare Io avevo modellato queste classi così (ti metto solo le parti significative):

    Classe Informazioni che si occupa di modellare le domande e le risposte:

    codice:
    public class Informazioni implements Serializable {
    
        private static final long serialVersionUID = -1582157235274572596L;
        private int id;
        private String domanda;
        private String risposta;

    Classe Asta che modella le aste:
    codice:
    public class Asta implements Serializable {
    
        private static final long serialVersionUID = 6884156563697118688L;
        //informazioni inserite all'atto della creazione di una nuova asta
        private int id; //id univoco per ogni asta.
        private String venditore; //l'utente che ha inserito l'asta
        private String nomeOggetto; //il nome dell'oggetto in vendita
        private String descrizione; //la descrizione dell'oggetto in vendita
        private String categoria; //categoria di appartenenza
        private Double prezzoBase; //prezzo di partenza
        private Date dataIns; //data di inserimento dell'asta
        private Date scadenza;
        private Boolean statoAsta; //chiusa o in corso
    
        //informazione inserite successivamente
        private Offerta offertaCorrente; //l'offerta attuale
        private String vincitore; //l'utente che ha vinto l'asta (offerta più alta)
        private Informazioni info; //le domande e le risposte

    Classe che modella le Offerte:
    codice:
    public class Offerta implements Serializable {
    
        private static final long serialVersionUID = 3725421945964525829L;
        private String offerente; //l'utente che ha inserito l'offerta
        private Double offerta;

    Ma a questo punto mi sembra di aver sbagliato...
    Peraltro mi chiedo: Asta deve sapere quali sono le sue offerte e le sue informazioni? Oppure è sufficiente che Offerta sappia a quale Asta si riferisce, e Informazioni sappia ugualmente a quale asta sono riferite?
    Ultima modifica di Jamie04; 27-01-2018 a 18:47

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    - ad un'asta possono corrispondere N offerte ma una specifica offerta può essere riferita ad una sola asta. Questo significa forse che sarebbe più sensato mettere in Offerta il riferimento all'asta ma è inutile tenere in Asta un arrayList di Offerte o comunque un qualsiasi riferimento ad Offerte...o no?
    Dipende .... nel senso che a livello di relazioni tra oggetti è perfettamente possibile (e sensato) avere una o entrambe le seguenti cose:
    - un oggetto Asta ha il riferimento a N oggetti Offerta
    - un oggetto Offerta ha il riferimento all'oggetto Asta relativa

    Quale delle due (o se entrambe le cose) tenere, dipende molto da COSA ci devi fare con quelle informazioni. Se un requisito della applicazione è di fare ad esempio frequenti ricerche/elaborazioni sulle offerte di una certa asta .... allora conviene tenere in Asta i riferimenti alle offerte. Altrimenti ti dai la classica zappa sui piedi ...

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    - ad un'asta possono corrispondere N domande e N risposte, e qui la cosa si complica... perché le risposte sono riferite sia alle domande che alle aste, le domande solo alle aste.
    Mettiamola così. Se una domanda è associata all'asta e a quella domanda è associata solo una singola risposta, allora HA senso fare una classe (es. Questione) che contiene domanda e risposta. E poi l'Asta avrebbe N oggetti Questione.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.