|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
[Java] Domanda su creazione oggetti
Ho creato il metodo seguente
Codice:
public void aggiungiaula(String nome, int posti)
{
Aula nome = new Aula();
allego anke il problema per chiarezza. Codice:
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.
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 752
|
Non ho il tempo materiale per leggere le specifiche interamente.
Non ho inteso cosa volessi dire con la tua domanda. Ti posto un esempio di come potrebbe essere creato il codice: Codice:
public class Aula{
// alcuni fra i possibili campi che costituiscono l'oggetto
private int numeroPosti;
private boolean proiezione,videoconferenza;
//costruttore
public Aula(int n){
numeroPosti=n;
proiezione=false;
videoconferenza=false;
}
//metodi accessori
public int getNumeroPosti(){
return numeroPosti;
}
...
}
//nel main() o ovunque tu ne abbia bisogno (attraverso import)
Aula a = new Aula(200);
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
grazie per l'aiuto che mi fa comodo.
la mia domanda in specifico era come fare a dare a Aula a = new Aula(200) invece di "a" un testo inserito per esempio a mano da un utente attraverso un interfaccia. grazie ankora
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 752
|
Codice:
import java.io.*;
import personal_package.*; // devi crearlo ovviamente!
public class ReadString{
public static void main (String[] args) {
//trascuro gli altri possibili campi
String nome_Aula=null;
// standard input
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
try {
nomeAula = br.readLine();
} catch (IOException ioe) {
System.out.println("IO error!");
System.exit(1);
}
Aula a = new Aula(nome_Aula,...); // da implementare!
}
}
Ultima modifica di atidem : 04-01-2005 alle 14:48. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
ok grazie mille dell'aiuto
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 59
|
scusa ma la a usata per identificare il nome del nuovo oggetto creato è paragonabile ad una variabile scritta ad esempio come indice di un vector. a che serve poterla rinominare?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
siccome vuole ke si creino delle aule anke da un txt, volevo fa ke queste erano create con un nome inserito da un utente in modo ke venissero diversi oggetti. Mi consigliate di farlo in un altra maniera? (array?)
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Nel tuo tentativo c'è un errore di fondo che riguarda il concetto di programma:
il codice che scrivi verrà compilato in un linguaggio (quasi) eseguibile, e ogni variabile (come ad esempio la variabile "nome") diventerà un riferimento grazie al quale si potrà accedere al tuo oggetto (di tipo Aula). Il nome nel codice java è assolutamente irrilevante, il fatto che si chiami "nome" non determina in alcun modo come verrà identificato successivamente al momento dell'esecuzione; è solo il modo in cui tu (programmatore) lo puoi identificare nel codice. Se ci fosse un modo per legare il nome nel codice ad una stringa inserita dall'utente, significherebbe che il compilatore è in grado di prevedere quale stringa inserirà l'utente ancor prima di compilare il codice e sostituire questa stringa al posto di nome. Una cosa del genere è impossibile quindi finchè il tuo codice richiede una compilazione. Inoltre se anche questo fosse possibile, non ne avresti alcun vantaggio: tu programmatore continueresti a identificare l'oggetto come "nome" e non avresti alcun modo per distinguerlo da un altro oggetto "nome". Se vuoi che un oggetto venga identificato da una stringa è necessario che metti insieme un sistema di componenti che, data una Stringa restituisca un riferimento all'oggetto desiderato (ad esempio due semplicissimi array, uno di stringhe e l'altro di aule, nel primo inserisci via via i nomi delle aule, nell'altro, per ogni indice l'aula corrispondente al nome contenuto nell'altro array a quell'indice). Molto più semplicemente potresti usare una Hashtable in cui inserisci alla chiave "nome" il valore "aula". Più tipicamente nella programmazione ad oggetti si preferisce mappare ogni proprietà utile (e quindi anche il nome) come campo della classe. Ciao |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 752
|
Credo che prima di inoltrarti in concetti "evoluti" dovresti comprendere quale sia la vera essenza della programmazione ad oggetti.
In rete potrai trovare numerose guide. Basta saper cercare ed avere un pò di pazienza! Benvenuto nel fantastico mondo di Java! |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 752
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
una possibile implementazione del gestore aule quale puo essere? avevo pensato ad un array ma il fatto di poter aggiungere nuove aule limiterebbe il tutto.
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
mi pare proprio adatta! grazie
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
Ho provato con la classe Vector ed e' abbastanza semplice,
L'unica cosa e' che a questo punto mi viene meno l'utilità di avere diverse classi, visto che ogni classe ha un oggetto che contiene un vector.
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 806
|
Qlcn di voi sa come funziona la classe Gregoriancalendar? mi basta una spiegazione rapida col metodo x calcolare se un giorno e' feriale o no, o anche un link di una guida in ita.
thx
__________________
iMac 27" Late 2013, iPhone 7 128GB Black, iPad con Display Retina 16GB WiFi (4th Generation), Tim Smart Fibra 100Mb/20Mb ---> Ho trattato con un sacco di gente, usate il search |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:08.



















