Hola Juan, sobre tu 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.
--> Las has creado correctamente
Todos los productos llevan esta información común: fecha de caducidad y número de lote.
-- > Lo has incluido en la superclase Producto, correcto
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.
-- > Correcto
Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria.
-- > Correcto
Los productos congelados deben llevar la temperatura de congelación recomendada.
-- > Correcto
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.
-- > Correcto
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.
-- > TE FALTA INCLUIR LOS MÉTODOS QUE PERMITAN 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.
-- > tiene varias cosas a mejorar, debido a fallos en el código de las clases
1) La clase Producto debe tener un constructor que reciba los parámetros necesarios para un producto Tú has escrito este constructor:
public Producto(String valorNombre) {
fechaDeCaducidad = "";
numeroDeLote = "";
nombre = valorNombre;
}
Pero debe existir un constructor que reciba tanto nombre como fecha de caducidad como numero de lote
En las subclases ocurre lo mismo:
public ProductoFresco(String nombre){
super(nombre);
fechaDeEnvasado = "";
paisDeOrigen = "";
}
Debe existir un constructor que reciba todos los parámetros con que trabaja la clase, es decir, 5 parámetros, los tres de la superclase y los dos propios.
En las otras subclases lo mismo
2) En vez de hacer esto para inicializar
vegetal.setFechaDeCaducidad("25-03-2015");
vegetal.setFechaDeEnvasado("25-02-2015");
vegetal.setNumeroDeLote("001");
vegetal.setPaisDeOrigen("Perú");
deberías usar el constructor y hacerlo en una sola línea
3) En vez de usar esto para mostrar la información de un producto
System.out.println("El producto "+vegetal.getNombre()+
" tiene como fecha de caducidad el "+vegetal.getFechaDeCaducidad()+
", y fecha de envasadado el "+vegetal.getFechaDeEnvasado()+
" con numero de lote "+vegetal.getNumeroDeLote()+
" y tiene como pais de origen "+vegetal.getPaisDeOrigen()+".");
Deberías llamar a un método del objeto que muestre la información del producto.
Te recomiendo revisar el código propuesto por compañeros en el foro y replantear el ejercicio para mejorarlo
Saludos!