Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: Questione di metodi

  1. #1

    Questione di metodi

    salve ragazzi, ho un piccolo problema: praticamente io ho due punti sul piano cartesiano e li considero come oggetti cioè per ogni nuovo punto che vado a creare faccio

    Punto 1 = new Punto (1,3);
    Punto 2 = new Punto (4,6);

    ora la mia difficoltà sta nell'implementare un metodo che mi calcoli la distanza tra i due punti, vi spiego meglio: applicando un metodo su di un singolo oggetto il codice verrebbe così

    1.distanza();

    però in questo caso che distanza calcolerei se gli passo solo il punto 1 al metodo? quindi vorrei sapere come ad un metodo si possano passare piu oggetti grazie
    Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Questione di metodi

    Originariamente inviato da blackguardian
    Punto 1 = new Punto (1,3);
    Punto 2 = new Punto (4,6);
    La sintassi non è appropriata ma l'idea ok, è quella ...

    Originariamente inviato da blackguardian
    però in questo caso che distanza calcolerei se gli passo solo il punto 1 al metodo? quindi vorrei sapere come ad un metodo si possano passare piu oggetti grazie
    Hai sostanzialmente 2 possibilità, in pratica 2 "design" differenti:

    a) Un metodo di istanza che calcola la distanza tra il Punto 'this' (quello su cui è invocato il metodo) e un Punto passato come argomento.

    public double distanza(Punto altroPunto) { .... }

    b) Un metodo di classe che calcola la distanza tra 2 Punto passati come argomento.

    public static double distanza(Punto p1, Punto p2) { .... }

    Quale dei due scegliere? (si potrebbero anche tenere entrambi). La prima è più nell'ottica object-oriented e una sottoclasse potrebbe ridefinire il comportamento. La seconda è più nell'ottica di un metodo di "utilità".

    Nel primo caso però devi invocarlo su un reference non null, altrimenti scatta un NullPointerException, nel secondo caso potresti fare test più particolari ad esempio, se uno dei due è null lanci una tua eccezione specifica.

    Insomma, la differenza è come al solito di "design".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    quindi scegliendo il primo la forma è questa?

    public double distanza(Punto altroPunto) { .... } //qui definisco le mie operazioni e va bene...

    poi per chiamare questo metodo?

    1.distanza(2); //cosi?, te li indico con le lettere i punti forse è meglio...

    a.distanza(b);
    Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da blackguardian
    1.distanza(2); //cosi?, te li indico con le lettere i punti forse è meglio...
    Sì perché non si possono mettere identificatori che iniziano con un digit.

    Originariamente inviato da blackguardian
    a.distanza(b);
    Sì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok quindi diciamo che per una cosa mi va bene, ora però avrei una cosa un po più rognosa da risolvere cioè (cerco di spiegarmi il miglior modo possibile):
    a me per implementare un metodo servono 4 oggetti ognuno avente due parametri, esempio:

    Punto a = new Punto (1,3);
    Punto b = new Punto (6,4);
    Punto c = new Punto (7,9);
    Esercizio 1 = new Esercizio (3,9); //questo è solo un oggetto che non mi indica i punti sul piano ma due dimensioni che non sono importanti per quello che ti devo chiedere

    come vedi io ho 4 oggetti da passare ad un solo metodo, in questo caso? come dovrei fare?
    Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da blackguardian
    come vedi io ho 4 oggetti da passare ad un solo metodo, in questo caso? come dovrei fare?
    Dichiari che il metodo riceve quei 4 argomenti, di quei tipi .... e poi lo invochi passando ciò che vuoi .... non capisco il dubbio.

    Semmai la questione sarebbe capire perché devi avere un metodo (di istanza? di classe?) che riceve un Esercizio e 3 Punto ... ma questo è un altro discorso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ho capito...grazie, il programmino che devo andare a fare in java è un po complicato da spiegare cmq mi sei stato di grande aiuto...spero di procedere senza intoppi....grazie di nuovo
    Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!

  8. #8
    mi sono puntato di nuovo
    praticamente io ho creato una classe di punti per il piano cartesiano)

    Punti {all'interno ho definito che int x e int y}

    poi un metodo che mi calcola la distanza tra questi due punti

    public void Dist () {dist=.....}

    e per la classe punti ho definito dei parametri cioè per un punto a

    a.x=1
    a.y=1
    con b stessa cosa

    ora al metodo che parametri gli devo passare cioè dentro al metodo io per la formula dell distanza che variabili devo usare?

    dist = x1-x2 (giusto per fare un esempio) questa non va bene perche x1 e x2 non sono a.x e a.y come devo fare per risolvere questa cosa?
    Se ti dicono siediti e stai zitto...tu alzati e muori combattendo!!!

  9. #9
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Io mi dissocio completamente. Cioè.. non ci capisco una mazza..

    codice senza pretese, tanto per dare l'idea base:
    codice:
    metodo distanza (Punto a, Punto b)
    {
      // Applico il buon vecchio Pitagora, solo che non ho voglia di trovare il carattere giusto per
      // l'elevamento alla seconda potenza.
    
      deltaX = a.x - b.x;
      deltaY = a.y - b.y;
      return radice( deltaX*deltaX + deltaY*deltaY);
    }
    Dov'è il problema?
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da blackguardian
    poi un metodo che mi calcola la distanza tra questi due punti

    public void Dist () {dist=.....}
    Ma dovrebbe ritornare qualcosa .... mica avere void.

    Originariamente inviato da blackguardian
    a.x=1
    a.y=1
    con b stessa cosa
    Non dovresti assegnare valori direttamente ai campi ma solo tramite costruttore e/o metodi setter.

    Originariamente inviato da blackguardian
    ora al metodo che parametri gli devo passare cioè dentro al metodo io per la formula dell distanza che variabili devo usare?

    dist = x1-x2 (giusto per fare un esempio) questa non va bene perche x1 e x2 non sono a.x e a.y come devo fare per risolvere questa cosa?
    Se hai scelto la opzione a) che avevo detto:

    public double distanza(Punto altroPunto) { .... }

    Nel metodo puoi usare semplicemente x e y per il punto 'this' e altroPunto.x e altroPunto.y per l'altro Punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.