Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    visibilità medodo di un'altra classe

    Salve a tutti.
    Se eseguo il main "ProvaTraslaCerchio"
    verifico che il metodo trasla funziona correttamente.
    Non riesco però a visualizzare i valori aggiornati della posizione della figura (Punto p1).
    Esiste un modo per utilizzare dal main getX() e getY() della classe punto senza modificare le classi?
    Spero di essere stato chiaro.
    Grazie in anticipo per l'aiuto.
    codice:
    public class ProvaTraslaCerchio {
     public static void main(String[] args) {
      
      Punto p1 = new Punto(-1, 3);
      Forma c1 = new Cerchio(p1, 4, "blu");
      
      System.out.println(c1.toString());
      
      System.out.print(p1.getX() + ", ");
      System.out.println(p1.getY());
      c1.trasla(3, 2);
      System.out.println(c1.toString());
      System.out.print(p1.getX());//visualizza -1 e non 2 come vorrei…
      System.out.print(p1.getY());//visualizza 3 e non 5 come vorrei…
      
     }
    }
    public class Punto {
     private int x, y;
     public Punto (int x, int y) {
      this.x = x;
      this.y = y;
     }
     public void setX (int x) {
      this.x = x;
     }
     public void setY (int y) {
      this.y = y;
     }
     public int getX() {
      return this.x;
     }
     public int getY (){
      return this.y;
     }
    }
    public interface Forma {
     void trasla(int x, int y);
    }
    public Cerchio (Punto centro, int raggio, String colore) {
      this.raggio = raggio;
      this.centro = new Punto(centro.getX(), centro.getY());
      this.colore = colore;
     }
     public void trasla(int x, int y) {
      this.centro.setX(this.centro.getX() + x);
      this.centro.setY(this.centro.getY() + y);
     }
     public String toString() {
     String s;
    s = "Cerchio: centro =(" +this.centro.getX() +","  +this.centro.getY() +"), raggio=" + this.raggio +" colore="+ this.colore; 
    return s;
     } 
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    centro è un nuovo oggetto e non ha più nulla a che fare con l'oggetto p1: per questo motivo nel main() non vedi il cambiamento.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Si questo mi è chiaro. Infatti è prevedibile che quando utilizzo il metodo getX/getY su p1 mi ritornano i valori invariati.
    Io chiedevo appunto se c'è un modo per recuperare i valori del nuovo oggetto senza modificare le classi punto/cerchio/rettangolo.

  4. #4
    Si questo mi è chiaro. Infatti è prevedibile che quando utilizzo il metodo getX/getY su p1 mi ritornano i valori invariati.
    Io chiedevo appunto se c'è un modo per recuperare i valori del nuovo oggetto senza modificare le classi punto/cerchio/rettangolo.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da adrenalinico Visualizza il messaggio
    Io chiedevo appunto se c'è un modo per recuperare i valori del nuovo oggetto senza modificare le classi punto/cerchio/rettangolo.
    Se la variabile di istanza centro di Cerchio è private (come dovrebbe), no non basta. Mettiamola così: o in Cerchio usi direttamente il Punto fornito, quindi senza crearne uno nuovo .... oppure in Cerchio metti un getter per tirar fuori il Punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    "...o in Cerchio usi direttamente il Punto fornito, quindi senza crearne uno nuovo ...."
    La variabile Cerchio è private. Non volendo modificare la classe Cerchio/Rettangolo, forse quello a cui sto cercando di arrivare è utilizzare il punto fornito. Ma come si fa??? Se non si fosse capito sto muovendo i primi passi in java...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da adrenalinico Visualizza il messaggio
    Non volendo modificare la classe Cerchio/Rettangolo, forse quello a cui sto cercando di arrivare è utilizzare il punto fornito. Ma come si fa???
    La classe Cerchio devi comunque modificarla in qualche modo! Come ho detto, o aggiungi un getCentro() per tirar fuori il Punto del centro ..... oppure nel costruttore di Cerchio non fai new Punto( .... ) e usi direttamente il Punto fornito al costruttore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La classe Cerchio devi comunque modificarla in qualche modo! Come ho detto, o aggiungi un getCentro() per tirar fuori il Punto del centro ..... oppure nel costruttore di Cerchio non fai new Punto( .... ) e usi direttamente il Punto fornito al costruttore.
    Alla fine non avendo capito come operare con l'altra soluzione, ho aggiunto un metodo in rettangolo cerchio getPosition().

    Tutto funziona perfettamente, grazie per il supporto.

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Bastava modificare questa riga:


    this.centro = new Punto(centro.getX(), centro.getY());

    in

    this.centro = centro;
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Bastava modificare questa riga:


    this.centro = new Punto(centro.getX(), centro.getY());

    in

    this.centro = centro;
    ...Grande Alex ...ho facilmente modificato il codice e indubbiamente funziona...ben più difficile è cercare di farmi capire perchè!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.