Foro de elhacker.net

Programación => Java => Mensaje iniciado por: evans88 en 7 Abril 2013, 19:19 pm



Título: Acceder a variables dentro de la misma clase
Publicado por: evans88 en 7 Abril 2013, 19:19 pm
Hola, quería hacerles una consulta de como acceder a una variable declarada por otra funcion en la misma clase. No se si se entiende. Yo tengo un programa que estoy haciendo para hacer unos calculos de la universidad (todavia soy un poco nuevo a Java y es un hobbie), el problema es que tengo (casi) todo el programa en el main y lo quiero separar en clases, en fin, tengo esta clase:

Código
  1. public class Ecuacion {
  2.  
  3.    public class Ecuacion ( double tr, double pr, double z0, int decimales ) {
  4.  
  5.       // Calculos matematicos...........
  6.  
  7.       //Aqui defino las variables a,b,z1 y error haciendoles algunas operaciones matematicas a los argumentos. por ejemplo:
  8.  
  9.        double b = pr/(8*tr);
  10.  
  11.  
  12.  
  13.    }
  14.  
  15.     public Vector Calcular() {
  16.  
  17.      /*Aqui hago el calculo (para lo que sirve el programa) y genero dos elementos del tipo Vector.
  18.       Uno contiene los datos de las filas de una tabla y el otro el nombre de las columnas. Por ejemplo:*/
  19.  
  20.               Vector columnas = new Vector();
  21. columnas.add("<html>Z<sub>i</sub></html>:");
  22. columnas.add("<html>Z<sub>i+1</sub></html>:");
  23. columnas.add("error (%)");
  24.  
  25.      // Y luego quiero que esta clase devuelva los vectores filas y columnas para poderlos utilizar en el main de otra clase.
  26.  
  27.       return filas, columnas;
  28.  
  29.     }
  30.  
  31.  
  32. }
  33.  
  34.  


Ahora bien, lo que yo he intentado y no puedo hacer es utilizar las variables z1,z0,error,a y b de la funcion Ecuacion en la funcion Calcular(). Si me podrian ayudar se los agradeceria mucho


Título: Re: Acceder a variables dentro de la misma clase
Publicado por: dennis094 en 10 Abril 2013, 00:24 am
Te falta declarar las variables antes del constructor me parece.
Yo haria algo asi:
Código:

/**
 *
 * @author Dennis
 */

//CLASE ECUACION

public class Ecuacion {

//variables public class Ecuacion
    private double tr;
    private double pr;
    private double z0;
    private int decimales;
    private double b;
//constructor

    public Ecuacion(double tr, double pr, double z0, double b, int decimales) {
        this.tr = tr;
        this.pr = pr;
        this.z0 = z0;
        this.decimales = decimales;
        this.b = (getPr() / (8 * getTr()));
    }
//get = sacar valor; set = asignar valor.

    public double getTr() {
        return tr;
    }

    public void setTr(double tr) {
        this.tr = tr;
    }

    public double getPr() {
        return pr;
    }

    public void setPr(double pr) {
        this.pr = pr;
    }

    public double getZ0() {
        return z0;
    }

    public void setZ0(double z0) {
        this.z0 = z0;
    }

    public int getDecimales() {
        return decimales;
    }

    public void setDecimales(int decimales) {
        this.decimales = decimales;
    }

    public double getB() {
        return b;
    }

    public void setB(double b) {
        this.b = b;
    }
}
// MAIN

public class MAIN{
    public static void main(String[] args) {
        Ecuacion ec1 = new Ecuacion(12.2,10.1,10.0,10.6,3);
        System.out.println("El resultado de 'b' es: "+ ec1.getB());
    }
}

Esta hecho un poco "bruto" pero bueno, asi puedes calcular el valor de b.
Siempre que quieras interactuar con objetos y clases debes instanciar los objetos, y darles un cierto valor.
Lo he hecho en 10 min y esta un poco jarcho, pero funciona jajaja.
Igual para calcular 'b' deberia haber hecho un metodo aparte y eso, pero bueno...

Lo de las matrices ya no se decirte por que aun no he dado nada de eso...

PD:. te aconsejo un muy buen libro sobre java, con documentacion, ejercicios...
PIENSA EN JAVA, 4º Edicion.

Un saludo !


Título: Re: Acceder a variables dentro de la misma clase
Publicado por: Mitgus en 11 Abril 2013, 00:55 am
Hola.

Primero que nada unos consejillos.

1.- Tódo método debe empezar por minúscula. Ejemplo: calcular()
En caso sean 2 palabras, la primera letra de la segunda palabra se puede escribir con mayúscula:

getVectores()

2.- La sintaxis del constructor de la clase debe ser:

Código
  1. public NombreDeLaClase()
  2.  

No se debe anteponer 'class' por que no es una clase.

3.- Siempre declara las variables que vas a usar en distintos métodos al inciciar la clase. Si una variable solo es necesaria para un metodo, se debe declarar dentro del metodo.

4.- Acostúmbrate a usar métodos setters y getters como te dijo el compañero de arriba.

 setVector() -> Set de usa para establecer un valor u operaciones.
 getVector() -> Get se usa para obtener valores u operaciones.

Es una buena práctica de programación.



Ahora, te dejo tu código modificado, para que te des cuenta de algunos detalles:

Código
  1. import java.util.Vector;
  2.  
  3. public class Ecuacion {
  4.  
  5.  private double tr;
  6.  private double pr;
  7.  private double z0;
  8.  private double b=0;
  9.  private int decimales;
  10.  private Vector columnas;
  11.  
  12.   public Ecuacion( double tr, double pr, double z0, int decimales ) {
  13.  
  14.      // Calculos matematicos...........
  15.  
  16.      //Aqui defino las variables a,b,z1 y error haciendoles algunas operaciones matematicas a los argumentos. por ejemplo:
  17.     this.tr = tr;
  18.     this.pr = pr;
  19.     this.z0 = z0;
  20.     this.decimales = decimales;
  21.  
  22.     b = pr/(8*tr);
  23.  
  24.  
  25.  
  26.   } // fin constructor
  27.  
  28.   // metodo para obtener el resultado de la ecuacion
  29.   public double getEcuacion()
  30.   {
  31.     return b;
  32.   }
  33.  
  34.    public void calcular() {
  35.  
  36.     /*Aqui hago el calculo (para lo que sirve el programa) y genero dos elementos del tipo Vector.
  37.       Uno contiene los datos de las filas de una tabla y el otro el nombre de las columnas. Por ejemplo:*/
  38.  
  39.              columnas = new Vector();
  40. columnas.add("<html>Z<sub>i</sub></html>:");
  41. columnas.add("<html>Z<sub>i+1</sub></html>:");
  42. columnas.add("error (%)");
  43.  
  44.     // Y luego quiero que esta clase devuelva los vectores filas y columnas para poderlos utilizar en el main de otra clase.
  45.  
  46.  
  47.    }
  48.  
  49.    // metodo para obtener el Vector columnas
  50.    public Vector getVectores()
  51.    {
  52.      return columnas;
  53.    }
  54.  
  55.  
  56.  
  57. public static void main(String[] args)
  58. {
  59.  Ecuacion ejemplo = new Ecuacion(9.2,11.3,5.7,4);
  60.  
  61.  // ejemplo de uso de metodos de la clase ejecutora
  62.  ejemplo.calcular();
  63.  
  64.  // Aquí haces tus operaciones con los datos obtenidos de la clase, por ejemplo yo los imprimo
  65.  System.out.println("Tu vector es: "+ejemplo.getVectores() );
  66.  System.out.println("La ecuacion es : "+ejemplo.getEcuacion() );
  67.  
  68.  // ahora, tambien es factible hacer esto
  69.  Vector columna; // creas una variable personal para 'obtener' valores usando metodos que llame el objeto del main
  70.  columna = ejemplo.getVectores();
  71.  
  72.  System.out.println("Tu vector es: "+columna); // es el mismo resultado!
  73. }
  74.  
  75. } // fin



Por Consola:

Código
  1. Tu vector es: [<html>Z<sub>i</sub></html>:, <html>Z<sub>i+1</sub></html>:, error (%)]
  2. La ecuacion es : 0.1535326086956522
  3. Tu vector es: [<html>Z<sub>i</sub></html>:, <html>Z<sub>i+1</sub></html>:, error (%)]
  4.  



Bendiciones :)


Título: Re: Acceder a variables dentro de la misma clase
Publicado por: evans88 en 11 Abril 2013, 03:18 am
Muchas gracias por todo, el problema era que las tenia que declarar. Gracias ademas por los consejos. Saludos