[JAVA] Applicativo per gestione palestra (progettodidattico)

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
javajunior
Prode Principiante
Messaggi: 7
Iscrizione: domenica 19 maggio 2013, 12:46

[JAVA] Applicativo per gestione palestra (progettodidattico)

Messaggio da javajunior »

Buonasera a tutti,
ho un progetto in java assegnatomi dalla mia professoressa di OOP.
Il testo in questione è il seguente:
Implementare un applicativo per gestire una palestra:
Gli utenti della palestra sono oggetti così caratterizzati:
• attributi: codice_fiscale (String), nome (String), cognome (String), età (int), sesso (String),
mail (String), attività (String)
◦ l'attributo codice_fiscale è univoco per ciascun utente
◦ ogni attributo ha i propri setter e getter
Tali utenti sono memorizzati all'interno di un Database del seguente tipo:
• LinkedHashMap<String, Utente>
• La chiave d'inserimento del database è il codice_fiscale
L'applicativo da implementare consiste di un main che istanzia 4 thread di gestione (T1, T2, T3,
T4).
Ciascun Thread dispone di una propria GUI che:
• espone un'area (“Dati Personali”) all'interno della quale è possibile inserire tutti i dati
relativi a un'utente
• espone un bottone: “inserisci” che se premuto causa:
◦ la creazione di un nuovo oggetto Utente contenente tutti i campi inseriti in “Dati
Personali”
◦ l'inserimento di tale utente all'interno del Database (tale operazione di scrittura deve
essere implementata in maniera esclusiva rispetto agli altri Thread e in coerenza con
l'algoritmo dei lettori/scrittori)
◦ il lancio di un'eccezione se l'utente è già presente
• espone un bottone “Visualizza Database” che se premuto causa:
◦ La lettura di tutti gli utenti presenti nel Database (tale operazione di lettura deve essere
implementata in maniera esclusiva rispetto agli altri Thread e in coerenza con
l'algoritmo dei lettori/scrittori)
◦ il lancio di un'eccezione se non è presente alcun utente
• espone una TextArea: “DB” all'interno del quale vengono visualizzati in append gli utenti
letti dal Thread
• espone un bottone: Stop che se premuto causa:
◦ l'invio di un interrupt al primo Thread T1. Alla ricezione di tale interrupt, il thread:
▪ stampa a schermo: “bye”
▪ termina la propria esecuzione
In sostanza ho più o meno fatto tutto. Non riesco però a implementare l'ultimo punto (premendo stop-> inviare un interrupt al thread1) e non capisco bene come far si che avviando il thread si avvi la rispettiva interfaccia grafica (anche se dal testo si evince che le 4 GUI sono tutte uguali). Io ho fatto una JFRAME chiamata GUI e poi 4 classi che hanno ognuna un metodo run che richiama la GUI principale. Potete per favore darmi dei consigli in merito?
John_Marco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 311
Iscrizione: martedì 5 maggio 2009, 19:55
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS X86_64
Sesso: Maschile
Località: Potenza - Roma

Re: [JAVA] Applicativo per gestione palestra (progettodidatt

Messaggio da John_Marco »

Ciao, forse è un po' tardi per la risposta e magari non ti serve più.. Comunque provo a risponderti io, casomai servisse ancora.
Per quanto riguarda il richiamare una interfaccia grafica, credo che la tua scelta sia sensata; non ho letto completamente il testo ma le situazioni sono 2 :
1) se l'interfaccia è esattamente identica, va benissimo come hai fatto tu.
2) se l'interfaccia varia in qualcosa (ad esempio bottoni visibili o no, testo che cambia, ecc. ) magari puoi inserire nel costruttore qualche parametro che modifichi l'interfaccia in funzione di come il parametro venga settato.

Per l'altro problema, quello relativo ai thread, Java fornisce una funzione interrupt() che appunto invia un segnale ad un thread (non l'ho mai usata quindi non so dirti se esista ancora o se sia stata deprecata). Quello che dovrai fare tu è inserire un blocco try/catch che catturi una InterruptedException e, all'interno del catch, fargli effettuare la stampa e uscire.
Una alternativa all'uso del segnale è quello di utilizzare una variabile sentinella, ovvero imporre al thread di lavorare finchè questa variabile (ad esempio un booleanno) vale true. Quando premi il bottone stop setti la variabile a false e il thread termina la sua esecuzione.
Spero di esserti stato di aiuto in qualche modo
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti