Hola RaGa ahora el diseño del esquema lo veo completamente correcto. Sin embargo, dentro del código hay cosas que no parecen correctas.
Em la clase Producto tienes estos atributos:
private String nombre;
private String fechaDeCaducidad;
private int nroLote;
private String paisDeOrigen;
private String fechaDeEnvasado;
Sin embargo esta clase sólo debería manejar los atributos comunes a todos los productos, que son fecha de caducidad y número de lote.
La información específica debe ir en las clases correspondientes, por ejemplo en la clase ProductoFresco deberías tener los atributos específicos de ProductoFresco, en la clase ProductoRefrigerado los atributos específicos de ProductoRefrigerado, etc.
También se puede hacer lo que propone el enunciado
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.
Te recomiendo ver con calma cómo está resuelto por otro compañero en
https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0 viéndolo creo que puedes mejorar tu ejercicio
Saludos