[bottega] Re: Domanda

  • From: Massimiliano Mirra <mmirra@xxxxxxxxx>
  • To: bottega@xxxxxxxxxxxxx
  • Date: Wed, 20 Nov 2002 20:55:14 +0100

On Wed, Nov 20, 2002 at 03:01:43PM +0100, Filippo Fuschini wrote:
> 
> Ciao Massimiliano 
> 
> Ti volevo esporre il problema come tu stesso hai scritto st? eseguendo in 
> pieno quello che hai detto di fare di creare una classe personaggio e creare 
> i metodi come segue:
> 
> class Personaggio{
>  public Personaggio(String _getNome, String _getCognome){
>   getNome = _getNome;
>   getCognome = _getCognome;
>  }
>  public String getNome(){
>   return getNome;
>  }
>  public String getCognome(){
>   return getCognome;
>  }
>  public String addMovie(String titolo){
>   return titolo;
>  }
>  public int getMovie(int posizione){
>   return posizione;
>  }
>  public String getAllMovies(String titoli){
>         return titoli;
>  }
>  public String toString(){                                                    
>             //Questo metodo mi fa restituire nome cognome e mi da con gli 
> apici anche lo spazio
>      return getNome +" " + getCognome;                                        
>  //+ " " + titolo;
>  }
>  private String getNome;
>  private String getCognome; 
> }
> 
> 
> Dopo aver compilato questo codice con "il titolo in commento" l'errore ? uno 
> solo ovvero mi dice: 
> Tests.java:66: getAllMovies(java.util.Vector) in Personaggio cannot be 
> applied to ()
> 
> Vector all = p.getAllMovies();
> 
> ^
> 
> 1 error

Non mi torna qualcosa.  Quando il compilatore dice:

getAllMovies(java.util.Vector) in Personaggio cannot be applied to ()

...significa che in Personaggio c'e` un metodo getAllMovies che prende
un Vector come parametro.  Pero`, nel testo che mi hai riportato, il
metodo getAllMovies prende una stringa come parametro.

Sicuro che l'errore si riferisca proprio al testo che hai riportato tu
e non a un'altra versione?

In ogni caso, l'errore significa: ``Hai chiamato il metodo
getAllMovies senza parametri, ma il metodo getAllMovies che conosco io
prende un vettore come parametro.''


> Se tolgo il metodo invece mi dice:
> 
> Tests.java:66: cannot resolve symbol
> 
> symbol : method getAllMovies ()
> 
> location: class Personaggio
> 
> Vector all = p.getAllMovies();
> 
> ^
> 
> 1 error

Naturale, perche' chiami un metodo che non c'e`.

> 
> Allora la mie domande sono le seguenti:
> 
> 1) La creazione della classe Personaggio da me iniziata ? corretta?

Si puo` migliorare.  Guarda bene i test presenti in
testDefinisciNuovaClasse e basati su di essi.  Per esempio:

    p.addMovie("La finestra sul cortile");

Questo test richiede che addMovie restituisca qualcosa?  No, perche'
non c'e` nessuna variabile a ricevere un eventuale valore di ritorno.
Quindi nella seguente intestazione nella classe Personaggio:

    public String addMovie(String titolo){

...c'e` piu` del necessario.  addMovie, cosi`, restituisce una
stringa, mentre tu non vuoi che restituisca alcunche', per cui:

    public void addMovie(String titolo) {

Qualche riga piu` giu`, nei test, hai questo:

    System.out.println("Primo film: " + p.getMovie(0));

Cioe` andiamo a ripescare il primo film che abbiamo inserito.  Questo
implica che addMovie avra` provveduto a mettere in qualche contenitore
i film che gli abbiamo passato in precedenza... (consiglio: di
contenitore ne conosciamo uno solo, c'e` poco da sbagliarsi!)


> 2)Perch? il tiutolo non deve essere restituito insieme a nome e
> cognome?

Perche' un personaggio ha un solo nome e un solo cognome (-> variabili
di istanza) ma puo` essere in molti film (-> contenitore).

> 3)Devo creare un vettore nella classe? Lo devo creare nel main? Come
> devo fare? HELP??????????

Lo devi creare nella classe che conosce i film interpretati.  Chi
conosce i film?  Il Personaggio o un TestPersonaggio?

Aiutati con le carte CRC, la risposta e` lampante.


Invito voialtri che state leggendo a commentare ulteriormente
l'abbozzo di classe che ha scritto Filippo.  Cosa scrivereste
diversamente?

Other related posts: