Autor Tema: CU00652B Ejemplo de código java basico, crear clases con campos _  (Leído 2264 veces)

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
A continuación dejo mi respuesta al siguiente ejercicio correspondiente a la entrega CU00652B del tutorial de programación Java desde cero.


Código clase Deposito

Código: [Seleccionar]
/*Esta clase representa un deposito cilindrico donde se almacena aceite
 *
 */
public class Deposito{
   
    //Campos de la clase
    private float diametro;
    private float altura;
    private String idDeposito;
   
    //Constructor sin parametros auxiliar
    public Deposito(){//Lo que hace es llamar al constructor con parametros pasandole valores vacios
        this(0,0,"");
    }//Cierre del constructor
   
    //Constructor de la clase que pide parametros necesarios
    public Deposito (float valor_diametro, float valor_altura, String valor_idDeposito){
        if (valor_diametro>0 && valor_altura>0){
            diametro = valor_diametro;
            altura = valor_altura;
            idDeposito = valor_idDeposito;
        }else{
            diametro = 10;
            altura = 5;
            idDeposito = "";
            System.out.println ("Creado deposito con valores por defecto, diametro 10 metros, altura 5 metros, id 000");
        }
    }
    public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura){
        idDeposito = "";
        diametro = 0;
        altura = 0;
        if(idDeposito!=""&&valor_diametro>0&&valor_altura>0){
        }else{
            System.out.println ("Valores no admisibles. No se han establecido valores para el deposito");
           /*Esto no es posible. Un constructor no es un metodo por lo tanto
            * no podemos llamarlo.
            */
           idDeposito = "";
           diametro = 0;
           altura = 0;
        }
    }//Cierre del metodo
   
    public float getDiametro(){return diametro;}
    public float getAltura(){return altura;}
    public String getIdDeposito(){return idDeposito;}
    public float valorCapacidad(){//Metodo tipo funcion
        float capacidad;
        float pi = 3.1416f;//Si no incluimos la f el compilador considera que 3.1416 es double
        capacidad = pi* (diametro/2)*(diametro/2)*altura;
        return capacidad;
    }
}//Cierre de la clase
   
       

Código clase GrupoDepositos

Código: [Seleccionar]
/*Esta clase representa un conjunto de depositos formado por entre 2 y 3 depositos*/
public class GrupoDepositos{
   
    //Campos de la clase, algunos de ellos son tipo objetos de otra clase
    private Deposito deposito1;
    private Deposito deposito2;
    private Deposito deposito3;
    private String idGrupo;
    private int numeroDepositosGrupo;

    //Constructor para la clase. En ella se crean objetos de otra clase
    public GrupoDepositos(int numeroDeDepositosGrupo, String valor_idGrupo){
        idGrupo = valor_idGrupo;
        switch (numeroDeDepositosGrupo){
            case 1: System.out.println ("Un grupo ha de tener mas de un deposito");break;
           
            case 2:
            deposito1 = new Deposito();/*Al crear el objeto automaticamente se llama al constructor del mismo
            en este caso sin parametros. ESTO ES EJEMPLO DE SINTAXIS DE CREACION DE UN OBJETO EN ESTE CASO DENTRO DE OTRO*/
            deposito2 = new Deposito();
            numeroDepositosGrupo = 2;
            break;
           
            case 3: deposito1 = new Deposito(); deposito2 = new Deposito(); deposito3 = new Deposito();
            numeroDepositosGrupo = 3;
            break;
           
            default: System.out.println ("No se admiten mas de tres depositos");
            //Esto no evita que se cree el objeto
            break;
        }//Cierre del swith
    }//Cierre del constructor
   
    public int getNumeroDepositosGrupo(){return numeroDepositosGrupo;}
   
    public String getIdGrupo(){return idGrupo;}
    public float capacidadDelGrupo(){
        if(numeroDepositosGrupo == 2){return(deposito1.valorCapacidad()+deposito2.valorCapacidad());
        }else{return (deposito1.valorCapacidad() + deposito2.valorCapacidad() + deposito3.valorCapacidad());}
        //Si el grupo se ha creado con un numero de depositos distinto de 2 o 3 saltara un error en tiempo de ejecucion
    }//Cierre del metodo
}//Cierre de la clase


En el ejercicio nos piden razonar porque se obtiene 1178.0999 como valor de capacidad y no otro, mi respuesta es que se obtiene porque existe esta linea en la clase Deposito

Código: [Seleccionar]
capacidad = pi* (diametro/2)*(diametro/2)*altura;
        return capacidad;

Lo que quiere decir que cada deposito de acuerdo al valor de los atributos tienen un diámetro de 10 y una altura de 5, de acuerdo a esa linea de codigo la capacidad es igual a  3.1416x10=31.416/2=15.708x10=157.08/2=78.54x5=392.7x3(numero de depositos) nos da 1178.1 en la calculadora, aunque supongo el resultado que nos da java es mas exacto por el aspecto de la memoria, bueno esa es mi respuesta, cualquier sugerencia es bienvenida.
« Última modificación: 15 de Octubre 2016, 12:58 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:CU00652B Ejemplo de código java basico, crear clases con campos _
« Respuesta #1 en: 15 de Octubre 2016, 12:59 »
Hola Bcks7 básicamente lo que has expuesto es correcto, aunque el resultado correcto es el que te devuelve la calculadora. Puedes leer comentarios sobre el problema de precisión decimal en Java y otros lenguajes en otros hilos del foro, por ejemplo en https://www.aprenderaprogramar.com/foros/index.php?topic=991.0

Nota: este hilo estaba repetido. Por favor no crees hilos repetidos. Voy a borrar el otro hilo para evitar que en los foros existan repeticiones, ya que crean confusión.

Saludos

 

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