Buonasera a tutti! Ho iniziato da un paio di giorni a studiare un po' di java da autodidatta seguendo il manuale di java 5 di Claudio De Sio Cesari. Manuale molto molto utile e anche abbastanza comprensibile. Nel capitolo 7 mi sono imbattuto in un esercizio che richiede di simulare il funzionamento di una rubrica telefonica.
Gli argomenti che sono stati trattati fino ad ora sono classi, metodi, cicli e controlli; incapsulamento, ereditarietà, polimorfismo per i metodi ( overload e override), polimorfismo per dati, parametri polimorfi, collezioni eterogenee, casting di oggetti.
Utilizzo Netbeans su linux.
Il lettore si limiti a simulare la seguente situazione:
una rubrica contiene informazioni (nome, indirizzo, numero telefonico) su un certo numero di persone (per esempio 5), prestabilito (le informazioni sono preintrodotte nel metodo main()). L’utente dovrà fornire all’applicazione un nome da riga di comando e l’applicazione dovrà restituire le informazioni relative alla persona. Se il nome non è fornito, o se il nome immesso non corrisponde al nome di una persona preintrodotta dall’applicazione, deve essere restituito un messaggio significativo. Il lettore non ha altri vincoli. Non è presentata soluzione per quest’esercizio.
La mia idea era di creare una classe rubrica che caratterizzasse oggetti che hanno nome, indirizzo e numero di telefono. In questa classe definire il costruttore e metodi accessor e mutuator per nome, indirizzo e numeto di telefono.
Poi creare la classe RubricaCerca contenente il main, nella quale venivano instanziati 5 oggetti della classe Rubrica, che prendesse in input da tastiera ( non so come usare args[0]="Nome") un nome e lo passasse ad un metodo di ricerca, metodo che intendevo posizionare dentro la classe Rubrica ma non so se è la soluzione migliore.
A questo punto i miei molteplici dubbi, derivati da una poco approfondita conoscenza del linguaggio, sono saliti a galla a più non posso. Primo tra tutti come passare una stringa presa da tastiera ad un metodo public di un altra classe e restituire il risultato della ricerca.
Di seguito il codice da me scritto fino ad ora.
package rubricacerca;
public class Rubrica {
private String nome;
private String indirizzo;
private int numero;
private String risultato;
//costruttore Rubrica
public Rubrica(String n, String ind, int num){ //tre parametri in ingresso
/*this.setN(n); // passo al mutuator n
this.setInd(ind); // passo al mutuator ind
this.setNum(num); // psso al mutuator num
*/
setNIndNum(n, ind, num);
}
//Mutuator per nome
public void setN(String n){
this.nome = n;
}
//Mutuator per indirizzo
public void setInd( String ind){
this.indirizzo = ind;
}
// mutuator per Numeroditelefono
public void setNum(int num){
this.numero = num;
}
// accessor per nome
public String getN(){
return nome;
}
//accessor per indirizzo
public String getInd(){
return indirizzo;
}
//accessor per Numero
public int getNum(){
return numero;
}
//mutuator per setNIndNum
public void setNIndNum(String n, String ind, int num){
this.setN(n);
this.setInd(ind);
this.setNum(num);
}
//accesso per NIndNum
public String getNIndNum(){
return nome + indirizzo + numero;
}
//mutuator per il risultato
public void setRisultato(String risultato ){
this.risultato = risultato;
}
// accessor per il risultato
public String getRisultato(){
return risultato;
}
//metodo di ricerca
public void cerca(String nome){
// Qui dovrei inserire il codice per la ricerca ma mi trovo in difficoltà.
}
}
}
Classe con il main
package rubricacerca;
import java.io.*;
public class RubricaCerca {
/**
* @Param args the command line arguments
*/
public static void main(String[] args) throws IOException {
Rubrica persona1 = new Rubrica("Pippo", "Roma", 5);
Rubrica persona2 = new Rubrica("Topolino", "Torino", 6);
Rubrica persona3 = new Rubrica("Paperino", "Napoli", 8);
Rubrica persona4 = new Rubrica("Pluto", "Livorno", 9);
Rubrica persona5 = new Rubrica("Archimede", "Milano", 12);
System.out.println("Inserisci un nome:\n");
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader tastiera = new BufferedReader(input);
String nome = tastiera.readLine();
// da qui in poi non so proprio come continuare
}
}
Sapreste consigliarmi come andare avanti?
Grazie e scusate per il poema