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

    Java istanza di una classe uguale per tutte le classi del pacchetto

    Salve, io ho un programma da fare per la gestione di uno stadio: ho una classe amministratore e una classe cliente. Come faccio a rendere le istanze di classi come stadio, partita, squadra uguali per entrambe le classi? Mi spiego meglio, io creo le istanze di queste classi con la classe amministratore, come faccio ad avere la stessa istanza con la classe cliente? Grazie a tutti per l'aiuto
    Ultima modifica di Aleandro23; 30-08-2016 a 21:53

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sposto nel forum dedicato a Java.
    Posta un po' di codice che hai scritto, così si capisce meglio la problematica.


    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Aleandro23 Visualizza il messaggio
    ho una classe amministratore e una classe cliente. Come faccio a rendere le istanze di classi come stadio, partita, squadra uguali per entrambe le classi? Mi spiego meglio, io creo le istanze di queste classi con la classe amministratore, come faccio ad avere la stessa istanza con la classe cliente?
    Spiega meglio ... perché non è per niente chiaro! A cosa servono amministratore e cliente? Quale è il loro comportamento e su cosa operano?
    Chiarisci anche quali sono le relazioni tra le classi, ad esempio mi viene sicuramente da pensare che un oggetto Partita ha i riferimenti a due oggetti Squadra.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Spiega meglio ... perché non è per niente chiaro! A cosa servono amministratore e cliente? Quale è il loro comportamento e su cosa operano?
    Chiarisci anche quali sono le relazioni tra le classi, ad esempio mi viene sicuramente da pensare che un oggetto Partita ha i riferimenti a due oggetti Squadra.
    Ho amministratore che è quello che gestisce il sistema: il suo compito è quello di aggiungere le partite, di conseguenza deve aggiungere anche gli stadi le squadre. Il cliente invece deve prenotare un biglietto per una determinata partita. Il problema è quindi avere in cliente le stesse istanze di partita che ha precedentemente creato la classe amministratore, in modo tale da poter prenotare un biglietto per una partita. Partita ha 2 oggetti squadra e uno stadio, amministratore ha 1 oggetto partita e cliente 1 oggetto partita.
    Ultima modifica di Aleandro23; 31-08-2016 a 11:18

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Aleandro23 Visualizza il messaggio
    Il problema è quindi avere in cliente le stesse istanze di partita che ha precedentemente creato la classe amministratore
    Innanzitutto te lo dico subito: non è sempre immediato o facile rappresentare e realizzare in termini OOP degli scenari del mondo reale, come quello ad esempio del calcio. Perché bisogna individuare bene le entità coinvolte e soprattutto quali sono i loro "comportamenti".
    Riguardo quello che chiedi cioè "le stesse istanze" (ho intuito cosa intendi) ti dico anche: di questo NON ti preoccupare ora. A questo ci arrivi se "modelli" bene tutte le varie entità, decidendo bene dove devono stare le informazioni e come fare per estrarle/ricercarle.

    E fino ad adesso mi pare che sei ancora un pochino lontano. La cosa sicura e abbastanza ovvia è che un oggetto Partita ha di certo i riferimenti a due oggetti Squadra e un oggetto Stadio. Questo è molto logico e lineare. Magari Partita potrebbe avere anche una data ....

    Ma il resto è ancora un po' oscuro. Quando dell'amministratore dici "il suo compito è quello di aggiungere le partite", bene le aggiunge DOVE? Un oggetto Amministratore contiene una collezione di oggetti Partita? O la collezione è altrove?

    Pensa meglio a questi aspetti, in particolare ai "comportamenti" e alle responsabilità degli oggetti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto te lo dico subito: non è sempre immediato o facile rappresentare e realizzare in termini OOP degli scenari del mondo reale, come quello ad esempio del calcio. Perché bisogna individuare bene le entità coinvolte e soprattutto quali sono i loro "comportamenti".
    Riguardo quello che chiedi cioè "le stesse istanze" (ho intuito cosa intendi) ti dico anche: di questo NON ti preoccupare ora. A questo ci arrivi se "modelli" bene tutte le varie entità, decidendo bene dove devono stare le informazioni e come fare per estrarle/ricercarle.

    E fino ad adesso mi pare che sei ancora un pochino lontano. La cosa sicura e abbastanza ovvia è che un oggetto Partita ha di certo i riferimenti a due oggetti Squadra e un oggetto Stadio. Questo è molto logico e lineare. Magari Partita potrebbe avere anche una data ....

    Ma il resto è ancora un po' oscuro. Quando dell'amministratore dici "il suo compito è quello di aggiungere le partite", bene le aggiunge DOVE? Un oggetto Amministratore contiene una collezione di oggetti Partita? O la collezione è altrove?

    Pensa meglio a questi aspetti, in particolare ai "comportamenti" e alle responsabilità degli oggetti.
    Inizialmente avevo pensato di fare una collezione di oggetti partita in Amministratore, ma poi non so come accedere alla stessa collezione creata in Amministratore anche in Cliente. Se istanzio una collezione di Partita in cliente, essa sarà vuota, ed è questo il problema che mi ha fatto bloccare. Magari la soluzione è semplice ma io non riesco ad uscirne . Forse dovrei dichiarare la collezione fuori da essa, ma non mi viene in mente proprio niente.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da Aleandro23 Visualizza il messaggio
    Inizialmente avevo pensato di fare una collezione di oggetti partita in Amministratore, ma poi non so come accedere alla stessa collezione creata in Amministratore anche in Cliente. Se istanzio una collezione di Partita in cliente, essa sarà vuota, ed è questo il problema che mi ha fatto bloccare. Magari la soluzione è semplice ma io non riesco ad uscirne . Forse dovrei dichiarare la collezione fuori da essa, ma non mi viene in mente proprio niente.
    Posso chiedere se devi risolvere un esercizio inventato da te o da altri o se vuoi realizzare un programma per gestire un contesto di riferimento esatto?

    Se ad esempio le partite a cui fai riferimento fanno parte di qualche torneo, avrebbe senso gestire anche entità come torneo (volendo con tutte le varie sottoclassi di cui potresti avere bisogno), che avrebbe all'interno le partite, in una collezione o in qualcosa di più elaborato a seconda delle necessità, ad esempio se vuoi trattare diversamente qualificazioni, gironi, fasi finali o quant'altro...

    In questo caso l'amministratore potrebbe creare "l'evento" scegliendo lo stadio, la data (a seconda dei casi però questo potrebbe essere già fissato in un calendario) per ogni partita presente in torneo, mentre il cliente potrebbe comprare un biglietto scegliendo fra tutte le partite, sempre riferendosi allo stesso torneo.

    Ovviamente a seconda del tuo caso tutto può avere più o meno senso, comunque in generale non è un problema il " accedere alla stessa collezione " o istanza di una classe, puoi farlo ad esempio tenendo i reference nei posti giusti o (soluzione un po' bruttina) avere metodi statici in qualche classe esterna...

    La cosa più difficile più che farlo è il farlo bene, con un design appropriato e tutto il resto

  8. #8
    E' un progetto datoci dal professore per un corso universitario. La traccia è questa:
    "Si vuole realizzare un software per la gestione di una struttura sportiva che comprenda più stadi in cui è possibiledisputare partite di calcio. Il software deve fornire operazioni utili per i clienti e per il gestore della struttura. In
    particolare nella modalità cliente deve essere possibile:
    1. visualizzare tutte le partite programmate in una determinata settimana o tutte le partite che si svolgono in un determinato stadio;
    2. visualizzare la lista delle partite non ancora iniziate consentendo la loro visualizzazione:
    a. in ordine cronologico,
    b. in ordine crescente rispetto all’identificativo di stadio,
    c. in ordine lessicografico crescente rispetto al nome delle squadre che si affrontano;
    3. accede ai dettagli di una determinata partita e dare la possibilità di
    a. prenotare un biglietto nello stadio in cui sarà disputata;
    b. acquistare un biglietto per cui si è effettuata una prenotazione;
    c. acquistare un biglietto direttamente (senza averlo prenotato).
    4. visualizzare le prenotazioni effettuate;
    5. visualizzare gli acquisti effettuati;
    6. cancellare la prenotazione di una partita;

    Nella modalità gestore deve essere possibile:
    1. inserire partite di calcio nel calendario delle partite programmate;
    2. visualizzare le partite in base alla capienza degli stadi o in ordine cronologico;
    3. attivare politiche di sconto sui biglietti;
    4. assegnare un prezzo alle partite che si svolgono in un determinato stadio (il costo sarà lo stesso per tutti i settori);
    5. aumentare o ridurre la capienza degli stadi;
    6. visualizzare l’incasso totale e per ogni stadio."

    Il mio problema per ora è rendere la collezione partite uguale sia nella classe Amministratore(o Gestore), sia nella classe Cliente.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Aleandro23 Visualizza il messaggio
    E' un progetto datoci dal professore per un corso universitario. La traccia è questa:
    [...]
    La traccia e i punti elencati indicano che il progetto non è affatto "banale", implica svariate questioni e valutazioni su come gestire, ordinare, ricercare e presentare i dati.

    E oltretutto, a me personalmente, non è chiaro cosa intende per "modalità cliente" e "modalità gestore". Innanzitutto è una applicazione "console" o "grafica"? Riferito a queste due modalità, cosa vuol dire? Che la applicazione deve essere avviabile in due modi differenti e offrire una interazione differente a seconda della modalità? Allora vuol anche dire che ci deve essere una base dati "persistente" su disco?
    Se la modalità differente significa che il programma deve avere una "interfaccia" verso l'utente differente, allora NON vuol per forza dire che devi avere classi come Cliente e Amministratore!

    Quote Originariamente inviata da Aleandro23 Visualizza il messaggio
    Il mio problema per ora è rendere la collezione partite uguale sia nella classe Amministratore(o Gestore), sia nella classe Cliente.
    No, mi spiace contraddirti ma NON è questo il punto importante/fondamentale. Ripeto che a questo CI ARRIVI solo quando avrai scelto il "design" giusto delle classi che permette a livello "logico" (qui NON c'entra come visualizzi/chiedi i dati) di strutturare i dati e di esporre le funzioni adatte ad inserire, estrarre/cercare le informazioni.
    Insomma, l'avere gli stessi oggetti è una conseguenza delle tue scelte a livello di design, NON l'obiettivo primario né iniziale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Aggiungo che dal mio punto di vista la traccia lascia molte questioni aperte, forse chi ha scritto l'esercizio non vuole limitare troppo gli studenti ma vedere invece cosa ne esce fuori, oppure sono disponibili altre informazioni (esercizi simili, consegne verbali.. ) che noi non abbiamo.

    Scrivo solo alcune delle perplessità che possono venire in mente, tanto per dare un'idea :

    - Appare evidente che dovrai avere una classe Stadio per gestire dati come l'identificativo, l'incasso relativo al singolo stadio e la capienza (mentre l'elenco delle partite che si disputano in uno stadio [per Cliente - Punto 1] può essere reperito in svariati modi, assegnando ad ogni stadio una lista di partite, mantenendo da qualche parte una mappa di partite con lo stadio come chiave, etc.).
    Dalla traccia però si capisce solo che il gestore può aumentarne o diminuirne la capienza, ma chi li crea gli stadi?
    Vengono inizializzati a piacere all'inizio del programma? Vengono caricati da un file di testo? Oppure è solo importante che venga creata la struttura del programma, e non andrai poi ad eseguire effettivamente le operazioni ? ( O altro ...?)

    - Cosa si intende per settimana nel tuo contesto? Perché la visualizzazione in ordine cronologico potrebbe far presupporre l'uso di date effettive e delle classi Date, Calendar e quant'altro (e distinguere le varie settimane non sarebbe proprio immediato), ma per quanto ne sappiamo potresti considerare la settimana solo come un numero intero, da 1 a 52 se ti riferisci ad un anno solare per esempio...

    Per quanto riguarda la modalità cliente o amministratore, basandomi sugli esercizi che ho fatto io all'università mi verrebbe da pensare più a un'applicazione console, in cui dai solo in input la modalità di esecuzione, tralasciando problemi come l'autenticazione o cose del genere, sbaglio?

    In ogni caso come dice andbin una classe Amministratore appare abbastanza superflua se hai una modalità amministratore, mentre una classe Cliente potrebbe essere buona per conservare informazioni come le prenotazioni effettuate e i biglietti acquistati.

    Prima di focalizzarti sul singolo problema però, perché non ti fai uno schema con tutte le classi che vorresti modellare, i compiti e i metodi delle varie classi, le variabili da memorizzare etc.?

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.