Java - JAVA suma

 
Vista:

JAVA suma

Publicado por Juan (24 intervenciones) el 25/08/2021 00:59:52
Mis respetos a todos los miembros del foro. Escribo debido a que me proporcionaron un proyecto en el trabajo y nose si esta bien códificado. Añado el enunciado y el código, Gracias.



Crear una clase Java llamada Operaciones, la clase debe contener:
• Método 1: Método sumar que reciba 2 parámetros numéricos y devuelva el resultado de la suma
• Método 2: Método sumar que reciba 3 parámetros numéricos y devuelva el resultado de la suma
• Método 4: Método sumar que reciba 4 parámetros numéricos y devuelva el resultado de la suma
2. Crear el objeto Operaciones (que tenga el mismo nombre que la clase)
3. Llamar a los 3 métodos creados en la clase Operaciones
4. Desplegar por pantalla el valor retornado por cada método, para verificar que el resultado sea correcto

/* Los 3 métodos deben tener el mismo nombre… esto es llamado Sobrecarga de Métodos */
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package sobrecarga;
 
public class Operaciones {
int numero1;
int numero2;
int numero3;
int numero4;
 
 
public void setNumero1(int numero1){
    this.numero1 = numero1;
}
public int getNumero1(){
    return numero1;
}
public void setNumero2(int numero2){
    this.numero2 = numero2;
}
public int getNumero2(){
    return numero2;
}
public void setNumero3(int numero3){
    this.numero3 = numero3;
}
public int getNumero3(){
    return numero3;
}
public void setNumero4(int numero4){
    this.numero4 = numero4;
}
public int getNumero4(){
    return numero4;
}
 
 
public static int sumar(int numero1,int numero2){
 
            int resultado1= numero1+numero2;
            return resultado1;
   }
public static int sumar(int numero1,int numero2,int numero3){
       int resultado2 = numero1+numero2+numero3;
       return  resultado2;
}
public static int sumar(int numero1, int numero2,int numero3, int numero4){
    int resultado3 = numero1+numero2+numero3+numero4;
    return resultado3;
}
    public static void main(String[] args){
 
        Operaciones operaciones = new Operaciones();
        System.out.println(operaciones.sumar(2,4));
        System.out.println(operaciones.sumar(2,4,6));
        System.out.println(operaciones.sumar(1,2,3,4));
    }
}
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

JAVA suma

Publicado por Kabuto (1381 intervenciones) el 25/08/2021 12:46:17
Hola.
Esta clase no necesita atributos.

1
2
3
4
5
public class Operaciones {
int numero1;
int numero2;
int numero3;
int numero4;

Fíjate que en los métodos suma() ni siquiera estás usando estos atributos, solo operas con los valores que se reciben entre paréntesis.
Así que no necesitas esos atributos, y por tanto, tampoco su correspondientes getters/setters

Por lo demás está bien.
En este caso, no sería necesario que los métodos suma() sean static, porque para invocarlos previamente te piden que hagas una instancia de Operaciones.
De hecho, algunos IDE como Eclipse es posible que te muestren una advertencia, un warning, indicándote que si los declaras como static, pues lo ideal sería que los invoques "desde un contexto estático".
No es un error, va a funcionar igual, pero digamos que no estamos siguiendo las normas.

Por tanto, se pueden declarar como "no estáticos" y quedaría mejor.

Esto del static o "no static", puede ser un poco confuso, y tampoco vale la pena que le dediques demasiado esfuerzo a entenderlo, porque es algo que con el tiempo se va viendo más claro.

Si para invocar unos métodos vamos a instanciar un objeto de la clase, que es lo que se nos pide en este enunciado, entonces dichos métodos lo correcto sería que no fuesen static:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Operaciones {
 
	public int sumar(int numero1, int numero2) {
		return numero1 + numero2;
	}
 
	public int sumar(int numero1, int numero2, int numero3) {
		return numero1 + numero2 + numero3;
	}
 
	public int sumar(int numero1, int numero2, int numero3, int numero4) {
		return numero1 + numero2 + numero3 + numero4;
	}
 
	public static void main(String[] args) {
 
		Operaciones operaciones = new Operaciones(); //Instanciamos objeto de la clase
        System.out.println(operaciones.sumar(2,4)); //Invocamos métodos no estáticos
        System.out.println(operaciones.sumar(2,4,6));
        System.out.println(operaciones.sumar(1,2,3,4));
 
	}
 
}

Supongamos ahora que NO vamos a instanciar un objeto de la clase, que simplemente queremos invocar los métodos.
Esto ahora, no va a funcionar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Operaciones {
 
	public int sumar(int numero1, int numero2) {
		return numero1 + numero2;
	}
 
	public int sumar(int numero1, int numero2, int numero3) {
		return numero1 + numero2 + numero3;
	}
 
	public int sumar(int numero1, int numero2, int numero3, int numero4) {
		return numero1 + numero2 + numero3 + numero4;
	}
 
	public static void main(String[] args) {
 
		//Operaciones operaciones = new Operaciones(); //No instanciamos objeto
        System.out.println(sumar(2,4)); //No podemos llamar a los métodos directamente
        System.out.println(sumar(2,4,6)); //porque NO son estáticos y estamos dentro del
        System.out.println(sumar(1,2,3,4));//método main que SÍ es un "contexto estático"
 
	}
 
}
El método main() es static, así que dentro de él solo podemos llamar a métodos estáticos, o bien a métodos que pertenezcan a un objeto instanciado, como habíamos hecho antes.
Entonces, en este caso, habría que declarar los métodos también como static.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Operaciones {
 
	public static int sumar(int numero1, int numero2) {
		return numero1 + numero2;
	}
 
	public static int sumar(int numero1, int numero2, int numero3) {
		return numero1 + numero2 + numero3;
	}
 
	public static int sumar(int numero1, int numero2, int numero3, int numero4) {
		return numero1 + numero2 + numero3 + numero4;
	}
 
	public static void main(String[] args) {
 
		//Operaciones operaciones = new Operaciones(); //No instanciamos objeto
        System.out.println(sumar(2,4)); //Los métodos son static, así que ahora sí podemos
        System.out.println(sumar(2,4,6)); //llamarlos sin instanciar objeto de clase
        System.out.println(sumar(1,2,3,4));
 
	}
 
}

Por último, aquí ahora podemos llamar a los métodos por su nombre directamente, porque el método main está dentro de la clase Operaciones, así que comparten el "ámbito" y se pueden ver unos a otros.
Pero supongamos que la clase Operaciones la tenemos escrita en un archivo .java separado, sin método main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Operaciones {
 
	public static int sumar(int numero1, int numero2) {
		return numero1 + numero2;
	}
 
	public static int sumar(int numero1, int numero2, int numero3) {
		return numero1 + numero2 + numero3;
	}
 
	public static int sumar(int numero1, int numero2, int numero3, int numero4) {
		return numero1 + numero2 + numero3 + numero4;
	}
 
}

Y el main() donde queremos poner en marcha el programa está en otra clase, en otro .java separado, dentro del mismo package, pero en clases separadas.
Estas llamada a sumar(), no van a funcionar.
1
2
3
4
5
6
7
8
9
10
11
public class TestOperaciones {
 
	public static void main(String[] args) {
 
		System.out.println(sumar(2,4)); //Este main no puede saber quien es el método sumar
        System.out.println(sumar(2,4,6));
        System.out.println(sumar(1,2,3,4));
 
	}
 
}

Ya no comparten el ámbito, el método main() no puede ver a los métodos suma() porque están en clases separadas.
¿Cómo podríamos llamarlos entonces?
En este caso, al invocar el método, ponemos delante el nombre de su clase, y ahora sí podremos invocarlos.

1
2
3
4
5
6
7
8
9
10
11
public class TestOperaciones {
 
	public static void main(String[] args) {
 
		System.out.println(Operaciones.sumar(2,4));
        System.out.println(Operaciones.sumar(2,4,6));
        System.out.println(Operaciones.sumar(1,2,3,4));
 
	}
 
}


Y bueno, no explico más que al final te voy a confundir je je.
Es que me ha parecido una buena oportunidad de poner ejemplos para ver las (sutiles) diferencias entre métodos estáticos y no estáticos, porque se que esto al principio no se ve claro que sentido tiene que exista esta distinción.

Espero haber aclarado un poco este asunto.
Un saludo.
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

JAVA suma

Publicado por Juan (24 intervenciones) el 29/08/2021 04:27:04
Infinitas gracias por su ayuda. Me ha aclarado lo suficiente. Saludos.
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