Autor Tema: Solucion Ejercicio CU00673B - static, final en Java (palabras clave)  (Leído 3982 veces)

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Buenas noches, dejo mi codigo para su revision, antes respondo la pregunta realizada.

¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

No. Porque al ser declarado como "final" este evita que se pueda cambiar el valor ya asignado cambiando su estado de variable a constante.

Clase Circulo
Código: [Seleccionar]
public class Circulo {
    private static final double numeroPi = 3.1416;
    private double radio = 0;
    public Circulo(){
       
    }
   
    public void setRadio(double valorRadio) {
        radio = valorRadio;
    }
   
    public double getRadio() {
        return radio;
    }
   
    public double calcularAreaCirculo() {
        double areaCirculo;
        areaCirculo = numeroPi * (radio * radio);
        return areaCirculo;
    }
   
    public double calcularLongitud() {
        double longitudCirculo;
        longitudCirculo = numeroPi * (radio * 2);
        return longitudCirculo;
    }
}

Clase Prueba (donde se encuentra el main)
Código: [Seleccionar]
//Ejercicio 73
public class Prueba {
    public static void main(String [] args) {
        System.out.println("Inicia el programa.");
        System.out.println("Este programa se encarga de hacer el calculo del area y de la longitud de un circulo.");
        System.out.println("Favor ingresar el radio del circulo:");
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        entrada.pedirEntrada();
        double numIngresado;
        numIngresado = Double.valueOf(entrada.getEntrada());
        Circulo radio = new Circulo();
        radio.setRadio(numIngresado);
        System.out.println("El Area del Circulo es: "+radio.calcularAreaCirculo());
        System.out.println("La Longitud del Circulo es: "+radio.calcularLongitud());
    }
}

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Solucion Ejercicio CU00673B - static, final en Java (palabras clave)
« Respuesta #1 en: 16 de Febrero 2015, 22:12 »
Hola jotase
Citar
¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

No. Porque al ser declarado como "final" este evita que se pueda cambiar el valor ya asignado cambiando su estado de variable a constante.

Cierto, el atributo pasa a ser una constante que no se puede modificar.

En cuanto al ejercicio, está muy bien.

Pero quiero apuntar unas notas para estudiar y tenerlas en cuenta si cabe.

En la clase Circulo has creado el atributo numeroPI que como indicabas arriba es una constante que no se puede modificar.
Para este atributo no tiene sentido crear un setter. Pero, y si yo quiero saber cual es el valor de numeroPI, ¿cómo lo averiguo?. Dejo ahí la pregunta

En la clase Prueba tienes estas dos instrucciones:
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        entrada.pedirEntrada();
¿Qué hace cada una?
Pues he visto que la primera al crear el nuevo objeto 'entrada' se ejecuta el constructor de su clase que incluye una sentencia
    pedirEntrada();
Y la segunda instrucción hace lo mismo, ejecuta el mismo método del objeto 'entrada'
Así que una de las dos sobra, porque pedimos dos entradas de texto y solo chequeamos una.

Saludos

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:Solucion Ejercicio CU00673B - static, final en Java (palabras clave)
« Respuesta #2 en: 16 de Febrero 2015, 22:46 »
Hola toni_apr, tienes razon, minimo debi haber agregado un metodo get para la constante numeroPI, me falto lo siguiente.

Código: [Seleccionar]
public double getNumeroPi(){
        return numeroPi;
}

Con respecto a la clase EntradaDeTeclado, el constructor solamente esta iniciando la variable entradaTeclado dentro de la clase, adicional se crea el metodo pedirEntrada el cual se encarga de solicitar el ingreso. Se que esta puede estar dentro del constructor y que me ahorraria una linea de codigo pero (no se si sea correcto) prefiero dejarlo como un metodo a escribir para saber en que momento se hace la solicitud del ingreso al usuario, en vez que solicite automaticamente al delcararlo. Si me equivoco agradecere la aclaracion.

Código: [Seleccionar]
package javaapplication1;
import java.util.Scanner;

public class EntradaDeTeclado {
    private String entradaTeclado;
 
    public EntradaDeTeclado ()  {
        entradaTeclado = "";
    }
   
    public void pedirEntrada(){
        Scanner entradaScanner = new Scanner(System.in);
        entradaTeclado = entradaScanner.nextLine();
    }
 
    public String getEntrada () {
        return entradaTeclado;
    }
}

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Solucion Ejercicio CU00673B - static, final en Java (palabras clave)
« Respuesta #3 en: 16 de Febrero 2015, 23:06 »
Hola jotase

En tu programa puedes hacer todas las cosas que quieras.
Lo que yo quería decirte es que, pides dos entradas de teclado cuando solo gestionas una.
En tu main si quitas la instrucción
        entrada.pedirEntrada();
El programa funcionará igualmente.

A título ilustrativo en tu clase EntradaDeTeclado dentro del método pedirEntrada() coloca temporalmente la siguiente línea (ya la quitarás luego)
    System.out.print("A continuación se solicita una entrada de teclado: ");
antes de la línea
      entradaTeclado = entradaScanner.nextLine();

Saludos

jotase1507

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:Solucion Ejercicio CU00673B - static, final en Java (palabras clave)
« Respuesta #4 en: 16 de Febrero 2015, 23:18 »
Entiendo tu punto y agradezco la aclaracion. Todo sea para mejora :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".