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 - Dimitar Stefanov

Páginas: 1 ... 14 15 16 17 18 [19] 20 21 22 23 24 ... 30
361
Hola, de nuevo, Mario :)

Espero que esta vez sea la vencida y tenga todo bien (lógica y códigos).

A continuación procederé en subir todos los códigos de las clases:

Clase "Producto":

Código: [Seleccionar]
public class Producto{
    private String fechaCaducidad;
    private int numeroLote;
    private String fechaEnvase;
    private String paisOrigen;
   
    public Producto(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
        this.fechaEnvase = fechaEnvase;
        this.paisOrigen = paisOrigen;
    }
   
    public void setFechaCaducidad(String fechaCaducidad){
        this.fechaCaducidad = fechaCaducidad;
    }
   
    public void setNumeroLote(int numeroLote){
        this.numeroLote = numeroLote;
    }
   
    public void setFechaEnvase(String fechaEnvase){
        this.fechaEnvase = fechaEnvase;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen = paisOrigen;
    }
   
    public String getFechaCaducidad(){return fechaCaducidad;}
    public int getNumeroLote(){return numeroLote;}
    public String getFechaEnvase(){return fechaEnvase;}
    public String getPaisOrigen(){return paisOrigen;}
   
    public void mostrarInfoProducto(){
        System.out.println("El producto: "+getNumeroLote()+" tiene una fecha de caducidad: "+getFechaCaducidad());
    }
}

Clase "ProductoFresco":

Código: [Seleccionar]
public class ProductoFresco extends Producto{
   
    public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
    }
   
    public void mostrarInfoProductoFresco(){
        System.out.println("El producto Fresco: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+" y fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen());
    }
}

Clase "ProductoRefrigeradoYCongelado" (hacía falsta de una clase "intermedia", jeje):

Código: [Seleccionar]
public class ProductoRefrigeradoYCongelado extends Producto{
    private float temperaturaMantenemientoRecom;
   
    public ProductoRefrigeradoYCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }
   
    public void setTemperaturaMantenemientoRecom(float temperaturaMantenemientoRecom){
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }

    public float getTemperaturaMantenemientoRecom(){return temperaturaMantenemientoRecom;}
   
    public void mostrarInfoProductoRefrigeradoYCongelado(){
        System.out.print("El producto Refrigerado/Congelado: "+getNumeroLote()+" envasado en fecha: "+getFechaEnvase()+" y con fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen()+", tiene una temperatura de mantenemiento recomendad de: "+getTemperaturaMantenemientoRecom()+"C");
    }
}

Clase "ProductoRefrigerado":

Código: [Seleccionar]
public class ProductoRefrigerado extends ProductoRefrigeradoYCongelado{
    private int codigoOrganismoSupervision;
   
    public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase,  String paisOrigen, float temperaturaMantenemientoRecom, int codigoOrganismoSupervision){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
    }
   
    public void setCodigoOrganismoSupervision(int codigoOrganismoSupervision){
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
    }
   
    public int getCodigoOrganismoSupervision(){return codigoOrganismoSupervision;}
   
    public void mostrarInfoProductoRefrigerado(){
        mostrarInfoProductoRefrigeradoYCongelado();
        System.out.print(" y un código de Organismo de Supervisión: "+getCodigoOrganismoSupervision()+"\n");
    }
}

Clase "ProductoCongelado":

Código: [Seleccionar]
public class ProductoCongelado extends ProductoRefrigeradoYCongelado{
   
    public ProductoCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
    }
   
    public void mostrarInfoProductoCongelado(){
        mostrarInfoProductoRefrigeradoYCongelado();
        System.out.println();
    }
}

Clase "ProductoCongeladoPorAire":

Código: [Seleccionar]
public class ProductoCongeladoPorAire extends ProductoCongelado{
    private float nitrogeno;
    private float oxigeno;
    private float co2;
    private float vaporAgua;
   
    public ProductoCongeladoPorAire(String fechaCaducidad, int numeroLote,  String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, float nitrogeno, float oxigeno, float co2, float vaporAgua){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.nitrogeno = nitrogeno;
        this.oxigeno = oxigeno;
        this.co2 = co2;
        this.vaporAgua = vaporAgua;
    }
   
    public void setNitrogeno(float nitrogeno){
        this.nitrogeno = nitrogeno;
    }
   
    public void setOxigeno(float oxigeno){
        this.oxigeno = oxigeno;
    }
   
    public void setCo2(float co2){
        this.co2 = co2;
    }
   
    public void setVaporAgua(float vaporAgua){
        this.vaporAgua = vaporAgua;
    }
   
    public float getNitrogeno(){return nitrogeno;}
    public float getOxigeno(){return oxigeno;}
    public float getCo2(){return co2;}
    public float getVaporAgua(){return vaporAgua;}
   
    public void mostrarInfoProductoCongeladoPorAire(){
        mostrarInfoProductoRefrigeradoYCongelado();
        System.out.print(" y tiene una composición de aire como sigue: ");
        System.out.println("Nitrógeno: "+getNitrogeno()+"%");
        System.out.println("Oxígeno: "+getOxigeno()+"%");
        System.out.println("Dióxido de carbono: "+getCo2()+"%");
        System.out.println("Vapor de agua: "+getVaporAgua()+"%");
    }
}

Clase "ProductoCongeladoPorAgua":

Código: [Seleccionar]
public class ProductoCongeladoPorAgua extends ProductoCongelado{
    private float salinidadAgua;
   
    public ProductoCongeladoPorAgua(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom ,float salinidadAgua){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.salinidadAgua = salinidadAgua;
    }
   
    public void setSalinidadAgua(float salinidadAgua){
        this.salinidadAgua = salinidadAgua;
    }
   
    public float getSalinidadAgua(){return salinidadAgua;}
   
    public void mostrarInfoProductoCongeladoPorAgua(){
        mostrarInfoProductoRefrigeradoYCongelado();
        System.out.print(" y tiene un porcentaje de salinidad: "+getSalinidadAgua()+"gr sal por litro de agua\n");
    }
}

Clase "ProductoCongeladoPorNitrogeno":

Código: [Seleccionar]
public class ProductoCongeladoPorNitrogeno extends ProductoCongelado{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public ProductoCongeladoPorNitrogeno(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, String metodoCongelacion, int tiempoExposicion){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.metodoCongelacion = metodoCongelacion;
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public void setMetodoCongelacion(String metodoCongelacion){
        this.metodoCongelacion = metodoCongelacion;
    }
   
    public void setTiempoExposicion(int tiempoExposicion){
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public String getMetodoCongelacion(){return metodoCongelacion;}
    public int getTiempoExposicion(){return tiempoExposicion;}
   
    public void mostrarInfoProductoCongeladoPorNitrogeno(){
        mostrarInfoProductoRefrigeradoYCongelado();
        System.out.print(" y tuvo un método de congelación: "+getMetodoCongelacion()+" y estuvo expuesto al nitrógeno: "+getTiempoExposicion()+"s\n");
    }
}

Clase "TestHerencia3":

Código: [Seleccionar]
public class TestHerencia3{
    public static void main(String []Args){
        ProductoFresco productoFresco1 = new ProductoFresco("23-06-2016",1234, "05-01-2016","Argentina");
        ProductoFresco productoFresco2 = new ProductoFresco("22-06-2016",987,"09-10-2016","España");
        ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado("10-10-2016",345,"01-03-2016","Ecuador",5,455);
        ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado("11-10-2016",346,"02-03-2016","Colombia",6,8495);
        ProductoRefrigerado productoRefrigerado3 = new ProductoRefrigerado("12-10-2016",347,"03-03-2016","Marruecos",4,2345);
        ProductoCongeladoPorAgua productoCongeladoPorAgua1 = new ProductoCongeladoPorAgua("13-06-2016",908,"12-05-2016","Estados Unidos",-21,40);
        ProductoCongeladoPorAgua productoCongeladoPorAgua2 = new ProductoCongeladoPorAgua("13-08-2016",988,"13-05-2016","Francia",-18,35);
        ProductoCongeladoPorAire productoCongeladoPorAire1 = new ProductoCongeladoPorAire("11-08-2016",354,"11-05-2016","Alemania",-19,20,20,30,30);
        ProductoCongeladoPorAire productoCongeladoPorAire2 = new ProductoCongeladoPorAire("11-11-2016",428,"08-08-2016","Países Bajos",-15,10,20,30,40);
        ProductoCongeladoPorNitrogeno productoCongeladoPorNitrogeno1 = new ProductoCongeladoPorNitrogeno("10-08-2016",846,"08-06-2016","Bolivia",-22,"Tradicional",200);
        productoFresco1.mostrarInfoProductoFresco();
        productoFresco2.mostrarInfoProductoFresco();
        productoRefrigerado1.mostrarInfoProductoRefrigerado();
        productoRefrigerado2.mostrarInfoProductoRefrigerado();
        productoRefrigerado3.mostrarInfoProductoRefrigerado();
        productoCongeladoPorAgua1.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAgua2.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAire1.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorAire2.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorNitrogeno1.mostrarInfoProductoCongeladoPorNitrogeno();
    }
}

Y adjunto la foto del esquema.

Mario, el hilo que me diste y el ejercicio de "arcanFAC" son una pasada. En su ejercicio se va incluso más allá de lo que pide el ejercicio y con su código puedes entrar tu (por consola) los datos de cada objeto e imprimirlos posteriormente. Le felicito! Yo eso no lo he hecho, primero quería ver si voy bien encaminado.

Gracias

362
Hola, Mario.

Ah, ahora entendí a lo que te refieres. Vale.

Voy a corregir este ejercicio y el siguiente (CU00688B) que ya lo he colgado, pero viendo esto sé que lo tengo mal planteado. Voy a corregir los dos y subire las correcciones. 

Gracias por ayudarme.

Saludos.

363
Buenas tardes, Mario.

Gracias por corregirme el ejercicio.

Creo que he entendido mal el ejercicio. Como el mismo indica:

Citar
Todos los productos llevan esta información común: fecha de caducidad y número de lote.

y:

Citar
Hay tres tipos de productos congelados: congelados por aire, congelados por agua y congelados por nitrógeno. Los productos congelados por aire deben llevar la información de la composición del aire con que fue congelado (% de nitrógeno, % de oxígeno, % de dióxido de carbono y % de vapor de agua). Los productos congelados por agua deben llevar la información de la salinidad del agua con que se realizó la congelación en gramos de sal por litro de agua. Los productos congelados por nitrógeno deben llevar la información del método de congelación empleado y del tiempo de exposición al nitrógeno expresada en segundos.

intepreté que los productos congelados por aire sólo tendrían que llevar la información: fecha de caducidad, número de lote y la composición del aire(nitrógeno, oxígeno, co2 y vapor de agua). Los productos congelados por agua tendrán que llevar la información: fecha de caducidad, número de lote y la salinidad. Y los productos congelados por nitrógeno: fecha de caducidad, número de lote y el tiempo de exposición al nitrógeno.

Por eso ví que lo más lógico era que todos los tipos de congelados por aire/agua/nitrógeno era más lógica que heredaran de la clase  "Producto" y no de la clase "ProductoCongelado". Aunque también debo decir que si un producto congelado por aire/agua/nitrógeno debería llevar la información de su padre "ProductoCongelado". Pero como también dije anteriormente, pensé que si dichos productos (ProductoCongeladoPorAire/Agua/Nitrogeno) tendrían que llevar la información de su padre lo hubieran puesto en el ejercicio. Sí, reconozco, este tema es más bien de lógica que no de leer el cometido del ejercicio.

Sobre el apartado b) del ejercicio:

Citar
b) Crear superclases intermedias (aunque no se correspondan con la descripción dada de la empresa) para agrupar atributos y métodos cuando sea posible. Esto corresponde a “realizar abstracciones” en el ámbito de la programación, que pueden o no corresponderse con el mundo real.

no ví la necesidad de crear ninguna superclase intermedia porque realmente la clase "Producto" lleva la información que necesitan las subclases "ProductoFresco", "ProductoRefrigerado" y "ProductoCongelado" y a su vez la subclase "ProductoFresco" lleva, en sí, la información que necesitan las subclases "ProductoRefrigerado" y "ProductoCongelado". Por último, la subclase "ProductoRefrigerado" lleva la información que necesita la subclase "ProductoCongelado" (aquí cabe un matíz que lo expongo más abajo).

 Así que, siguiendo esta lógica, sería de esperar que la subclase "ProductoCongelado" herede de la subclase "ProductoRefrigerados"(para la clase "ProductoCongelado" la clase "ProductoRefrigerado" es una superclase, pero para las clases con más nivel es una subclase). A su vez, la subclase "ProductoRefrigerado" herede de la subclase (su superclase) "ProductoFresco" y al final la subclase "ProductoFresco" herede de la superclase "Producto".

Sobre lo que había comentado antes que la subclase  "ProductoCongelado" conlleva la misma información que su superclase "ProductoRefrigerado" eso no es del todo cierto. En el anunciado del ejercicio se comenta:

Citar
Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria, la fecha de envasado, la temperatura de mantenimiento recomendada y el país de origen. Los productos congelados deben llevar la fecha de envasado, el país de origen y la temperatura de mantenimiento recomendada.

vemos que la subclase "ProductoCongelado" lleva un campo menos que su superclase "ProductoRefrigerado". Ese "dilema" le he resuelto con un constructor sobreescrito en la subclase "ProductoRefrigerado" como podemos ver a continuación en el código de la subclase "ProductoRefrigerado":

Código: [Seleccionar]
public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }
   
    public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, int codigoOrganismoSupervision, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }

vemos que el primer constructor no lleva el parámetro "codigoOrganismoSupervision" cosa que nos brinda la oportunidad de crear un constructor adecuado con el cometido del ejercicio en la subclase "ProductoCongelado":

Código: [Seleccionar]
public ProductoCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
    }

Creo que con esta aclaración se explica la falta de una superclase "intermedia" de productos.

Adjunto el esquema como "esquemaCU00687B(011).jpg".

De todas maneras, considerando las anotaciones por parte de Mario R. Rancel deberíamos modificar los códigos de las subclases: "ProductoCongeladoPorAire", "ProductoCongeladoPorAgua", "ProductoCongeladoPorNitrogeno" y "TestHerencia3" que quedarían de la siguiente manera:

El código de la subclase "ProductoCongeladoPorAgua":

Código: [Seleccionar]
public class ProductoCongeladoPorAgua extends ProductoCongelado{
    private float salinidadAgua;
   
    public ProductoCongeladoPorAgua(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom ,float salinidadAgua){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.salinidadAgua = salinidadAgua;
    }
   
    public void setSalinidadAgua(float salinidadAgua){
        this.salinidadAgua = salinidadAgua;
    }
   
    public float getSalinidadAgua(){return salinidadAgua;}
   
    public void mostrarInfoProductoCongeladoPorAgua(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tiene un porcentaje de salinidad: "+getSalinidadAgua()+"gr sal por litro de agua");
    }
}

El código de la subclase "ProductoCongeladoPorAire":

Código: [Seleccionar]
public class ProductoCongeladoPorAire extends ProductoCongelado{
    private float nitrogeno;
    private float oxigeno;
    private float co2;
    private float vaporAgua;
   
    public ProductoCongeladoPorAire(String fechaCaducidad, int numeroLote,  String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, float nitrogeno, float oxigeno, float co2, float vaporAgua){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.nitrogeno = nitrogeno;
        this.oxigeno = oxigeno;
        this.co2 = co2;
        this.vaporAgua = vaporAgua;
    }
   
    public void setNitrogeno(float nitrogeno){
        this.nitrogeno = nitrogeno;
    }
   
    public void setOxigeno(float oxigeno){
        this.oxigeno = oxigeno;
    }
   
    public void setCo2(float co2){
        this.co2 = co2;
    }
   
    public void setVaporAgua(float vaporAgua){
        this.vaporAgua = vaporAgua;
    }
   
    public float getNitrogeno(){return nitrogeno;}
    public float getOxigeno(){return oxigeno;}
    public float getCo2(){return co2;}
    public float getVaporAgua(){return vaporAgua;}
   
    public void mostrarInfoProductoCongeladoPorAire(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tiene una composición de aire como sigue: ");
        System.out.println("Nitrógeno: "+getNitrogeno()+"%");
        System.out.println("Oxígeno: "+getOxigeno()+"%");
        System.out.println("Dióxido de carbono: "+getCo2()+"%");
        System.out.println("Vapor de agua: "+getVaporAgua()+"%");
    }
}

El código de la subclase "ProductoCongeladoPorNitrogeno":

Código: [Seleccionar]
public class ProductoCongeladoPorNitrogeno extends ProductoCongelado{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public ProductoCongeladoPorNitrogeno(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, String metodoCongelacion, int tiempoExposicion){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
        this.metodoCongelacion = metodoCongelacion;
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public void setMetodoCongelacion(String metodoCongelacion){
        this.metodoCongelacion = metodoCongelacion;
    }
   
    public void setTiempoExposicion(int tiempoExposicion){
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public String getMetodoCongelacion(){return metodoCongelacion;}
    public int getTiempoExposicion(){return tiempoExposicion;}
   
    public void mostrarInfoProductoCongeladoPorNitrogeno(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tuvo un método de congelación: "+getMetodoCongelacion()+" y estuvo expuesto al nitrógeno: "+getTiempoExposicion()+"s");
    }
}

Y el código de la clase main "TestHerencia3":

Código: [Seleccionar]
public class TestHerencia3{
    public static void main(String []Args){
        ProductoFresco productoFresco1 = new ProductoFresco("23-06-2016",1234, "05-01-2016","Argentina");
        ProductoFresco productoFresco2 = new ProductoFresco("22-06-2016",987,"09-10-2016","España");
        ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado("10-10-2016",345,"01-03-2016","Ecuador",5);
        ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado("11-10-2016",346,"02-03-2016","Colombia",5);
        ProductoRefrigerado productoRefrigerado3 = new ProductoRefrigerado("12-10-2016",347,"03-03-2016","Marruecos",5);
        ProductoCongeladoPorAgua productoCongeladoPorAgua1 = new ProductoCongeladoPorAgua("13-06-2016",908,"12-05-2016","Estados Unidos",-21,40);
        ProductoCongeladoPorAgua productoCongeladoPorAgua2 = new ProductoCongeladoPorAgua("13-08-2016",988,"13-05-2016","Francia",-18,35);
        ProductoCongeladoPorAire productoCongeladoPorAire1 = new ProductoCongeladoPorAire("11-08-2016",354,"11-05-2016","Alemania",-19,20,20,30,30);
        ProductoCongeladoPorAire productoCongeladoPorAire2 = new ProductoCongeladoPorAire("11-11-2016",428,"08-08-2016","Países Bajos",-15,10,20,30,40);
        ProductoCongeladoPorNitrogeno productoCongeladoPorNitrogeno1 = new ProductoCongeladoPorNitrogeno("10-08-2016",846,"08-06-2016","Bolivia",-22,"Tradicional",200);
        productoFresco1.mostrarInfoProductoFresco();
        productoFresco2.mostrarInfoProductoFresco();
        productoRefrigerado1.mostrarInfoProductoRefrigerado();
        productoRefrigerado2.mostrarInfoProductoRefrigerado();
        productoRefrigerado3.mostrarInfoProductoRefrigerado();
        productoCongeladoPorAgua1.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAgua2.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAire1.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorAire2.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorNitrogeno1.mostrarInfoProductoCongeladoPorNitrogeno();
    }
}

Adjunto el esquema de la modificación del ejercicio como "esquemaCU00687B(022)".

No sé si con esta constestación he resuelto el ejercicio y he comprendido mejor el mismo.

Gracias

364
Hola, César.

Debo decir, una manera mucho más cuidadosa y organizada de sustituir la parte del código que se me repetía a mí. Yo también pensaba "a ver como puedo sustituir toda esa repiticion", pero no se me ocurrió nada. Espero que con el tiempo y la experiencia a mí también me salgan estas cosas :)

Gracias por corregir otro ejercicio más. (Ya he corregido (copiado) el código de la clase "Test" de acuerdo con tus observaciones).

Saludos

365
Buenas tardes, César.

Lo dicho, estoy en modo "aprendizaje" e infinítamente de veces me equivoco de conceptos. Aunque debo reconocer que esta vez no ha sido así, sino que simplemente pensaba que esta clase realmente no definía ningún objeto. Pero tienes razón, porque (utilizando el editor de BlueJ) cuando le doy con el butón derecho encima de la clase sí me permite crear objetos de tipo "miniCalculadoraEjemplo" y más demostración que esa no podría existir.

De momento creo que puedo seguir el rítmo del curso, pero el tema del polimorfismo me tiene un tanto confuso, jejeje:) Sé que es un tema muy muy importante y, sobre todo, en un lenguaje orientado a objetos. Leo y releo las entregas dedicadas a ese tema, a ver si se me aclaran los conceptos.

Saludos.

366
Hola, César.

Pues sí, tienes razón, no estaría de más demostrar el funcionamiento del código con un mensaje por pantalla, jeje. A veces voy más a lo práctico y doy por hecho que todo el mundo usa mi tipo de editor (BlueJ). Tomo nota de la observación :)

Entiendo tu ejemplo de "casting". Con él como que le "recuerdas" al compilador que lo que le vas a pasar es un objeto "LinkedList" y así recordarle que aunque espera un objeto clase "List" también pueden pasarle un objeto tipo "LinkedList".

Creo que lo he entendido.

Gracias.

PD: Puede ser que no utilizo muy bien los conceptos informáticos. Perdonadme :)

367
Hola.

Aquí expongo una posible solución del ejercicio CU00687B del curso Java desde cero.

Citar
EJERCICIO

Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común: fecha de caducidad y número de lote. A su vez, cada tipo de producto lleva alguna información específica. Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria, la fecha de envasado, la temperatura de mantenimiento recomendada y el país de origen. Los productos congelados deben llevar la fecha de envasado, el país de origen y la temperatura de mantenimiento recomendada.

Hay tres tipos de productos congelados: congelados por aire, congelados por agua y congelados por nitrógeno. Los productos congelados por aire deben llevar la información de la composición del aire con que fue congelado (% de nitrógeno, % de oxígeno, % de dióxido de carbono y % de vapor de agua). Los productos congelados por agua deben llevar la información de la salinidad del agua con que se realizó la congelación en gramos de sal por litro de agua. Los productos congelados por nitrógeno deben llevar la información del método de congelación empleado y del tiempo de exposición al nitrógeno expresada en segundos.

Crear el código de las clases Java implementando una relación de herencia siguiendo estas indicaciones:

a) En primer lugar realizar un esquema con papel y bolígrafo donde se represente cómo se van a organizar las clases cuando escribamos el código. Estudiar los atributos de las clases y trasladar a la superclase todo atributo que pueda ser trasladado.

b) Crear superclases intermedias (aunque no se correspondan con la descripción dada de la empresa) para agrupar atributos y métodos cuando sea posible. Esto corresponde a “realizar abstracciones” en el ámbito de la programación, que pueden o no corresponderse con el mundo real.

c) Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto cuando sea procedente.

Crear una clase testHerencia3 con el método main donde se creen: dos productos frescos, tres productos refrigerados y cinco productos congelados (2 de ellos congelados por agua, otros 2 por agua y 1 por nitrógeno). Mostrar la información de cada producto por pantalla.

El código de la clase "Producto":

Código: [Seleccionar]
public class Producto{
    private String fechaCaducidad;
    private int numeroLote;
   
    public Producto(String fechaCaducidad, int numeroLote){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
   
    public void setFechaCaducidad(String fechaCaducidad){
        this.fechaCaducidad = fechaCaducidad;
    }
   
    public void setNumeroLote(int numeroLote){
        this.numeroLote = numeroLote;
    }
   
    public String getFechaCaducidad(){return fechaCaducidad;}
    public int getNumeroLote(){return numeroLote;}
   
    public void mostrarInfoProducto(){
        System.out.println("El producto: "+getNumeroLote()+" tiene una fecha de caducidad: "+getFechaCaducidad());
    }
}

El código de la clase "ProductoFresco":

Código: [Seleccionar]
public class ProductoFresco extends Producto{
    private String fechaEnvase;
    private String paisOrigen;
   
    public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
        super(fechaCaducidad, numeroLote);
        this.fechaEnvase = fechaEnvase;
        this.paisOrigen = paisOrigen;
    }
   
    public void setFechaEnvase(String fechaEnvase){
        this.fechaEnvase = fechaEnvase;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen = paisOrigen;
    }
   
    public String getFechaEnvase(){return fechaEnvase;}
    public String getPaisOrigen(){return paisOrigen;}
   
    public void mostrarInfoProductoFresco(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+" y fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen());
    }
}

El código de la clase "ProductoRefrigerado":

Código: [Seleccionar]
public class ProductoRefrigerado extends ProductoFresco{
    private int codigoOrganismoSupervision;
    private float temperaturaMantenemientoRecom;
   
    public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }
   
    public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, int codigoOrganismoSupervision, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }
   
    public void setCodigoOrganismoSupervision(int codigoOrganismoSupervision){
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
    }
   
    public void setTemperaturaMantenemientoRecom(float temperaturaMantenemientoRecom){
        this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
    }
   
    public int getCodigoOrganismoSupervision(){return codigoOrganismoSupervision;}
    public float getTemperaturaMantenemientoRecom(){return temperaturaMantenemientoRecom;}
   
    public void mostrarInfoProductoRefrigerado(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+" y fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen()+". Tiene un código de Organismo de Supervisión: "+getCodigoOrganismoSupervision()+" y su temperatura de mantinemiento recomendada es de: "+getTemperaturaMantenemientoRecom()+"C");
    }
}

El código de la clase "ProductoCongelado":

Código: [Seleccionar]
public class ProductoCongelado extends ProductoRefrigerado{
   
    public ProductoCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
        super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
    }
   
    public void mostrarInfoProductoCongelado(){
        System.out.println("El producto: "+getNumeroLote()+" envasado en fecha: "+getFechaEnvase()+" y con fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen()+" y tiene una temperatura de mantenemiento recomendad de: "+getTemperaturaMantenemientoRecom()+"C");
    }
}

El código de la clase "ProductoCongeladoPorAire":

Código: [Seleccionar]
public class ProductoCongeladoPorAire extends Producto{
    private float nitrogeno;
    private float oxigeno;
    private float co2;
    private float vaporAgua;
   
    public ProductoCongeladoPorAire(String fechaCaducidad, int numeroLote, float nitrogeno, float oxigeno, float co2, float vaporAgua){
        super(fechaCaducidad, numeroLote);
        this.nitrogeno = nitrogeno;
        this.oxigeno = oxigeno;
        this.co2 = co2;
        this.vaporAgua = vaporAgua;
    }
   
    public void setNitrogeno(float nitrogeno){
        this.nitrogeno = nitrogeno;
    }
   
    public void setOxigeno(float oxigeno){
        this.oxigeno = oxigeno;
    }
   
    public void setCo2(float co2){
        this.co2 = co2;
    }
   
    public void setVaporAgua(float vaporAgua){
        this.vaporAgua = vaporAgua;
    }
   
    public float getNitrogeno(){return nitrogeno;}
    public float getOxigeno(){return oxigeno;}
    public float getCo2(){return co2;}
    public float getVaporAgua(){return vaporAgua;}
   
    public void mostrarInfoProductoCongeladoPorAire(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tiene una composición de aire como sigue: ");
        System.out.println("Nitrógeno: "+getNitrogeno()+"%");
        System.out.println("Oxígeno: "+getOxigeno()+"%");
        System.out.println("Dióxido de carbono: "+getCo2()+"%");
        System.out.println("Vapor de agua: "+getVaporAgua()+"%");
    }
}

El código de la clase "ProductoCongeladoPorAgua":

Código: [Seleccionar]
public class ProductoCongeladoPorAgua extends Producto{
    private float salinidadAgua;
   
    public ProductoCongeladoPorAgua(String fechaCaducidad, int numeroLote, float salinidadAgua){
        super(fechaCaducidad, numeroLote);
        this.salinidadAgua = salinidadAgua;
    }
   
    public void setSalinidadAgua(float salinidadAgua){
        this.salinidadAgua = salinidadAgua;
    }
   
    public float getSalinidadAgua(){return salinidadAgua;}
   
    public void mostrarInfoProductoCongeladoPorAgua(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tiene un porcentaje de salinidad: "+getSalinidadAgua()+"gr sal por litro de agua");
    }
}

El código de la clase "ProductoCongeladoPorNitrogeno":

Código: [Seleccionar]
public class ProductoCongeladoPorNitrogeno extends Producto{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public ProductoCongeladoPorNitrogeno(String fechaCaducidad, int numeroLote, String metodoCongelacion, int tiempoExposicion){
        super(fechaCaducidad, numeroLote);
        this.metodoCongelacion = metodoCongelacion;
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public void setMetodoCongelacion(String metodoCongelacion){
        this.metodoCongelacion = metodoCongelacion;
    }
   
    public void setTiempoExposicion(int tiempoExposicion){
        this.tiempoExposicion = tiempoExposicion;
    }
   
    public String getMetodoCongelacion(){return metodoCongelacion;}
    public int getTiempoExposicion(){return tiempoExposicion;}
   
    public void mostrarInfoProductoCongeladoPorNitrogeno(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+" tuvo un método de congelación: "+getMetodoCongelacion()+" y estuvo expuesto al nitrógeno: "+getTiempoExposicion()+"s");
    }
}

El código de la clase main "TestHerencia3":

Código: [Seleccionar]
public class TestHerencia3{
    public static void main(String []Args){
        ProductoFresco productoFresco1 = new ProductoFresco("23-06-2016",1234, "05-01-2016","Argentina");
        ProductoFresco productoFresco2 = new ProductoFresco("22-06-2016",987,"09-10-2016","España");
        ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado("10-10-2016",345,"01-03-2016","Ecuador",5);
        ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado("11-10-2016",346,"02-03-2016","Colombia",5);
        ProductoRefrigerado productoRefrigerado3 = new ProductoRefrigerado("12-10-2016",347,"03-03-2016","Marruecos",5);
        ProductoCongeladoPorAgua productoCongeladoPorAgua1 = new ProductoCongeladoPorAgua("13-06-2016",908,40);
        ProductoCongeladoPorAgua productoCongeladoPorAgua2 = new ProductoCongeladoPorAgua("13-08-2016",988,35);
        ProductoCongeladoPorAire productoCongeladoPorAire1 = new ProductoCongeladoPorAire("11-08-2016",354,20,20,30,30);
        ProductoCongeladoPorAire productoCongeladoPorAire2 = new ProductoCongeladoPorAire("11-11-2016",428,10,20,30,40);
        ProductoCongeladoPorNitrogeno productoCongeladoPorNitrogeno1 = new ProductoCongeladoPorNitrogeno("10-08-2016",846,"Tradicional",200);
        productoFresco1.mostrarInfoProductoFresco();
        productoFresco2.mostrarInfoProductoFresco();
        productoRefrigerado1.mostrarInfoProductoRefrigerado();
        productoRefrigerado2.mostrarInfoProductoRefrigerado();
        productoRefrigerado3.mostrarInfoProductoRefrigerado();
        productoCongeladoPorAgua1.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAgua2.mostrarInfoProductoCongeladoPorAgua();
        productoCongeladoPorAire1.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorAire2.mostrarInfoProductoCongeladoPorAire();
        productoCongeladoPorNitrogeno1.mostrarInfoProductoCongeladoPorNitrogeno();
    }
}

Gracias.

368
Buenas tardes.

Aquí os propongo una posible solución del ejercicio CU0686B del curso Java desde cero.

Citar
EJERCICIO

Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común: fecha de caducidad y número de lote. A su vez, cada tipo de producto lleva alguna información específica. Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria. Los productos congelados deben llevar la temperatura de congelación recomendada. Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado. Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto. Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.

El código de la clase "ProductoFresco":

Código: [Seleccionar]
public class ProductoFresco extends Producto{
    private String fechaEnvase;
    private String paisOrigen;
   
    public ProductoFresco(){
        super();
        fechaEnvase = "Desconocido";
        paisOrigen = "Desconocido";
    }
   
    public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
        super(fechaCaducidad, numeroLote);
        this.fechaEnvase = fechaEnvase;
        this.paisOrigen = paisOrigen;
    }
   
    public void setFechaEnvase(String fechaEnvase){
        this.fechaEnvase = fechaEnvase;
    }
   
    public void setPiasOrigen(String paisOrigen){
        this.paisOrigen = paisOrigen;
    }
   
    public String getFechaEnvase(){return fechaEnvase;}
    public String getPiasOrigen(){return paisOrigen;}
   
    public void mostrarInfoProductoFresco(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+
        " y fecha de caducidad: "+getFechaCaducidad()+" es de país de origen: "+getPiasOrigen());
    }
}

El código de la clase "ProductoRefrigerado":

Código: [Seleccionar]
public class ProductoRefrigerado extends Producto{
    private int codigoOrganismoSupervision;
   
    public ProductoRefrigerado(){
        super();
        codigoOrganismoSupervision = 0;
    }
   
    public ProductoRefrigerado(String fechaCaducidad, int numeroLote, int codigoOrganismoSupervision){
        super(fechaCaducidad, numeroLote);
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
    }
   
    public void setCodigoOrganismoSupervision(int codigoOrganismoSupervision){
        this.codigoOrganismoSupervision = codigoOrganismoSupervision;
    }
   
    public int getCodigoOrganismoSupervision(){return codigoOrganismoSupervision; }
   
    public void mostrarInfoProductoRefrigerado(){
        System.out.println("El producto: "+getNumeroLote()+" y con código de Organismo de Supervisión: "+
        getCodigoOrganismoSupervision()+" tiene fecha de caducidad: "+getFechaCaducidad());
    }
}

El código de la clase "ProductoCongelado":

Código: [Seleccionar]
public class ProductoCongelado extends Producto{
    private float temperaturaCongelacionRecom;
   
    public ProductoCongelado(){
        super();
        temperaturaCongelacionRecom = 0;
    }
   
    public ProductoCongelado(String fechaCaducidad, int numeroLote, float temperaturaCongelacionRecom){
        super(fechaCaducidad, numeroLote);
        this.temperaturaCongelacionRecom = temperaturaCongelacionRecom;
    }
   
    public void setTemperaturaCongelacionRecom(float temperaturaCongelacionRecom){
        this.temperaturaCongelacionRecom = temperaturaCongelacionRecom;
    }
   
    public float getTemperaturaCongelacionRecom(){return temperaturaCongelacionRecom;}
   
    public void mostrarInfoProductoCongelado(){
        System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+
        " tiene una temperatura de congelación recomendada de: "+getTemperaturaCongelacionRecom()+"C");
    }
}

El código de la clase "Producto":

Código: [Seleccionar]
public class Producto{
    private String fechaCaducidad;
    private int numeroLote;
   
    public Producto(){
        fechaCaducidad = "Desconocida";
        numeroLote = 0;
    }
   
    public Producto(String fechaCaducidad, int numeroLote){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
   
    public void setFechaCaducidad(String fechaCaducidad){
        this.fechaCaducidad = fechaCaducidad;
    }
   
    public void setNumeroLote(int numeroLote){
        this.numeroLote = numeroLote;
    }
   
    public String getFechaCaducidad(){return fechaCaducidad;}
    public int getNumeroLote(){return numeroLote;}
}

El código de la clase main "TestHerencia2":

Código: [Seleccionar]
public class TestHerencia2{
    public static void main(String []Args){
        //Crear objetos nuevos con constructores con parámetros
        ProductoFresco productoFresco1 = new ProductoFresco("20-10-2016", 3409, "20-08-2016", "España");
        ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado("30-10-2016", 784, 1200);
        ProductoCongelado productoCongelado1 = new ProductoCongelado("20-11-2016", 7345, -10);
        System.out.println("Productos(objetos) creados con constructores con parámetros:");
        productoFresco1.mostrarInfoProductoFresco();
        productoRefrigerado1.mostrarInfoProductoRefrigerado();
        productoCongelado1.mostrarInfoProductoCongelado();
        //Crear objetos nuevos con constructores sin parámetros
        ProductoFresco productoFresco2 = new ProductoFresco();
        ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado();
        ProductoCongelado productoCongelado2 = new ProductoCongelado();
        System.out.println("Productos(objetos) creados con constructores sin parámetros:");
        productoFresco2.mostrarInfoProductoFresco();
        productoRefrigerado2.mostrarInfoProductoRefrigerado();
        productoCongelado2.mostrarInfoProductoCongelado();
       
    }
}

Gracias.

369
Hola compañeros.

Expongo una posible solución del ejercicio CU00682B del curso Java.

Citar
EJERCICIO

Declara una clase que represente el tipo enumerado que define tipos de piedra con los valores CALIZA, MARMOL, PIZARRA, CUARZITA. Si sus pesos específicos son de 1200, 1423.55, 1325 y 1466.22, crea un programa que muestre el peso de los palets de cada uno de los tipos de piedra.

El código de la clase "TipoDePiedra":

Código: [Seleccionar]
public enum TipoDePiedra{
    CALIZA(1200),
    MARMOL(1423.55),
    PIZARRA(1325),
    CUARZITA(1466.22);
   
    private final double pesoEspecifico;
   
    TipoDePiedra(double pesoEspecifico){
        this.pesoEspecifico = pesoEspecifico;
    }
   
    public double getPesoEspecifico(){return pesoEspecifico;}
}

El código de la clase "TestTipoDePiedra":

Código: [Seleccionar]
public class TestTipoDePiedra{
    public static void main(String []Args){
        TipoDePiedra piedraElegida = TipoDePiedra.CALIZA;
        System.out.println("Peso de los palets de cada piedra:");
        for(TipoDePiedra tmp : piedraElegida.values()){
            System.out.println("El palet de: "+tmp.toString()+" pesa: "+(2.27f*(float)tmp.getPesoEspecifico())+"kg");
        }
    }
}

Gracias

370
Buenas noches.

Dejo aquí una solución del ejercicio CU00681B del curso Java desde cero.

Citar
EJERCICIO

Crea una clase Vehiculo donde definas un tipo enumerado MarcaDeVehiculo cuyos valores posibles serán FORD, TOYOTA, SUZUKI, RENAULT, SEAT. Establece como atributos de la clase matricula (tipo String) y marca (tipo MarcaDeVehiculo) y crea los métodos getters (para obtener) y setters (para establecer el valor) de los atributos. Escribe un pequeño programa de prueba donde verifiques que los métodos funcionan correctamente.

El código de la clase "Vehiculo":

Código: [Seleccionar]
/**
 * Clase para crear objetos "Vehiculo" de tipo "enum" con atributos "matricula" y "marca".
 * @author: Dimitar S. Stefanov
 * version: 11/03/2016/A
 *  @see <a href="http://aprenderaprogramar.com">aprenderaprogramar.com - Didáctica en programación</a>
 */
public class Vehiculo{
    enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENUALT, SEAT};
   
    private String matricula;
    private MarcaDeVehiculo marca;
   
    /**
     * Constructor del objeto que define los atributos.
     */
    public Vehiculo(){
        matricula = "";
        marca = null;
    }
   
    /**
     * Mediante un parámetro se establece la matrícula del vehículo
     * @param matricula El valor del parámetro que se introduzca será el valor de la matrícula. 
     */
    public void setMatricula(String matricula){
        this.matricula = matricula;
    }
   
    /**
     * Mediante un parámetro se establece la matrícula del vehículo
     * @param marca El valor del parámetro que se introduzca será el valor de la marca. 
     */
    public void setMarca(MarcaDeVehiculo marca){
        this.marca = marca;
    }
   
    /**
     * Método para obtener la matrícula del Objeto
     * @param Devuelve el valor de la matrícula.
     */
    public String getMatricula(){return matricula;}
   
    /**
     * Método para obtener la marca del Objeto.
     * @param Devuelve el valor de la marca.
     */
    public MarcaDeVehiculo getMarca(){return marca;}
}

El código de la clase "Test":

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

public class Test{
    public static void main(String []Args){
        String entradaTeclado;
        Vehiculo vehiculo = new Vehiculo();
        Scanner sc = new Scanner(System.in);
        System.out.println("\f");
        System.out.print("Entra matrícula: ");
        entradaTeclado = sc.nextLine();
        vehiculo.setMatricula(entradaTeclado);
        System.out.println("La matrícula del vehícuo es: "+vehiculo.getMatricula());
        System.out.println("Entra alguna de las siguentes marcas de vechículos: Ford, Toyota, Suzuki, Renault, Seat ");
        entradaTeclado = sc.nextLine();
        if(entradaTeclado.equalsIgnoreCase("Ford")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.FORD);
       }else if(entradaTeclado.equalsIgnoreCase("Toyota")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.TOYOTA);
        }else if(entradaTeclado.equalsIgnoreCase("Suzuki")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Renault")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Seat")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SEAT);
        }
        else{
            System.out.println("No has elegido ninguna de las marcas enumaradas.");
        }
       
        if(entradaTeclado.equalsIgnoreCase("Ford") || entradaTeclado.equalsIgnoreCase("Toyota") || entradaTeclado.equalsIgnoreCase("Suzuki") || entradaTeclado.equalsIgnoreCase("Renault") || entradaTeclado.equalsIgnoreCase("Seat")){
        System.out.println("La marca es: "+vehiculo.getMarca());
       }else{
        System.out.println("Inténtalo de nuevo :)");
        }
    }
}

Gracias

371
Buenas tardes.

Propongo una solución del ejercicio CU00680B del curso Java desde cero.

Citar
EJERCICIO

Crea una clase denominada miniCalculadoraEjemplo que tenga dos métodos (basados en el uso de métodos de la clase Math): un método valorAbsoluto que recibe un número de tipo double y devuelva su valor absoluto, y otro método raizCuadrada que reciba un número de tipo double y devuelva su raíz cuadrada. Documenta esta clase conforme a los estándares JavaDoc y comprueba cómo se visualiza la documentación.

El código de la clase "MiniCalculadoraEjemplo":

Código: [Seleccionar]
import java.lang.Math;

/**
 * Esta clase no define objetos, simplemente contiene dos métodos que devuelven el valor absoluto y la raíz cuadrada partiendo del parámetro que se ha ingresado.
 * @author: Dimitar S. Stefanov
 * @version: 11/03/2016/A
 * @see <a href="http://aprenderaprogramar.com">aprenderaprogramar.com - Didáctica en programación</a>
 */
public class miniCalculadoraEjemplo{
   
    /**
     * Esta clase carece de constructor
     */
    public miniCalculadoraEjemplo(){
        //Nada que construir
    }
   
     /**
      * Método que devuelve el valor absoluto a partir del parámetro ingresado.
      * @param El número al que se le devolverá su valor absoluto.
      * @return El valor absoluto del número pasado como parámetro.
      */
     public static double valorAbsoluto(double valor_numero){
         return Math.abs(valor_numero);
     }
     
     /**
      * Método que calcula la raíz cuadrada de un número de tipo decimal doble (double) que se pasa como parámetro.
      * @param Número, de tipo double (decimal doble), al que se le calculará su raíz cuadrada
      * @return La raíz cuadrada del parámetro (que debe ser un número tipo double)
      */
     public static double raizCuadrada(double valor_numero){
         return Math.sqrt(valor_numero);
     }
}

Gracias.

372
Por qué este código sí funciona:

Código: [Seleccionar]
import java.util.LinkedList;
import java.util.Arrays;
import java.util.List;

public class TransformacionEnArrayList{
    public static void main(String []Args){
        Boolean [] miListaDeBooleans = {true,true,false,false,true,false};
        List<Boolean> miListaLinkedList = new LinkedList<Boolean>();
        miListaLinkedList = Arrays.asList(miListaDeBooleans);
    }
}

y este, en cambio, no:

Código: [Seleccionar]
import java.util.LinkedList;
import java.util.Arrays;
import java.util.List;

public class TransformacionEnArrayList{
    public static void main(String []Args){
        Boolean [] miListaDeBooleans = {true,true,false,false,true,false};
        LinkedList<Boolean> miListaLinkedList = new LinkedList<Boolean>();
        miListaLinkedList = Arrays.asList(miListaDeBooleans);
    }
}

No se supone que la clase "LinkedList" implementa la intefaz "List". ¿Por qué tenemos que especificar que el objeto "miListaLinkedList" tiene que ser de la interfaz "List"? ¿No todos los objetos "LinkedList" implementan la interfaz "List"? Qué lío!, jejejeje

Gracias

PD: El error que da es:

Citar
incompatible types: no instance(s) of type variable(s) T exist so that java.util.List<T> conforms to java.util.LinkedList<java.lang.Boolean>

373
Buenas tardes.

Aquí dejo la solución del ejercicio CU00679B del curso Java desde cero.

Citar
EJERCICIO

Declara un array que contenga seis booleanos que sean true, true, false, false, true, false. A continuación, crea una lista de tipo LinkedList a partir de dicho array usando la clase Arrays del api de Java.

El código:

Código: [Seleccionar]
import java.util.LinkedList;
import java.util.Arrays;
import java.util.List;

public class TransformacionEnArrayList{
    public static void main(String []Args){
        Boolean [] miListaDeBooleans = {true,true,false,false,true,false};
        List<Boolean> miListaLinkedList = new LinkedList<Boolean>();
        miListaLinkedList = Arrays.asList(miListaDeBooleans);
    }
}

Gracias.

374
Buenas noches, César.

Gracias por corregirme otro ejercicio más.

Tomo nota sobre la observación y decirte que pensándolo tienes toda la razón del mundo. Si quisieramos utilizar este método en otro programa, tendríamos que modificarlo. Y si ya de inicio se hubiera hecho sólo con el cometido de generar un número aleatorio ya tendríamos la faena hecha.

Gracias.

375
Buenas noches.

Una posible solución del ejercicio CU00678B del curso Java desde cero.

Citar
EJERCICIO

La interface Set de Java es implementada por las clases HashSet y TreeSet. Busca información sobre estas clases en la documentación del api Java. Crea un programa Java que haga lo siguiente:

a) Declarar un ArrayList de objetos de tipo Set.

b) Crear un objeto de tipo HashSet para contener Strings y haz que contenga las cadenas “sol”, “luna”, “saturno”.

c) Crear un objeto TreeSet para contener Integers y haz que contenga los números 2, 8, 5.

d) Añade los objetos HashSet y TreeSet como elementos del ArrayList.

e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno de los elementos y mostrar este contenido por pantalla. Por pantalla deberás obtener “sol”, “luna”, “saturno”, 8, 5, 2.

El código:

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator; //Todos los "import" los podíamos haber hecho con: import java.util.*

public class PolimorfismoJava{
    public static void main(String [] Args){
        //Definimos y creamos objeto "misListas" de clase "ArrayList" que implementa la interfaz "Set".
        ArrayList<Set> misListas;
        misListas = new ArrayList<Set>();
       
        //Definimos y creamos objeto "miListaHashSet" (de clase "HashSet") que tendrá tipos "String". La clase "HashSet" implementa la interfaz "Set".
        HashSet<String> miListaHashSet;
        miListaHashSet = new HashSet<String>();
       
        //Definimos y creamos (en una línea) objeto "miListaTreeSet" (de clase "TreeSet") que tendrá tipos "Integer". La clase "TreeSet" implementa la interfaz "Set".
        TreeSet<Integer> miListaTreeSet = new TreeSet<Integer>();
       
        //Añadimos elementos a la array "miListaHashSet".
        miListaHashSet.add("sol");
        miListaHashSet.add("luna");
        miListaHashSet.add("saturno");
       
        //Añadimos elementos a la array "miListaTreeSet".
        miListaTreeSet.add(8);
        miListaTreeSet.add(5);
        miListaTreeSet.add(2);
       
        //Añadimos los objetos "miListaHashSet" y "miListaTreeSet" a la array "misListas".
        misListas.add(miListaHashSet);
        misListas.add(miListaTreeSet);
       
        //Definimos objetos "Iterator" de tipo "Set", "String" y "Integer" respectivamente.
        Iterator<Set> it;
        Iterator<String> itHashSet;
        Iterator<Integer> itTreeSet;
       
        //Invacamos el método ".iterator()" sobre los objetos "misListas", "miListaHashSet" y "miListaTreeSet" para crear copias de su contenido (colección).
        it = misListas.iterator();
        itHashSet = miListaHashSet.iterator();
        itTreeSet = miListaTreeSet.iterator();
       
        //El bucle "while" exterior recorre los elementos del objeto "misListas", mientras los bucles "while" interiores recorren los objetos "miListaHashSet" y "miListaTreeSet" respectivamente."
        while(it.hasNext()){
            if(it.next() instanceof HashSet){
                System.out.println("Colección en HashSet:");
                while(itHashSet.hasNext()){
                    System.out.print(itHashSet.next()+"; ");
                }
                System.out.println();
            }else{
                System.out.println("Colección en TreeSet");
                while(itTreeSet.hasNext()){
                    System.out.print(itTreeSet.next()+"; ");
                }
            }
        }
       
       
    }
}

Gracias.

376
Citar
EJERCICIO

Crea un programa Java donde declares un array de enteros tipo int miArray1 cuyo contenido inicial sea {2, -4, 3, -7}. Muestra su contenido por pantalla. Copia el contenido de este array a un ArrayList denominado lista1 y muestra su contenido por pantalla

Código de la clase "EjercicioArrays":

Código: [Seleccionar]
import java.util.ArrayList;

public class EjercicioArrays{
    public static void main(){
        int [] miArray1 = {2, -4, 3, -7};
        int i=0;
       
        for(int array: miArray1){ //bucle extendido
            System.out.print("miArray1["+i+"]="+array+"; ");
            i++;
        }
       
       
        ArrayList<Integer> lista1 = new ArrayList<Integer> (); //Creamos el objeto "lista1" de la clase "ArrayList" de tipo "Integer"
        for(int j=0;j<miArray1.length;j++){
            lista1.add(miArray1[j]); //Añadimos a cada array de ArrayList los arrays de "miArray1" que son de tipo primitivo "int"
        }
        System.out.println();
       
        //Imprimimos cada array de "ArrayList" que son de tipo objeto "Integer" mediante el método "lista1.get(posicionDelArray)"
        for(int j=0;j<lista1.size();j++){
            System.out.print("lista1["+j+"]="+lista1.get(j)+"; ");
        }
       
       
    }
}

Citar
¿Qué tipo de datos almacena el array?

El tipo de datos que almacena array son "int". Es un tipo primitivo.

Citar
¿Qué tipo de datos almacena el ArrayList?

ArrayList almacena datos de tipo "Integer". Son datos de tipo objetos.

Gracias.

377
Buenas tardes, César.

Tienes razón, es un código muy largo y complejo para un cometido sencillo. Yo también pensé lo mismo después de acabar el ejercicio.

A estas alturas debería centrarme en la esencia de cada entrega del curso y no intentar encontrar soluciones a cosas que aún no hemos estudiado. Supongo que cada cosa a su tiempo.

Gracias de nuevo, y sigo adelante:)

Saludos.

PD: Estoy estudiando los enlaces que me has adjuntado.

378
Buenas noches.

A continuación dejo una posible solución del ejercicio CU00673B del curso Java desde cero.

Citar
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). Busca información sobre las fórmulas necesarias para crear estos métodos en internet si no las recuerdas. 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.

El código de la clase "EntradaDeTeclado":

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

public class EntradaDeTeclado{
    private double entradaTeclado;
   
   
    public EntradaDeTeclado(){
        entradaTeclado = 0;
       
    }
   
    //Creamos un objeto "Scanner" de tipo "double" con el método ".nextDouble"
    public void pedirEntrada(){
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextDouble();
    }
   
    public double getEntrada(){
        return entradaTeclado;}

}

El código de la clase "Circulo":

Código: [Seleccionar]
public class Circulo{
    private static final double PI = 3.1416;
    private double radio;
   
    public Circulo(){
        radio = 0;
    }
   
    public void setRadio(double valor_radio){
        radio = valor_radio;
    }
   
    public double getPI(){return PI;}
   
    public double getRadio(){return radio;}
   
    public double getAreaCirculo(){
        double areaCirculo;
        areaCirculo = PI * (radio*radio);
        return areaCirculo;
    }
   
    public double getLongitud(){
        double longitud;
        longitud = 2*PI*radio;
        return longitud;
    }
   
   
}

El código de la clase "AreaYLongitudDelCirculo":

Código: [Seleccionar]
public class AreaYLongitudDelCirculo{
   
    public static void main(){
        Circulo circulo = new Circulo();
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        /*Si entramos el decimal con "." nos da error:
         "java.util.InputMismatchException:
          null(in java.util.Scanner)" */
        System.out.print("Entra (si es número decimal con \",\" y no con \".\") el radio: ");
        entrada.pedirEntrada();
       
        //Entramos el valor del radio mediante el método "entrada.getEntrada()"
        circulo.setRadio(entrada.getEntrada());
       
        System.out.println("El area del círculo es: "+circulo.getAreaCirculo());
       
        System.out.print("La longitud del círculo es: "+circulo.getLongitud());
       
   
   }
}

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

No es posible porque la el número "Pi" lo hemos declarado como una constante y no como una variable mediante la palabra clave "final".

Gracias.

379
Gracias por la respuesta, Kabuto!!!

La verdad que tu ejemplo sobre como es la filosofía de Java me ha encantado. Concisa, breve y muy explicativa!!! En dos palabras, has podido explicar(me) que cometido tiene el lenguaje Java y como funciona.

El César Krall, en una de sus respuestas también me explicó el concepto de objetos y como funcionan sus referencias (que son unas variables que apuntan a un objeto, que no es el objeto en sí). Le agradezco a los dos los esfuerzos de explicarme la esencia de Java.

Tu ejemplo es muy bueno, porque mediante ejemplos entendibles de la vida real has podido aplicarlos a al funcionamiento de un lenguaje de programación (lo mismo que César Krall) en respondiéndome a una, de tantas, duda que tenía.

Sobre lo de "Java ejecutable", pues sí. Tengo muchas ganas de ver lo creado de mi (por ahora muy poquito) fuera de la máquina virtual de Java. Pero es lo que tú dices también, por ahora debería de tener paciencia y entender lo básico y luego ya "creceré".

Sí, pienso hacer también el curso C++. Incluso, quizás empecé por la cabeza yendo a los pies y no al revés (como debería ser :)).

Sigo adelante y con vuestra ayuda espero conseguirlo :)

Saludos.

380
Buenas noches.

Aquí dejo una posible solución del ejercicio CU00672B del curso Java desde cero.

Citar
EJERCICIO

Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el ordenador.

Código "EntradaDeTeclado":

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

public class EntradaDeTeclado{
    private String entradaTeclado;
    private Integer tmpInteger;
   
    public EntradaDeTeclado(){
        entradaTeclado = "";
        tmpInteger = 0;
    }
   

    //Creamos un objeto "Scanner" y convertimos "entradaTeclado" en tipo objeto "Integer"
    public void pedirEntrada(){
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextLine();
        tmpInteger = tmpInteger.valueOf(entradaTeclado);
    }
   
    public Integer getEntrada(){
       
        return tmpInteger;}

}

El código de la clase "NumeroAleatorio":

Código: [Seleccionar]
import java.util.Random;

public class NumeroAleatorio{
    private Random numeroAleatorio;
    private Integer numero;
   
    public void NumeroAletorio(){
       Integer numero = 0;
    }
   
    public void generarNumeroAletorio(){
        numeroAleatorio = new Random();
        numero = numero.valueOf (numeroAleatorio.nextInt(101));
        System.out.println("Se ha creado un número aleatorio entre 1 y 100, intente adivinarlo :)");
    }
   
    public Integer recuperarNumeroAleatorio(){return numero;}
}

Código de la clase "ElJuego":

Código: [Seleccionar]
public class ElJuego{
    public static void main(){
        NumeroAleatorio numeroAleatorio = new NumeroAleatorio();
        numeroAleatorio.generarNumeroAletorio();
        EntradaDeTeclado entradaTeclado = new EntradaDeTeclado();
        //Integer tmpInteger = 0;
        //tmpInteger = tmpInteger.valueOf (entradaTeclado.getEntrada() );
       
        //Mientras "entradaTeclado.getEntrada()" no sea igual al número que ha elegido el pc al azar, que se repita este bucle de tipo "while".
        while(entradaTeclado.getEntrada().equals(numeroAleatorio.recuperarNumeroAleatorio())==false){
        System.out.print("Entre un número: ");
        entradaTeclado.pedirEntrada();
       
       
        //Cada vez que el compilador pase por aquí que valore si la "entradaTeclado.getEntrada()" cumple estas condicionales.
        if(entradaTeclado.getEntrada().equals(numeroAleatorio.recuperarNumeroAleatorio())){
            System.out.println("Bravo! Has acertado!");
        }else if(entradaTeclado.getEntrada()>numeroAleatorio.recuperarNumeroAleatorio()){
            System.out.println("No has acertado: el número es menor. Prueba otra vez");
        }else if(entradaTeclado.getEntrada()<numeroAleatorio.recuperarNumeroAleatorio()){
            System.out.println("No has acertado: el número es mayor");
        }
    }
    }
}

Gracias.

Páginas: 1 ... 14 15 16 17 18 [19] 20 21 22 23 24 ... 30

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