Autor Tema: Ejercicio herencia Java crear un esquema de relaciones entre clases CU00684B  (Leído 3214 veces)

el_calderas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 43
    • Ver Perfil
Hola, adjunto el codigo de las siete clases que creo que formarian el esquema de las relaciones de herencia y uso.

Código: [Seleccionar]
public class Producto
{
    protected String fechaCaducidad;
    protected int numeroLote;
   
    public Producto(){
        fechaCaducidad="";
        numeroLote=-1;
    }
   
    //metodos setters y getters genericos
}

Código: [Seleccionar]
public class Fresco extends Producto
{
    //información especifica
}

Código: [Seleccionar]
public class Refrigerado extends Producto
{
   //información especifica
}

Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
}

Código: [Seleccionar]
public class CongeladoNitrogeno extends Congelado
{
    private double temperaturaCongelación;
   
    //constructor
   
    //metodos
   
}

Código: [Seleccionar]
public class CongeladoAire extends Congelado
{
     private double temperaturaCongelación;
   
    //constructor
   
    //metodos
}

Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{
     private double temperaturaCongelación;
   
    //constructor
   
    //metodos
}

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

public class Envio
{
   private String listaEnvios;   //nombre de la lista de envios
   ArrayList<Producto> miEnvio=new ArrayList<Producto>(); //array de envios
   
}

Espero  que sea esto lo que se pedia en este ejercicio...
Un saludo.
« Última modificación: 08 de Mayo 2015, 17:27 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:CU00684B ¿Que es la herencia en POO?
« Respuesta #1 en: 08 de Mayo 2015, 14:48 »
Hola calderas.

Realmente lo veo muy bien. Has podido crear las 7 clases solicitadas en el ejercicio haciendo uso de las relaciones de herencia mediante la palabra clave "extends", así que muy bien por ello!. Podrías adjuntar un esquema de las relaciones de herencias, quedaría muy bien.

También ha habido una cosilla que paso a comentarte y que habría que corregir para cumplir con la consigna del ejercicio propuesto, y realmente gozar de las bondades de la herencia.

Fíjate que el enunciado del ejercicio nos dice:
Citar
...por ejemplo los productos congelados deben llevar la temperatura de congelación recomendada.

entonces, como todos los productos congelados tendrán un campo 'temperaturaCongelación', en vez de definirlo como campo de instancia de cada una de las clases hijas (CongeladoNitrogeno, CongeladoAire, y CongeladoAgua), lo definimos como campo de instancia en la clase padre Congelado. De esta manera -y gracias a la herencia- cada una de las clases hija hereda el campo 'temperaturaCongelación'. Estaremos de esta forma evitando crear un mismo campo en cada una de las clases hija (no duplicaremos código), es una de las bondades de la herencia.

¿Y cómo podría luego acceder en una clase hija (por ejemplo CongeladoAgua) a su campo 'temperaturaCongelación'? pues a través del método públicos setTemperaturaCongelacion y el método público getTemperaturaCongelacion que se debería implementar en la clase Congelado.

Incorporando esta declaración de campo, la clase Congelado debería quedar:

Código: [Seleccionar]
public class Congelado
{
    private double temperaturaCongelación;
   
    //constructor
   
    //metodos set y get

    //otros métodos
   
}

Y por lo tanto las clases hijas, por ejemplo la clase CongeladoAgua:

Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{

    //constructor
   
    //metodos
}

Y como último, hacerte una sugerencia en cuanto a los nombres que elegimos en la declaración de los campos. En la clase Envio defines dos campos, uno que corresponde al nombre de la lista de envío (tipo String), y otro campo que corresponde a una lista ArrayList donde se cargarán los productos.
Al campo tipo String sería mejor renombrarlo por 'nombreListaEnvio', que con solo leerlo ya nos sugiere que es el nombre de la lista. El nombre que elegiste 'listaEnvios" leído sin ser uno el que realizó el código podría sugerir que hace referencia al ArrayList, y generar confusión.
Es bueno ir acostumbrándonos a nombrar los campos de tal manera que nos dé una información certera de qué se trata.

el_calderas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 43
    • Ver Perfil
Gracias por la corrección. La verdad es que no se como se me paso, ya que este ejercicio va sobre la herencia en particular y ese es el ejemplo claro de herencia....

Con respecto a los nombres tienes mucha razón y me suele pasar. Creo que es porque no me gusta poner nombres largos y a la hora de nombrar varios campos sobre algo en particular, como se dice, yo me entiendo, pero claro, no es correcto ya que cualquier otro no lo va a tener tan claro. Lo corregire para futuras ocasiones.

Un saludo y gracias.

 

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