Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-02-2004, 17:59   #1
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
[Java] Esercizio Telefonino

Sto usando un libro univesitario per imparare java, ci sono degli esercizi, ma non sono risolti. Come risolvereste questo?

Si vuole realizzare un sistema per la composizione dei messaggi da inviare tramite telefonino. Ad ogni messaggio corrisponde un codice. Ad esempio al codice "ta" corrisponde il messaggio completo "ti amo, amore.". Definire la classe TestoMessaggio per la gestione dei messaggi. La classe deve avere un metodo per creare oggetti TestoMessaggio leggendo il codice e il messaggio completo da tastiera, un metodo per restituire il codice ed un metodo per restituire il testo del messaggio.
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 22-02-2004, 18:47   #2
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Un modo di risolvere l'esercizio è creare una classe Message che ingloba sia il codice che il testo esteso:

Codice PHP:
class Message{
       
       private 
String code;
       private 
String mex;

       public 
Message(String codeString mex){
              
this.codecode;
              
this.mex mex;
       }

       public 
string getCode(){
              return 
code;
       }

       public 
string getMex(){
              return 
mex;
       }

Quindi la classe MessagesText che memorizza le coppie (codice, testo) attraverso ogetti della classe Message e inserisce gli oggetti Message costruiti in un Vector:

Codice PHP:
class MessagesText{
     
     private 
Vector messages;

     public 
MessagesText(){
            
messages = new Vector();
     }


     public 
addMessage(String codeString mex){
          
messages.add(new Message(codemex));
      }

....

....

Poi ti implementi il metodo per ottenere il codice di un messaggio: dato il messaggio m, ti scorri il vettore messages e per ogni oggetto in tale vettore verifichi se quel Message ha il campo mex uguale a m; se è cosi restituisci il suo codice. Analogamente per il metodo che restituisce il messaggio a partire dal codice.

Ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 10:02   #3
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Chiedo scusa, colpa mia che non l'ho spiegato prima.
Questo esercizio è proposto sul libro quando ancora non sono stati spiegati i vettori e non sono ancora state spiegate le istruzioni condizionali.
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 10:17   #4
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Forse perchè le dava per scontate...

Come si fa a parlare di classi, oggetti, metodi senza conoscere i vettori e le if???
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 10:20   #5
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
l'esercizio chiede solo di definire una classe con quei metodi, non basta il primo frammento di codice suggerito da anx721?
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 12:00   #6
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Quote:
Originariamente inviato da cn73
Forse perchè le dava per scontate...
...
No, perché vettori e if vengono spiegati in seguito.
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 12:01   #7
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Quote:
Originariamente inviato da Alhazred
Chiedo scusa, colpa mia che non l'ho spiegato prima.
Questo esercizio è proposto sul libro quando ancora non sono stati spiegati i vettori e non sono ancora state spiegate le istruzioni condizionali.

Bhè, in effetti è impossibile fare questo esercizio senza le istruzioni condizionali, a meno di non usare una Hashtable, ma dubito che volesse questo il libro...

La sola classe Massage non basta, perchè il libro chiede una classe che mantenga una serie di corrispondenze (codice-messaggio): la classe Message serve a rappresentare una singola coppia, mentre MessagesText serve a contenere l'insieme di tutte le coppie,

ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 16:48   #8
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Secondo me, essendo solo a titolo didattico, vuole che si prevedano 2 o 3 messaggi solo per vedere se si è capito come creare nuovi oggetti.
Io avrei pensato a un paio di messaggi chiamati m1 e m2 creandoli con una cosa del tipo:
testoMessaggio m1 = new testoMessaggio(cod,text);
testoMessaggio m2 = new testoMessaggio(cod,text);

dove cod e text vengono assegnati a delle variabili digitandoli in una finestra di dialogo.
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2004, 17:10   #9
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Se è cosi allora ti basta la sola classe Message che avevo definito sopra.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 10:11   #10
monkey72
Senior Member
 
L'Avatar di monkey72
 
Iscritto dal: Dec 2001
Messaggi: 1385
Quote:
Originariamente inviato da anx721
Se è cosi allora ti basta la sola classe Message che avevo definito sopra.
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
monkey72 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2004, 10:41   #11
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Nuovi sviluppi del programma

Andando avanti vengono richieste altre funzioni per il programma.

la classe TestoMessaggio è quella proposta all'inizio del thread, vi ricordo che non si possono usare vettori, istruzioni condizionali o cicli, basta creare un numero di oggetti sufficiente a testare il programma.

Un messaggio deve contenere il numero da chiamare, il mittente ed il testo del messaggio. Definire una classe Messaggio, con:

1) un metodo che crea un'istanza a partire da un oggetto di classe TestoMessaggio e 2 stringhe che rappresentano il numero di tel. del mittente e destinatario

2) un metodo che crea un'istanza a partire da un oggetto di classe TestoMessaggio ed una stringa che rappresenta il numero di telefono del mittente

3) un metodo che crea un'istanza a partire da un oggetto di classe TestoMessaggio

4) un metodo che riceve come parametro il numero di telefono del destinatario ed aggiorna il destinatario del messaggio

5) un metodo per la stampa del messaggio

Scrivere un programma di esempio, che usa le due classi TestoMessaggio e Messaggio. Il programma deve:

1) contenere un metodo statico per la lettura di un numero telefonico da input

2) inizializzare una variabile di classe String, che corrisponde al numero di telefono del mittente

3) leggere il testo di un messaggio ed il codice, e memorizzarli in un oggetto di classe TestoMessaggio

4) leggere il numero di telefono del destinatario

5) creare un oggetto di classe Messaggio

6) visualizzare l'oggetto di classe Messaggio
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2004, 13:57   #12
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Posta una domanda precisa su cio che non ti e chiaro, se ti diamo la risposta completa noi non capisco cosa ne ricavi a fare questi esercizi.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2004, 15:41   #13
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Quote:
Originariamente inviato da anx721
Posta una domanda precisa su cio che non ti e chiaro, se ti diamo la risposta completa noi non capisco cosa ne ricavi a fare questi esercizi.
Hai ragione.
Come risolvo il punto 4) della prima parte?
Ecco la classe Messaggio come l'ho pensata io:

Codice PHP:
public class Messaggio extends TestoMessaggio {
    public 
Messaggio(String codeString mexString mittString dest) {
        
super(codemex);
        
String numMitt mitt;
        
String numDest dest;
    }
    public 
Messaggio(String codeString mexString mitt) {
        
super(codemex);
        
String numMitt mitt;
    }
    public 
Messaggio(String codeString mex) {
        
super(codemex);
    }
    public 
void modificaDest(String numDest) {
    ***********************************    
    }
    public 
void stampaMessaggio(Messaggio m) {
        
System.out.println(m.getMex());
    }

Dove ci sono gli asterischi ci andrebbe il metodo che cambia il numero del destinatario, ma come lo faccio? Devo prima scrivere un metodo che mi ritorni il numero? Oppure c'è modo di farlo direttamente?

Ultima modifica di Alhazred : 05-03-2004 alle 16:17.
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2004, 21:50   #14
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Per fare in modo che la classe estesa Messaggio contenga il numero del destinatario e il numero del mittente devi dichiarare due campi di tipo stringa che conterranno queste informazioni. Quello che tu hai fatto non è corretto in quanto non hai definito due campi, ma delle variabili locali all'interno dei costruttori, che vengono distrutte appena il costruttore termina.

Quindi

String numMitt;
String numDest;

vanno posti al di fuori del costruttore; all'interno del costruttore poi fai l'assegnamento:

numMitt = mitt;
numDest = dest;

Per aggiornare il destinatario è sufficiente dichiarare un metodo che prende una stringa numDest e la assegna al campo numDest. Bada che se l'argomento del metodo ha lo stesso nome del campo numDest, all'interno del metodo per far riferimento al campo numDest della classe devi usare la forma: this.numDest, mentre usando solo numDest fai riferimento all'argomento.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2004, 12:17   #15
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Ho apportato la modifica alla classe estesa Messaggio, quella di mettere String numMitt e String numDest fuori dal costruttore.

Credo di aver risolto in questo modo:

Codice PHP:
public void modificaDest(String nuovoDest) {
    
this.numDest nuovoDest
Non ho potuto verificare perché non riesco a scrivere una riga che mi scriva il numero del destinatario
Ho provato con una cosa di questo tipo:

Codice PHP:
import javax.swing.JOptionPane;
public class 
Cliente {
    
String numero;
    public static 
String leggiNumero() {
        
String numero JOptionPane.showInputDialog("Inserisci il numero del destinatario");
        return 
numero;
    }
    public 
void main (String[] args) {
        
String numMitt "3973186876";
        
String numero leggiNumero();
        
Messaggio m1 = new Messaggio("cs","Come stai?",numMitt,numero);
        
System.out.println(this.numero);
        
String nuovoDest JOptionPane.showInputDialog("Inserisci il nuovo destinatario");
        
modificaDest(nuovoDest);
        
System.out.println(this.numero);
    }

Ottengo un errore nella chiamata a modificaDest:
" cannot resolve symbol
symbol : method modificaDest (java.lang.String)"

Togliendo la chiamata e ricompilando va tutto bene, però in esecuzione mi si presenta un altro errore:
"Exception in thread "main": Java.lang.NoSuchMethodError: main"
Alhazred è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2004, 12:47   #16
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Il motivo per cui non trova il main è che non lo hai dichiarato static:

public void main (String[] args)

invece deve essere

public static void main (String[] args)


Il motivo per cui non trova il metodo modificaDest è perche questo è un metodo della classe Messaggio, non della classe Cliente, quindi lo devi invocare su un oggetto della classe Messaggio, ovvero sull'oggetto m1 che rappresenta il tuo Messaggio:

m1.modificaDest(nuovoDest);
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2004, 17:23   #17
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1759
Grazie, ho risolto, adesso funziona tutto
Alhazred è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Addio console: Just Dance Now trasforma ...
Driver Radeon Adrenalin 25.10: perch&egr...
Oltre le GPU: NVIDIA annuncia NVQLink, ...
Samsung lancia il Team Galaxy Italia per...
Magic Leap: indistinguibili dai normali ...
Aruba Cloud: trasparenza sui costi e str...
Quando il cloud si blocca e resti al fre...
Integrare per competere, la sfida digita...
Leggenda del rally e modernità: S...
La Python Software Foundation rinuncia a...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
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: 06:23.


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