implementar una clase

Iniciado por MessageBoxA, 16 Abril 2014, 22:43 PM

0 Miembros y 1 Visitante están viendo este tema.

MessageBoxA

buenas qusiera que me ayudaran, no puedo implementar este codigo es sencillo solo quiero llamar desde la clase main, la clase Operaciones para realizar uno de los metodos pero el netbeans no me deja compilarlo

Código (java) [Seleccionar]

public class Operaciones
{
public static double suma(double a, double b)
{
return a+b;
}
public static double resta(double a, double b)
{
return a-b;
}
public static double multiplica(double a, double b)
{
return a*b;
}
public static double divide(double a, double b)
{
return a/b;
}
public static double modulo(double a, double b)
{
return a % b;
}
}

public class PruebaOperaciones
{
public static void main (String args[])
{
System.out.println( Operaciones.multiplica(Operaciones.suma(2, 3), 8) );
}
}



favor diganme que esta mal ya que no soy muy conocedor de java me estoy iniciando
SI LA MATRIX FUERA PERFECTA.... ESTARÍA ESCRITA EN C++

1mpuls0

#1
Todo ese código lo tienes en el mismo archivo.java?

Si es así tienes dos opciones, una es separar el código

1. En un archivo colocas la clase Operaciones y en otro archivo la clase PruebaOperaciones, recuerda que en java el nombre del archivo debe ser igual al de la clase publica.

Operaciones.java
Código (java) [Seleccionar]

public class Operaciones {
... //todo tu codigo
}


PruebaOperaciones.java
Código (java) [Seleccionar]

public class PruebaOperaciones {
... //todo tu codigo
}


2. Si no prefieres tener dos archivos, solo debes quitar la palabra reservada public (modificador) en la clase que no tiene tu método principal ( public static void main() {} ), entonces te quedará algo como lo siguiente.

PruebaOperaciones.java
Código (java) [Seleccionar]

class Operaciones {
... //todo tu codigo
}

public class PruebaOperaciones {
... //todo tu codigo
}


3. La forma en como quieres llamar a tus métodos de tu clase Operaciones es incorrecta.
Una forma de hacerlo es creando un objeto de tu clase padre, en este caso Operaciones
Código (java) [Seleccionar]

public static void main (String args[])
{
Operaciones op = new Operaciones(); //se crea un objeto de la clase Operaciones
double res = op.suma(1, 2);
}


4. Para que tu clase PruebaOperaciones pueda acceder a tus métodos de la clase Operaciones debes quitar la palabra reservada static (modificador). Para que una clase A pueda tener accesos a los métodos de la clase B, los métodos deben estar definidos como public (además de lo ya mencionado)

Espero haberme explicado.

Saludos.
abc

JS3

#2
Hola que tal,

Bien, tienes muchas soluciones a tu problema, dos de ellas son como ya te la comentaron anteriormente, que son:

1. creando dos archivos, uno para cada clase.
2. eliminando el public a public class Operaciones

otra que puedes hacer insertando la clase Operaciones dentro de tu clase PruebaOperaciones, pero al hacer esto la clase debería de ser estática, es decir, quedaría de la siguiente forma:


nombre del archivo: PruebaOperaciones.java

Código (java) [Seleccionar]


public class PruebaOperaciones{

  public static class Operaciones{

    public static double suma(double a, double b){
      return a+b;
    }

    public static double resta(double a, double b){
      return a-b;
    }

    public static double multiplica(double a, double b){
      return a*b;
    }

    public static double divide(double a, double b){
      return a/b;
    }

    public static double modulo(double a, double b){
      return a % b;
    }

  }

  public static void main (String args[]){
    System.out.println( Operaciones.multiplica(Operaciones.suma(2, 3), 8) );
  }

}




pero si la prefieres tener por fuera dale como te mencionaron anteriormente:

nombre del archivo: PruebaOperaciones.java

Código (java) [Seleccionar]


class Operaciones{
 
    public static double suma(double a, double b){
      return a+b;
    }
   
    public static double resta(double a, double b){
      return a-b;
    }
   
    public static double multiplica(double a, double b){
      return a*b;
    }
   
    public static double divide(double a, double b){
      return a/b;
    }
   
    public static double modulo(double a, double b){
      return a % b;
    }
   
  }

public class PruebaOperaciones{

  public static void main (String args[]){
    System.out.println( Operaciones.multiplica(Operaciones.suma(2, 3), 8) );
  }
 
}






Cita de: Darhius en 16 Abril 2014, 23:38 PM
3. La forma en como quieres llamar a tus métodos de tu clase Operaciones es incorrecta.
Una forma de hacerlo es creando un objeto de tu clase padre, en este caso Operaciones
Código (java) [Seleccionar]

public static void main (String args[])
{
Operaciones op = new Operaciones(); //se crea un objeto de la clase Operaciones
double res = op.suma(1, 2);
}


Saludos.

Estas errado, la forma de llamar los métodos no es incorrecta, puesto de que se tratan métodos del tipo static.

JS3

1mpuls0

Cita de: JS3 en 18 Abril 2014, 03:24 AM
Estas errado, la forma de llamar los métodos no es incorrecta, puesto de que se tratan métodos del tipo static.

JS3


Suponiendo que todo lo demás está bien, se supone que eso es correcto??
:xD
El código en ningun momento tiene la clase static operaciones dentro de la pruebaoperaciones... y aunque ciertamente por la forma en que o llama en su main está bien siempre y cuando lo haga como mencionas, además solo mencioné que era una forma de hacerlo, no que era la única.
Código (java) [Seleccionar]

System.out.println( Operaciones.multiplica(Operaciones.suma(2, 3), 8) );
abc

JS3

Claro esta forma de llamar los métodos es correcta

Código (java) [Seleccionar]

System.out.println( Operaciones.multiplica(Operaciones.suma(2, 3), 8) );


¿Por qué es correcta?, porque son métodos static como bien ya lo había mencionado, esto quiere decir que el objeto no tendrá dicho método, es un método de clase, y la única forma de invocarlo es mencionando a la clase.

La clase no necesariamente tiene que ser del modo static para tener métodos y/o variables static, de hecho puede ir separado en dos (2) archivos diferentes como tu lo mencionas y el main no se vera afectado para nada.


JS3