Java - pedir objetos de una clase

 
Vista:

pedir objetos de una clase

Publicado por Alfonso (1 intervención) el 08/04/2019 09:13:41
Hola soy nuevo en java y me dejaron un ejercicio de calcular la media,varianza y desviacion estandar por metodos el problema es que no se pedir objetos de una clase a otra los metodos que tengo son estos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Operaciones {
    public static double [] datos (double z){
     double []d=new double [10];
    for(int x=0;x<10;x++){
        Scanner tomo=new Scanner(System.in);
        System.out.println("Inserte valor");
        d[x]=tomo.nextDouble();
    }
    return d;
}
    public double promedio (double d[]){
     double sum=0,media;
    for(int x=0;x<10;x++){
        sum=d[x]+sum;
    }
    media=sum/10;
    return media/(double)d.length;
    }
    public double varianza(double d[]){
    Operaciones med=new Operaciones();
    double sum=0,var,y,t,p,media;
    media= promedio(d);
    for(int x=0;x<10;x++){
      t=d[x]-media;
     p=t*t;
     sum+=p;
    }
    var=sum/9;
    return var;
    }
    public double desviacion (double q){
     double desv=0,o = 0,p=0,t;
     t=Math.sqrt(o);
     return t;
    }
}

Me falta tener el hacer el main en otra clase pero no se como¡ tienen alguna idea que pueda hacer para entender ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

pedir objetos de una clase

Publicado por Kabuto (1381 intervenciones) el 08/04/2019 14:45:20
Hola.
Por partes:

El código de esta clase Operaciones, no se si es aritméticamente correcto o no, pero algorítmicamente (o sea, desde la lógica de la programación) necesitaría un buen repaso ya que hay variables y objetos que se declaran pero luego no se usan para nada.

Por ejemplo, aquí las variables desv y p no se usan para nada. Además se le pasa un double llamado q como parámetro que tampoco tienen ninguna utilidad.
De hecho, el código hace la raiz cuadrada de la variable o, que tiene valor 0.... supongo que en realidad debería usar la varaible q recibida como parámetro y esa variable o es en realidad innecesaria.
1
2
3
4
5
public double desviacion (double q){
		double desv=0,o = 0,p=0,t;
		t=Math.sqrt(o);
		return t;
	}

O en el primer método, se pasa por parametros una variable llamada z, pero tampoco se usa para nada, es irrelevante.

1
2
3
4
5
6
7
8
9
public static double [] datos (double z){
		double []d=new double [10];
		for(int x=0;x<10;x++){
			Scanner tomo=new Scanner(System.in);
			System.out.println("Inserte valor");
			d[x]=tomo.nextDouble();
		}
		return d;
	}

Hay más variables que no se usan en otros métodos, y luego hay que mencionar que usar nombres tan poco descriptivos como t, q, z, p.... es muy desaconsejable.

Pero bueno, al margen de esto y suponiendo que esos métodos funcionan correctamente y tal.

Para invocarlos desde otra clase, primero has de decidir si estos métodos los vas a declarar como estáticos o no.Fíjate que el primero de ellos sí está declarado como static, pero el resto no lo están.

La diferencia entre declararlos como static o no, afectará a la forma de invocarlos desde otra clase.

Si los métodos están declarados como estáticos, tú desde otra clase podrás invocarlos simplemente escribiendo el nombre de su clase y a continuación el nombre del método.
Por ejemplo:
1
double promedioCalculado = Operaciones.promedio(arrayDatos);

Pero si no están declarados como estáticos, para poder invocarlos, previamente has de instanciar un objeto de esta clase y usar este objeto para invocarlos.

1
2
Operaciones operador = new Operaciones();
double promedioCalculado = operador.promedio(arrayDatos);

Básicamente esa es la diferencia.
Entonces, para este caso concreto, lo más lógico es que lo declares todos como estáticos, ya que no tiene sentido tener que declarar un objeto para invocarlos.

Sería distinto si necesitases que esta clase te proporcionase una estructura donde guardar datos durante la ejecución del programa o algo así. Entonces si vendría mejor instanciar un objeto.

Pero como esta clase simple y llanamente tiene que proporcionarte unos métodos que realicen determinadas funciones, lo mejor es declarar sus métodos como static y así poder invocarlos directamente.

De este modo te bastará con poner su nombre de clase, un punto, y el método que necesitas como hemos visto en el ejemplo de antes, para llamarlo desde una clase con main o cualquier otra clase.

1
2
3
4
5
6
7
8
9
10
11
public class Ejemplo {
 
	public static void main(String[] args) {
 
		double[] arrayDatos = new double[10];
 
		double promedioCalculado = Operaciones.promedio(arrayDatos);
 
	}
 
}

Todo esto dando por hecho que ambas clases están en el mismo package, si no lo están, tendrás que hacer un import para poder llamar a la clase Operaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

pedir objetos de una clase

Publicado por Rodrigo (623 intervenciones) el 08/04/2019 14:48:37
Parece mas corto asi:

Haz que todos los metodos sean public static.

Usalos en cualquier parte usando el nombre de la clase y el metodo.

1
double promedio = Operaciones.promedio(datos);

Nunca se hace necesario crear objero alguno con new.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar