Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-07-2007, 15:14   #1
Sally Brown
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
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 15:35   #2
andbin
Senior Member
 
L'Avatar di andbin
 
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%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 15:48   #3
Sally Brown
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
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 15:56   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Sally Brown Guarda i messaggi
grazie per la risposta, il mio problema è che non ho proprio idea di come si fa a sovraccaricare i metodi
Ma è appunto quello che ho detto. Creare altri 2 metodi che hanno lo stesso nome dei primi due ma con parametri diversi, nel tuo caso con un parametro di tipo Filtro. Questo è l'overload: avere due o più metodi con lo stesso nome ma con parametri diversi.

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; }
};
E poi fare in modo da "esprimere" i metodi senza Filtro esplicito come chiamate ai metodi che hanno il Filtro esplicito passando il filtro 'tutti'.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 16:06   #5
Sally Brown
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.
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 16:15   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Sally Brown Guarda i messaggi
So cosa significa sovraccaricare un metodo (mi sono espressa male)
Ok, scusa per la precisazione.

Quote:
Originariamente inviato da Sally Brown Guarda i messaggi
il problema è che non so come implementare praticamente l'interfaccia nelle classi Data, Persona e Grado.
L'interfaccia Filtro non la devi implementare in queste classi!
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) { ..... }
}
e poi un'altra per fare l'altro filtro:
Codice:
class FiltroPersonaImportanza implements Filtro {
    ....
    ....
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 16:20   #7
Sally Brown
Junior Member
 
Iscritto dal: Jul 2007
Messaggi: 6
Aiuto!!!
Troppo difficile!!!

Grazie mille per la tua disponibilità, cercherò di fare qualcosa!!! tipo finchè non mi viene in mente come fare.

Scusami ancora tanto per averti disturbato
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 16:29   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Sally Brown Guarda i messaggi
Aiuto!!!
Troppo difficile!!!

Grazie mille per la tua disponibilità
Prego, figurati. Ma se hai dubbi, chiedi pure. Non è così difficile come credi.

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%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 17:58   #9
redcloud
Bannato
 
L'Avatar di redcloud
 
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?
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2007, 08:59   #10
Sally Brown
Junior Member
 
Iscritto dal: Jul 2007
Messaggi: 6
Quote:
Originariamente inviato da redcloud Guarda i messaggi
Ancora con sti trucchi di usare nomi femminili per velocizzare le risposte?
Sono una ragazza...libero di non crederci
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2007, 09:05   #11
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Beh allora... FOTO!
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2007, 11:22   #12
Sally Brown
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
Sally Brown è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
iPhone 18 Pro: il componente che garanti...
DeepL alza il livello: con Voice-to-Voic...
Apple sta utilizzando sempre più ...
Il MacBook Neo vende tanto? Microsoft le...
AST SpaceMobile BlueBird 7: Blue Origin ...
È il momento migliore per comprar...
Svendita MacBook Pro: c'è il mode...
Oggi questa TV TCL QLED da 43 pollici co...
Il caricatore multiplo da 200W che va be...
Top 7 Amazon, il meglio del meglio di qu...
Spento lo strumento LECP della sonda spa...
Voyager Technologies ha siglato un accor...
GoPro annuncia la linea MISSION 1 con tr...
Alcune varianti dei futuri Samsung Galax...
Il ridimensionamento di OnePlus in Europ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v