|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
[Java] Problemino con interfaccia
Ciao a tutti
![]() scusatemi se non sarò molto chiara ma è la prima volta che scrivo in questo forum e sono una VERA principiante di Java ![]() Premesso questo vorrei chiedere un piccolo aiuto riguardante un progetto. Il testo del progetto è il seguente: L'obiettivo del progettino è implementare una piccola agenda elettronica in Java. Un'agenda contiene un insieme di appuntamenti. Un appuntamento è composto da una data, un oggetto ed una persona. Una data è composta da un'ora, una durata ed un giorno. Un oggetto è composto da una stringa descrittiva e da un grado d'importanza (importantissimo, normale, non necessario). Una persona è composta da un nome ed un cognome. Definire le classi Agenda, Appuntamento, Data, Durata, Giorno, Grado, Mese, Oggetto, Persona. Definire nella classe Agenda: * un metodo aggiunge che permette di aggiungere un appuntamento. Se la data dell'appuntamento e la sua durata si sovrappongono con un appuntamento già nell'agenda, si solleva l'eccezione ComandoNonValido. * un metodo elimina che permette di rimuovere un appuntamento. Se l'appuntamento non esiste nell'agenda, si solleva l'eccezione ComandoNonValido. * un metodo appuntamenti che restituisce l'array di tutti gli appuntamenti dell'agenda. * un metodo stampa che stampa tutti gli appuntamenti dell'agenda. L'interfaccia Filtro contiene due metodi che permettono, rispettivamente, di selezionare ed ordinare gli appuntamenti. interface Filtro { boolean valido(Appuntamento ap); boolean maggiore(Appuntamento ap, Appuntamento ap); } Sovraccaricare i metodi appuntamenti e stampa della classe Agenda per accettare come parametro un oggetto che implementa l'interfaccia Filtro, permettendo cosí di restituire (o stampare) in ordine solamente gli appuntamenti validi. Definire due filtri che permettono di avere * tutti gli appuntamenti fissati tra una data ed un'altra in ordine cronologico inverso, * tutti gli appuntamenti con una persona in ordine d'importanza. Ho creato tutte le classi, il problema è arrivato nel momento in cui devo sovraccaricare i metodi stampa() e appuntamenti() della classe Agenda perchè...non ho proprio capito come si fa ![]() Grazie mille per l'aiuto |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Nella classe Agenda inizialmente hai quindi:
public Appuntamento[] appuntamenti () { .... } e public void stampa () { .... } (o qualcosa del genere ... non ho capito se devi usare proprio un array o una collezione come ad esempio ArrayList) Ti viene chiesto di fare l'overload di questi metodi in modo da poter fare queste due operazioni potendo però specificare un oggetto di tipo Filtro. Quindi devi aggiungere altri 2 metodi del tipo: public Appuntamento[] appuntamenti (Filtro f) { .... } e public void stampa (Filtro f) { .... } In cui non prenderai più in considerazione tutti gli appuntamenti, ma solo quelli che soddisfano i requisiti dettati dall'oggetto Filtro. Ti è anche stato chiesto di creare 2 classi che implementano l'interfaccia Filtro e che effettuano un filtro come specificato nel testo. P.S.: parlando del design, trovo esagerato dover definire una classe per Giorno, Durata e Mese. Grado invece potrebbe essere fatta come enum. Ma queste sono mie opinioni .....
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
grazie per la risposta, il mio problema è che non ho proprio idea di come si fa a sovraccaricare i metodi, ho cercato in diversi manuali ma non ho trovato nulla. Comunque molte grazie per l'aiuto
![]() |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se non vuoi dover duplicare il codice c'è anche una soluzione elegante. Creare un filtro "fittizio" che accetta tutto. Ad esempio mettendolo in un campo static e private: Codice:
static private Filtro tutti = new Filtro () { boolean valido(Appuntamento ap) { return true; } boolean maggiore(Appuntamento ap, Appuntamento ap) { return true; } };
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
So cosa significa sovraccaricare un metodo (mi sono espressa male), il problema è che non so come implementare praticamente l'interfaccia nelle classi Data, Persona e Grado.
Non so proprio cosa devo scrivere, il mio prof ci ha solo detto cosa sono le interfacce, ma senza esempi. |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Devi creare poi 2 nuove classi, ad esempio: Codice:
class FiltroPeriodoInverso implements Filtro { private Data d1; private Data d2; public FiltroPeriodoInverso (Data d1, Data d2) { .... } boolean valido(Appuntamento ap) { ..... } boolean maggiore(Appuntamento ap, Appuntamento ap) { ..... } } Codice:
class FiltroPersonaImportanza implements Filtro { .... .... }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
Aiuto!!!
![]() Troppo difficile!!! Grazie mille per la tua disponibilità, cercherò di fare qualcosa!!! tipo ![]() Scusami ancora tanto per averti disturbato |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Prendiamo in considerazione le versioni di appuntamenti() e stampa() che ricevono esplicitamente un Filtro. Tutto quello che farai cioè creare un array di appuntamenti o stampare gli appuntamenti la dovrai fare "interpellando" il filtro passato. Dovrai quindi chiamare i metodi di Filtro per sapere che cosa fare, se accettare l'appuntamento e come ordinarli tra di loro. È chiaro che quando dovrai chiamare questi due metodi, dovrai passare una istanza di una qualche classe che implementa Filtro. E sono appunto le due classi di cui ho fatto l'esempio (basandomi sul testo dell'esercizio). Più chiaro adesso?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Ancora con sti trucchi di usare nomi femminili per velocizzare le risposte?
|
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
|
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Beh allora... FOTO!
![]() |
![]() |
![]() |
![]() |
#12 |
Junior Member
Iscritto dal: Jul 2007
Messaggi: 6
|
Non sono tanto stupida da mettere la mia foto, però tutti gli aiuti sono sempre ben accetti
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:10.