Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
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


Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Primo collegamento laser aereo-satellite...
Nintendo non risparmia nessuno: condanna...
Nuove accuse per Meta: le ricerche sull'...
Lucid Gravity arriva in Europa: anche in...
Tra poco servirà una NVIDIA RTX 5...
Si aggiorna Windows 10: corretti 81 bug ...
Arrivano le eSIM per iliadbusiness, l'of...
iPhone 17 e 17 Pro senza SIM fisica: non...
Hollow Knight: Silksong, primo record sp...
Public VCF as-a-Service, il nuovo serviz...
GAC annuncia il suo ingresso in Europa: ...
Un rene di maiale potrebbe salvarti la v...
Batterie al litio in aereo, la FAA lanci...
HONOR Magic V5: un tablet a portata di s...
Se non rientrate nei requisiti, non aspe...
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: 13:10.


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