Autor Tema: Java. static, final.Variables de clase o campos estáticos y constantes. CU00673B  (Leído 2836 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos !! Paso a dejar el código del ejercicio correspondiente a la entrega CU00673B del curso práctico de programación Java con entorno de aprendizaje BlueJ.

A continuación pego el enunciado del ejercicio y la solución propuesta por mi. Desde ya muchas gracias. Saludos, Luis

EJERCICIO

Define una clase Java denominada Circulo que tenga como atributo de clase (estático) y constante numeroPi, siendo esta constante de tipo double y valor 3.1416. Además la clase tendrá el atributo radio (tipo double) que representa el radio del círculo, y los métodos para obtener y establecer los atributos. También debe disponer de un método para calcular el área del círculo (método tipo funcion areaCirculo que devuelve el área) y la longitud del círculo (método tipo función que devuelve la longitud). En una clase con el método main, declara el código que cree un objeto círculo, le pida al usuario el radio y le devuelva el área y la longitud del círculo.

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

Primero respondo a la pregunta. No se puede hacer si declaramos al numero PI como "final". Ejemplo: static final numeroPI = 3.1416 al comienzo de la clase Circulo
Si quitaramos "final" es posible crear un método para ingresar el numero PI (aún si está definida como static) pero NO es conveniente porque se podría modificar el valor de PI y dejaría de ser una constante


Clase main donde solicita el valor del radio y muestra el área y el perimetro

Código: [Seleccionar]
// clase test para calculo del perimetro y del área de un circulo
public class Test2 {
    public static void main (String [ ] args) {
        String sradio = "";
        double area = 0;
        double perimetro = 0;
        System.out.println("ingrese el valor del radio :");   
        EntradaDeTeclado entradaMain = new EntradaDeTeclado();
        Circulo calculoCirculo = new Circulo();
        entradaMain.pedirEntrada();
        sradio = entradaMain.getEntrada();
        double radio=Double.valueOf(sradio).doubleValue();
        calculoCirculo.setRadio(radio);
        area = calculoCirculo.areaCirculo();
        perimetro = calculoCirculo.perimetroCirculo();
        System.out.println("el area del circulo es :"+area);
        System.out.println("el perimetro del circulo es :"+perimetro);
    }

} //Cierre del main


Clase Circulo donde se realizan los cálculos

Código: [Seleccionar]
public class Circulo
{
    // instance variables - replace the example below with your own
    static final double numeroPI = 3.1416;
    public double radio = 0;
    public Circulo () {

    }

    public void setRadio(double vradio)
    {
        // ingreso del valor del radio del circulo
        radio = vradio;
    }   

    public double getRadio()
    {
        // consulta el valor del radio del circulo
        return radio;
    }   

    public double areaCirculo()
    {
        return numeroPI*radio*radio;
    }

    public double perimetroCirculo()
    {
        return numeroPI*2*radio;
    }
}


Por último el código de la clase para el ingreso por teclado ya utilizado en ejercicios anteriores

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase
« Última modificación: 29 de Julio 2017, 19:42 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas LuisM.

El ejercicio funciona correctamente.

En la clase Circulo se pedía crear el atributo radio, tu lo has declarado como public, haciendo esto no tendría sentido tener los métodos setter y getter.  Como habrás ido viendo en lo que llevas de curso, los atributos de una clase se suelen declarar como privados, para que solo se puede acceder a ellos haciendo uso de los métodos de dicha clase. Y para darle un valor inicial al radio, puedes hacer uso del constructor que creaste.

Código: [Seleccionar]
private double radio;
public Circulo () {
   radio = 0;
}
....

Saludos.  ;D

 

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".