Schum4k3r
03-01-2005, 16:29
Ho creato il metodo seguente
public void aggiungiaula(String nome, int posti)
{
Aula nome = new Aula();
che ovviamente nn funziona....come posso fare a passare un nome al riferimento dell'oggetto attraverso il metodo?
allego anke il problema per chiarezza.
Si realizzi un’applicazione Java per la gestione delle prenotazioni di un insieme di aule
da parte di una comunit`a.
Ogni aula `e dotata di diversi attributi fra cui: numero dei posti, presenza di un
sistema di proiezione, presenza di un sistema di videoconferenza.
Un utente (docente, tutor, tecnico, esterno) pu`o chiedere al sistema di prenotare:
• una certa aula
• in un certo giorno
• per una certa ora singola
• per una certa attivit`a (deve essere fornita una descrizione)
Il sistema deve fare in modo che non ci siano sovrapposizioni fra le prenotazioni.
Le aule possono essere prenotate solo nei giorni feriali (sabato escluso) e solo a partire
da una certa ora “intera” (non sono ammesse cio`e prenotazioni che ad esempio partono
alle 9:30 - ma solo alle 9:00 o 10:00 etc.)
In ogni giornata le aule sono fruibili dalle ore 8:00 del mattino fino alle ore 19:00
della sera. Non possono essere accettate prenotazioni fuori da questo orario.
Un utente, inoltre, pu`o richiedere sempre al sistema di cancellare una certa ora - in
una certa aula, in un certo giorno - delle sue prenotazioni.
Il sistema, per aiutare il richiedente a fare le sue prenotazioni, deve anche fornire la
possibilit`a di fare ricerche con diversi criteri. In particolare il sistema deve permettere di:
• Cercare, se c’`e, un’aula libera:
– in un dato giorno
– per un certo numero di ore consecutive o no (se nella richiesta viene indicato
che si desiderano ore consecutive allora tale vincolo deve essere rispettato,
altrimenti non c’`e nessun vincolo: le ore possono essere consecutive o no)
– il cui numero di posti sia maggiore uguale a un certo numero dato
– i cui attributi soddisfino alcune richieste date sulla presenza di strumenti
didattici (videoconferenza etc.)
• Visualizzare tutte le prenotazioni di una data aula in un dato giorno
1
• Visualizzare tutte le prenotazioni fatte da un dato utente nell’arco di tempo
individuato da due date fornite.
I risultati delle ricerche devono fornire la visualizzazione di tutte le prenotazioni dell’aula
trovata, nel giorno in questione, oltre all’indicazione delle ore libere oggetto della
ricerca.
Coloro che sostengono un esame da 6 CFU devono inoltre implementare
le seguenti funzionalit`a:
• Uno stesso utente pu`o prenotare, dopo sua conferma esplicita alla segnalazione di
sovrapposizione che deve essere data dal sistema, una stessa aula in uno stesso
orario per attivit`a diverse
• Il sistema deve permettere di cercare, se c’`e, la prima aula libera in una certa
settimana (quindi se ce n’`e una di luned`ı il sistema deve indicare quella) per un
certo numero di ore anche non consecutive ma nello stesso giorno:
– il cui numero di posti sia maggiore uguale a un certo numero dato
– i cui attributi soddisfino alcune date richieste sulla presenza di strumenti
didattici (videoconferenza etc.)
Per quanto riguarda quest’ultima ricerca se due o pi`u aule soddisfano la richiesta per
lo stesso giorno (e questo giorno `e il primo, nella settimana data, che ha almeno un’aula
che soddisfa le richieste) non `e importante scegliere quella le cui ore libere iniziano prima
delle altre: pu`o esserne scelta una qualsiasi.
Sia gli studenti che devono ottenere 5 CFU, sia quelli che ne devono
ottenere 6, devono fornire una classe Test che illustri tutte le funzionalit`a implementate.
2 Suggerimenti di progettazione e implementazione
La prima fase di approccio alla realizzazione dell’applicazione richiesta `e, come sappiamo,
un’adeguata progettazione secondo le caratteristiche tipiche della programmazione ad
oggetti.
In particolare `e della massima importanza definire le classi che si vogliono scrivere e
il loro esatto significato. In questa fase `e bene riflettere bene sui concetti che si vogliono
rappresentare e badare che ogni classe rappresenti un singolo concetto.
Per quanto riguarda l’applicazione da realizzare nel progetto il suggerimento `e quello
di individuare, tra eventuali altre, le seguenti classi:
Utente Gli oggetti di questa classe sono le persone che hanno accesso al sistema per le
prenotazioni, le cancellazioni e le ricerche
Aula Gli oggetti di questa classe sono le aule che si possono prenotare, con i loro attributi
GestoreAule Un oggetto di questa classe deve mantenere una collezione di un certo
numero di aule, permettendo l’aggiunta di nuove aule. Inoltre potrebbe essere in
grado di ricercare, su richiesta, aule che hanno certe caratteristiche (numero di
posti, presenza di macchinari, etc.)
2
Prenotazione Un oggetto di questa classe rappresenta una prenotazione di una certa
aula, da parte di un certo utente, in un certo giorno per una certa ora singola (`e
bene che la granularit`a delle prenotazioni sia questa: in questo modo risulta pi`u
semplice la gestione di prenotazioni con ore consecutive e non)
DatabasePrenotazioni Un oggetto di questa classe mantiene una collezione di prenotazioni
effettuate. Deve permettere l’inserimento di nuove prenotazioni (controllando
che non ci siano sovrapposizioni) e la cancellazione di prenotazioni (controllando
che l’utente che cancella sia colui che ha effettuato la prenotazione)
GestoreRicerche Un oggetto di questa classe, attraverso un certo oggetto di
DatabasePrenotazioni, mette a disposizione dei metodi per effettuare le ricerche
e visualizzazioni previste
CaratteristicheAula Un oggetto di questa classe pu`o essere utile per rappresentare
un tipo di attributi richiesti ad un aula durante una ricerca. Potrebbe implementare
facilmente un metodo boolean satisfies(Aula a) che indica se la data aula
soddisfa i criteri in esso definiti.
Data Un oggetto di questa classe rappresenta una certa data: giorno mese e anno
DataEOra Un oggetto di questa classe rappresenta una certa ora di un certo giorno.
public void aggiungiaula(String nome, int posti)
{
Aula nome = new Aula();
che ovviamente nn funziona....come posso fare a passare un nome al riferimento dell'oggetto attraverso il metodo?
allego anke il problema per chiarezza.
Si realizzi un’applicazione Java per la gestione delle prenotazioni di un insieme di aule
da parte di una comunit`a.
Ogni aula `e dotata di diversi attributi fra cui: numero dei posti, presenza di un
sistema di proiezione, presenza di un sistema di videoconferenza.
Un utente (docente, tutor, tecnico, esterno) pu`o chiedere al sistema di prenotare:
• una certa aula
• in un certo giorno
• per una certa ora singola
• per una certa attivit`a (deve essere fornita una descrizione)
Il sistema deve fare in modo che non ci siano sovrapposizioni fra le prenotazioni.
Le aule possono essere prenotate solo nei giorni feriali (sabato escluso) e solo a partire
da una certa ora “intera” (non sono ammesse cio`e prenotazioni che ad esempio partono
alle 9:30 - ma solo alle 9:00 o 10:00 etc.)
In ogni giornata le aule sono fruibili dalle ore 8:00 del mattino fino alle ore 19:00
della sera. Non possono essere accettate prenotazioni fuori da questo orario.
Un utente, inoltre, pu`o richiedere sempre al sistema di cancellare una certa ora - in
una certa aula, in un certo giorno - delle sue prenotazioni.
Il sistema, per aiutare il richiedente a fare le sue prenotazioni, deve anche fornire la
possibilit`a di fare ricerche con diversi criteri. In particolare il sistema deve permettere di:
• Cercare, se c’`e, un’aula libera:
– in un dato giorno
– per un certo numero di ore consecutive o no (se nella richiesta viene indicato
che si desiderano ore consecutive allora tale vincolo deve essere rispettato,
altrimenti non c’`e nessun vincolo: le ore possono essere consecutive o no)
– il cui numero di posti sia maggiore uguale a un certo numero dato
– i cui attributi soddisfino alcune richieste date sulla presenza di strumenti
didattici (videoconferenza etc.)
• Visualizzare tutte le prenotazioni di una data aula in un dato giorno
1
• Visualizzare tutte le prenotazioni fatte da un dato utente nell’arco di tempo
individuato da due date fornite.
I risultati delle ricerche devono fornire la visualizzazione di tutte le prenotazioni dell’aula
trovata, nel giorno in questione, oltre all’indicazione delle ore libere oggetto della
ricerca.
Coloro che sostengono un esame da 6 CFU devono inoltre implementare
le seguenti funzionalit`a:
• Uno stesso utente pu`o prenotare, dopo sua conferma esplicita alla segnalazione di
sovrapposizione che deve essere data dal sistema, una stessa aula in uno stesso
orario per attivit`a diverse
• Il sistema deve permettere di cercare, se c’`e, la prima aula libera in una certa
settimana (quindi se ce n’`e una di luned`ı il sistema deve indicare quella) per un
certo numero di ore anche non consecutive ma nello stesso giorno:
– il cui numero di posti sia maggiore uguale a un certo numero dato
– i cui attributi soddisfino alcune date richieste sulla presenza di strumenti
didattici (videoconferenza etc.)
Per quanto riguarda quest’ultima ricerca se due o pi`u aule soddisfano la richiesta per
lo stesso giorno (e questo giorno `e il primo, nella settimana data, che ha almeno un’aula
che soddisfa le richieste) non `e importante scegliere quella le cui ore libere iniziano prima
delle altre: pu`o esserne scelta una qualsiasi.
Sia gli studenti che devono ottenere 5 CFU, sia quelli che ne devono
ottenere 6, devono fornire una classe Test che illustri tutte le funzionalit`a implementate.
2 Suggerimenti di progettazione e implementazione
La prima fase di approccio alla realizzazione dell’applicazione richiesta `e, come sappiamo,
un’adeguata progettazione secondo le caratteristiche tipiche della programmazione ad
oggetti.
In particolare `e della massima importanza definire le classi che si vogliono scrivere e
il loro esatto significato. In questa fase `e bene riflettere bene sui concetti che si vogliono
rappresentare e badare che ogni classe rappresenti un singolo concetto.
Per quanto riguarda l’applicazione da realizzare nel progetto il suggerimento `e quello
di individuare, tra eventuali altre, le seguenti classi:
Utente Gli oggetti di questa classe sono le persone che hanno accesso al sistema per le
prenotazioni, le cancellazioni e le ricerche
Aula Gli oggetti di questa classe sono le aule che si possono prenotare, con i loro attributi
GestoreAule Un oggetto di questa classe deve mantenere una collezione di un certo
numero di aule, permettendo l’aggiunta di nuove aule. Inoltre potrebbe essere in
grado di ricercare, su richiesta, aule che hanno certe caratteristiche (numero di
posti, presenza di macchinari, etc.)
2
Prenotazione Un oggetto di questa classe rappresenta una prenotazione di una certa
aula, da parte di un certo utente, in un certo giorno per una certa ora singola (`e
bene che la granularit`a delle prenotazioni sia questa: in questo modo risulta pi`u
semplice la gestione di prenotazioni con ore consecutive e non)
DatabasePrenotazioni Un oggetto di questa classe mantiene una collezione di prenotazioni
effettuate. Deve permettere l’inserimento di nuove prenotazioni (controllando
che non ci siano sovrapposizioni) e la cancellazione di prenotazioni (controllando
che l’utente che cancella sia colui che ha effettuato la prenotazione)
GestoreRicerche Un oggetto di questa classe, attraverso un certo oggetto di
DatabasePrenotazioni, mette a disposizione dei metodi per effettuare le ricerche
e visualizzazioni previste
CaratteristicheAula Un oggetto di questa classe pu`o essere utile per rappresentare
un tipo di attributi richiesti ad un aula durante una ricerca. Potrebbe implementare
facilmente un metodo boolean satisfies(Aula a) che indica se la data aula
soddisfa i criteri in esso definiti.
Data Un oggetto di questa classe rappresenta una certa data: giorno mese e anno
DataEOra Un oggetto di questa classe rappresenta una certa ora di un certo giorno.