Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - paulamhr

Páginas: [1]
1
Muy buenas, he realizado el ejercicio propuesto para las variables enumeradas CU00681B del curso básico Aprenda Java como si estuviera en primero, y al realizarlo me ha surgido una duda. He declarado la variable enumerada fuera de la definición de la clase
 
Código: [Seleccionar]
/**
 * This class is to practice the enum types
 *
 * @author Paula Monasterio-Huelin
 * @version 22-06-17
 */
import java.util.*;

[b]enum MarcaDeVehiculo{FORD,TOYOTA,SUZUKI,RENAULT,SEAT};[/b]

public class enumVehiculos
{
    // instance variables - replace the example below with your own
     
    private String matricula;
    private MarcaDeVehiculo marca;
    /**
     * Constructor for objects of class enumVehiculos
     */
    public enumVehiculos()
    {
         // initialise instance variables
        matricula = "0052VHT";
        marca = MarcaDeVehiculo.FORD;

    }

    /**
     * Method setMatricula - set the value for the matricula parameter
     *
     * @param  plateVal  the new value of matricula
     */
    public void setMatricula(String plateVal)
    {
        // put your code here
        matricula = plateVal;
    }
   
     /**
     * Method setMarca - set the value for the marca parameter
     *
     * @param  brandVal  the new value of marca
     */
    public void setMarca(MarcaDeVehiculo brandVal)
    {
        marca= brandVal;
    }
   
    /**
     * Method  getMarca- obteins the value for the marca parameter
     *
     * @return  the value of marca
     */
    public MarcaDeVehiculo getMarca()
    {
        return marca;
    }
   
      /**
     * Method getMatricula - obteins the value for the matricula parameter
     *
     * @return  the value of matricula
     */
    public String getMatricula()
    {
        // put your code here
        return matricula;
    }
}


Y luego en la clase de test puedo instanciarla directamente:

Código: [Seleccionar]
public class TestEnumVehiculos
{
    /**
     * Main method to test the class enumVehiculos
     */
    public static void main(String [] Args)
    {
       
        /* Parameters for the test*/
        enumVehiculos miCoche = new enumVehiculos();
        EntradaDeTeclado miEntrada = new EntradaDeTeclado();
        String datosEntrada;
        /*group of instructions to execute*/
        System.out.println("Introduzca un valor de matricula");
        miEntrada.pedirEntrada();
        datosEntrada = miEntrada.getEntrada();
        miCoche.setMatricula(datosEntrada);
        System.out.println("Introduzca un valor de marca entre estos posibles:");
        System.out.println("FORD,TOYOTA,SUZUKI,RENAULT,SEAT");
        miEntrada.pedirEntrada();
        datosEntrada = miEntrada.getEntrada();
       
        if (datosEntrada.equalsIgnoreCase("FORD")){
            miCoche.setMarca(MarcaDeVehiculo.FORD);
        }else if (datosEntrada.equalsIgnoreCase("TOYOTA") ){
          [b]  miCoche.setMarca(MarcaDeVehiculo.TOYOTA);[/b]
        }else if (datosEntrada.equalsIgnoreCase("SUZUKI") ){
            miCoche.setMarca(MarcaDeVehiculo.SUZUKI);
        }else if (datosEntrada.equalsIgnoreCase("RENAULT") ){
            miCoche.setMarca(MarcaDeVehiculo.RENAULT);
        }else if (datosEntrada.equalsIgnoreCase("SEAT") ){
            miCoche.setMarca(MarcaDeVehiculo.SEAT);
        }
       
        System.out.println("La matrícula del coche es: " + miCoche.getMatricula());
        System.out.println("La marca del coche es:" + miCoche.getMarca().toString().toLowerCase());
    }
}


Pero he probado a declararla dentro de la definicón de la clase y entonces para instanciarla tengo que llamarla de la siguiente manera:
enumVehiculos.MarcasDeCoche.FORD por ejemplo. Lo que no me queda claro es qué visibilidad o por quien es accesible la variable enumerada si la declaro fuera de la definición de la clase.

Gracias de antemano por vuestra ayuda.

2
Gracias Nia por tu respuesta,
la verdad es que no estaba segura de si eso era lo que pasaba. Acabo de ver que Blue J te permite crear breakpoints, supongo que con eso puedo ver lo que pasa realmente en la ejecución. Lo probaré.

Un saludo,
Paula

3
Código para clase GrupoDepositos:
Código: [Seleccionar]
public class GrupoDepositos
{
   private Deposito deposito1;
   private Deposito deposito2;
   private Deposito deposito3;
   private String   idGrupo;
   private int      numeroDepositosGrupo;
   
   //class constructor
   public GrupoDepositos(int numeroDeDepositosGrupo, String valor_idGrupo)
   {
       idGrupo= valor_idGrupo;
       switch(numeroDeDepositosGrupo)
       {
           case 1:
            System.out.println("El grupo debe tener más de un depósito");
            break;
           case 2:
            deposito1 = new Deposito();
            deposito2 = new Deposito();
            numeroDepositosGrupo = 2;
            break;
           case 3:
            deposito1 = new Deposito();
            deposito2 = new Deposito();
            deposito3 = new Deposito();
            numeroDepositosGrupo = 3;
            break;
        }
    }//end of consructor
   
    //methods to get the attributes of the class
    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());
        }
    }         
           
}

código para la clase Depositos:
Código: [Seleccionar]
public class Deposito
{
   
    private float  diametro;
    private float  altura;
    private String idDeposito;
   
    //class constructor 1
    public Deposito()
    {
        this(0,0,"");
    }//end of constructor 1
   
    //class constructor 2
    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 = "000";
            System.out.println("Depósito creado con valores por defecto, diámetro 10, altura 5 e identificador 000");
        }
    }//end of constructor 2
       
    public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura)
    {
        idDeposito = valor_idDeposito;
        diametro   = valor_diametro;
        altura     = valor_altura;
        if (idDeposito != "" && valor_diametro > 0 && valor_altura > 0)
        {
        }else
        {
            System.out.println("Valores no admisibles. No se han establecido valores para el deposito");
            idDeposito = "";
            diametro   = 0;
            altura     = 0;
        }
    }
    //methods to get the class attributes
    public float getDiametro () { return diametro; }
    public float getAltura () { return altura; }
    public String getIdDeposito () { return idDeposito;}
   
    //method to calculate capacity
    public float valorCapacidad ()
    {
        float capacidad;
        float pi  = 3.1416f;
       
        capacidad = pi*(diametro/2)*(diametro/2)*altura;
        return capacidad;
    }

}


4

Hola,
es mi primer post en el foro y lo primero es agradeceros este curso, nunca me ha gustado mucho Java y lo estoy disfrutando. 
La duda que tengo es esta, en el ejercicio de crear la clase Depositos y GrupoDepositos,  cuando llamo a la clase Deposito dentro del constructor de GrupoDepositos, no le paso ningún parámetro al constructor de la clase Depósito, ¿por qué no usa el constructor del this y le pone valores a cero sino que usa el constructor que tiene parámetros y le pone los valores por defecto?
 
Este es el constructor de la clase GrupoDepositos:
//class constructor
   public GrupoDepositos(int numeroDeDepositosGrupo, String valor_idGrupo)
   {
       idGrupo= valor_idGrupo;
       switch(numeroDeDepositosGrupo)
       {
           case 1:
            System.out.println("El grupo debe tener más de un depósito");
            break;
           case 2:
            deposito1 = new Deposito();
            deposito2 = new Deposito();
            numeroDepositosGrupo = 2;
            break;
           case 3:
            deposito1 = new Deposito();
            deposito2 = new Deposito();
            deposito3 = new Deposito();
            numeroDepositosGrupo = 3;
            break;
        }
    }//end of consructor

Y estos son los constructores de la clase Deposito:
//class constructor 1
    public Deposito()
    {
        this(0,0,"");
    }//end of constructor 1
   
    //class constructor 2
    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 = "000";
            System.out.println("Depósito creado con valores por defecto, diámetro 10, altura 5 e identificador 000");
        }
    }//end of constructor 2

Gracias por vuestra ayuda.
Un saludo,
Paula

Páginas: [1]

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