Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [UML] Dubbio classe associativa

    Ciao a tutti, vorrei postare questo problema di UML. Soprattuto lo dico al moderatore: non sapevo veramente dove postarlo, non ho visto sezioni apposite, ed ho cercato di metterlo nella sezione più vicina possibile...puoi sportarlo se pensi che nn sia la sezione adatta
    Avevo un dubbio su questo esercizio legato alla classe associativa soprattutto. Vi riporto la parte della traccia interessata

    I clienti dell’attività commerciale possono eseguire ordini di articoli disponibili in magazzino. Per ogni ordine eseguito, si devono memorizzare i dati del cliente (nome,cognome,...), la data ed un ID numerico dell’ordine, nonché le quantità ordinate di ciascun articolo, il tipo di consegna richiesta (ordinaria o espressa) ed il costo totale.
    Adesso io ho immaginato questa soluzione:


    Che ne dite? E' corretta o avete altre possibili soluzioni?

    Inoltre, dato che mi trovo, vorrei capire COME IMPLEMENTARE LA CLASSE ASSOCIATIVA. Nel codice la devo vedere come se fosse una classe normale legata alle altre due classi tramite associazioni 1 a molti? Se sì, devo mettere un array in Articolo, in Dettaglio, in Ordine, o in piu classi?
    Ciao e grazie per le risposte! Questo forum è fantastico

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Nel codice la classe associativa (che hai chiamato Dettaglio) conterrà solo un puntatore alla classe Ordine e un puntatore alla classe Articolo.

    Le classi "Ordine", "Articolo", "Dettaglio" e "Cliente" non contengono alcun array o lista.
    Ognuna di quella classi rappresenta 1 ordine, 1 articolo, 1 dettaglio e 1 cliente.

    Da qualche parte nella tua applicazione avrai una classe (o più classi) che conterranno liste di Ordini, Articoli, Dettagli e Clienti.

    Per farla semplice puoi per iniziare col fare una semplice classe Applicazione che contiene:
    class Applicazione {
    ArrayList<Cliente> clienti;
    ArrayList<Articolo> articoli;
    ArrayList<Ordine> ordini;
    ArrayList<Dettaglio> dettagli;

    ... seguono i metodi per aggiungere/modificare/cancellare clienti, articoli, ordini, dettagli ...
    }

    Ciao.

  3. #3
    Ciao coder, grazie per la risposta.
    Il fatto che tu già mi parli di codice significa che la soluzione di progetto che ho pensato sia buona.
    L'implementazione era un problema secondario, e mi sono giusto dimenticato di dire che la dovrei fare con Java. Quindi per adesso mi accontento del fatto di aver capito che dovevo fare, adesso mi metterò sotto con l'implementazione

    Inolte volevo chiedere un ulteriore dubbio sulle classi associative: queste classi possono essere oggetto di ulteriori associazioni? E potrebbero essere il padre di una nuova gerarchia?

    Grazie mille per le risposte!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Diciamo che le tue problematiche sono assolutamente basiche nel campo dei database.

    Se googli "tabella associativa" (ma probabilmente sai già) troverai un mondo di cose.

    Ogni volta che su un database devi realizzare una associazione tanti a tanti ci vuole per forza una tabella intermedia,
    detta tabella associtiva, nel tuo caso rappresentata dalla classe Dettaglio.

    P.S. Se la tua tabella associativa (Dettagli) è la mera associazione tra gli Ordini e gli Articoli
    puoi anche evitare di implementare la classe Dettagli e implementare allora la classe Ordine così:

    class Ordine {
    ArrayList<Articolo> articoli;
    }

    nella classe Applicazione metterai allora solo le liste di Articoli, Ordini e Clienti.

    Ciao.

  5. #5
    Ciao coder, non voglio mettere in dubbio le tue conoscenze e la tua grande voglia nell'aiutare gli altri, però forse hai frainteso proprio il modello di base.
    Il mio modello è un semplice modello del dominio del sistema, fatto tramite class diagram dell'UML per modellare sistemi Object-Oriented. Ancora non sono entrato nel campo dei database, e la classe associativa Dettaglio non serviva per legare associatione molti a molti. Quello è il modello Entità-Relazione, diverso da quello OO.

    Spero che ci siamo chiariti sul qui pro quo. E grazie ancora per il tuo tempo, almeno cerchi di aiutarmi e lo apprezzo

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Ricapitolando, dovessi implementare quello che hai scritto userei:

    class Articolo {
    ...
    }

    class Cliente {
    ...
    }

    class Ordine {
    Cliente cliente;
    ArrayList<Articolo> articoli;
    ...
    }

    class Applicazione {
    ArrayList<Cliente> clienti;
    ArrayList<Articolo> articoli;
    ArrayList<Ordine> ordini;

    ... seguono i metodi per aggiungere/modificare/cancellare clienti, articoli, ordini
    }

    Ciao.

  7. #7
    Questa tua soluzione è alquanto nuova per me, mi servirebbero delle delucidazioni.
    - La classe associativa Dettaglio scompare del tutto?
    - Cliente e Articolo non sono provviste di nessun collegamento?
    - E soprattutto perchè creare una classe applicazione che ha gli arraylist di articolo- ordine-clienti ?

    Continuo a pensare il perchè della tua implementazione, ma non vedo nessuna connessione con il modello che ho descritto io...Per caso tu cambieresti proprio la disposizione delle classi nel class diagram?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Allora, io quando progetto un programma come questo che è evidente che è basato su
    database parto dal progettare il db.

    In questo caso ci sarebbero le tabelle:
    Clienti, Articoli, Ordini, ArticoliOrdini (che tu chiami Dettaglio che sarebbe la tabella associativa)

    Poi progetto le classi java, utilizzando un sistema di persistenza tipo jpa (Java persistence api).
    Creo dunque le classi (@Entity):
    Cliente (mappato sulla tabella Clienti)
    Articolo (su Articoli)
    Ordine (su Ordini e anche su ArticoliOrdini utilizzando @JoinTable)

    La classe associativa Dettaglio scompare del tutto?


    Cliente e Articolo non sono provviste di nessun collegamento?
    No, come la tabella Clienti e Articoli non hanno chiavi esterne, così non ce le hanno le classi

    codice:
    E soprattutto perchè creare una classe applicazione che ha gli arraylist di articolo- ordine-clienti ?
    Perché da qualche parte l'elenco dei clienti, degli articoli e degli ordini lo devi mettere no?
    Ovviamente se utilizzi la persistenza passerai questi array alla libreria per leggerli o scriverli sul db.

    Per caso tu cambieresti proprio la disposizione delle classi nel class diagram?
    La cambierei per rispecchiare l'implementazione che ti ho spiegato.

    Ciao.

  9. #9
    Adesso è chiaro!
    Il fatto è che non ragionavo dal db, ma bensì dall'alto. Il fatto è che nel progetto non bisogna addentrarsi sulla persistenza dei dati, quindi adesso vedrò un pò quale usare dei due

    Inolte volevo chiedere un ulteriore dubbio sulle classi associative: queste classi possono essere oggetto di ulteriori associazioni? E potrebbero essere il padre di una nuova gerarchia? Cioè ad esempio, se ho un progetto del genere, è possibile fare questo?


    A parte che non sono sicuro se l'ho fatto bene, ma è possibile che una classe associativa poi possa essere associata ad un'altra classe?

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Appello intendi? non lo so...
    Io faccio un utilizzo molto basico dell'uml e cerco anche di minimizzare le relazioni tra le classi
    (minimo accoppiamento a scapito della navigazione tra le classi).
    Lascio a chi ne sa di più. Ciao.

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