Hola a todos !!! Paso a dejar el código para el ejercicio propuesto CU00686B del tutorial de programación Java como si estuviera en primero. Desde ya muchas gracias. Saludos
Luis
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.
Clase principal - metodo main
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
public class TestHerencia2 {
public static void main (String [ ] args) {
EntradaDeTeclado entrada = new EntradaDeTeclado();
System.out.println("Por favor introduzca el nombre del producto:");
entrada.pedirEntrada();
String nomProd = entrada.getEntrada();
System.out.println("Ingrese el nro de lote :");
entrada.pedirEntrada();
int lote = Integer.parseInt(entrada.getEntrada());
System.out.println("Ingrese el dia de caducidad :");
entrada.pedirEntrada();
int diaVenc = Integer.parseInt(entrada.getEntrada());
System.out.println("Ingrese el mes de caducidad :");
entrada.pedirEntrada();
int mesVenc = Integer.parseInt(entrada.getEntrada());
System.out.println("Ingrese el año de caducidad :");
entrada.pedirEntrada();
int anioVenc = Integer.parseInt(entrada.getEntrada());
System.out.println("Por favor introduzca el tipo de producto (1=Fresco 2=Refrigerado 3=Congelado):");
int opcion=0;
entrada.pedirEntrada();
opcion = Integer.parseInt(entrada.getEntrada());
switch (opcion) {
case 1: // producto fresco
System.out.println("Por favor introduzca el pais de origen:");
entrada.pedirEntrada();
String paisOrigen = entrada.getEntrada();
System.out.println("Ingrese el dia de envasado :");
entrada.pedirEntrada();
int diaEnv = Integer.parseInt(entrada.getEntrada());
System.out.println("Ingrese el mes de envasado :");
entrada.pedirEntrada();
int mesEnv = Integer.parseInt(entrada.getEntrada());
System.out.println("Ingrese el año de envasado :");
entrada.pedirEntrada();
int anioEnv = Integer.parseInt(entrada.getEntrada());
ProductosFrescos prodFres = new ProductosFrescos(nomProd, lote, diaVenc, mesVenc, anioVenc, paisOrigen, diaEnv, mesEnv, anioEnv);
System.out.println("El producto fresco es :"+prodFres.getNombreProducto());
System.out.println("El nro de lote es :"+prodFres.getNroLote());
System.out.println("La fecha de caducidad es :"+prodFres.getFechaCaducidad());
System.out.println("El pais de origen es :"+prodFres.getPaisOrigen());
System.out.println("la fecha de envasado es :"+prodFres.getFechaEnvasado());
break;
case 2: // producto refrigerado
System.out.println("Por favor introduzca el organismo de control");
entrada.pedirEntrada();
String xODC = entrada.getEntrada();
ProductosRefrigerados prodRefr = new ProductosRefrigerados(nomProd, lote, diaVenc, mesVenc, anioVenc, xODC);
System.out.println("El producto refrigerado es :"+prodRefr.getNombreProducto());
System.out.println("El nro de lote es :"+prodRefr.getNroLote());
System.out.println("La fecha de caducidad es :"+prodRefr.getFechaCaducidad());
System.out.println("El organismo de control es :"+prodRefr.getOrganismoControl());
break;
case 3: // producto congelado
System.out.println("Ingrese temperatura de congelado :");
entrada.pedirEntrada();
double xTempCongelado = Double.parseDouble(entrada.getEntrada());
ProductosCongelados prodCong = new ProductosCongelados(nomProd, lote, diaVenc, mesVenc, anioVenc, xTempCongelado);
System.out.println("El producto congelado es :"+prodCong.getNombreProducto());
System.out.println("El nro de lote es :"+prodCong.getNroLote());
System.out.println("La fecha de caducidad es :"+prodCong.getFechaCaducidad());
System.out.println("El temperatura de congelado es :"+prodCong.getTemperaturaCongelado());
break;
default:break;
}
}
} //Cierre de la clase
Clase Productos donde se heredan los distintos tipos (frescos, refrigerados y congelados)
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Write a description of class Productos here.
*
* @author Luis
* @version CU00686B
*/
public class Productos
{
// instance variables - replace the example below with your own
private String nombreProducto;
private int nroLote;
Calendar fechaCaducidad = new GregorianCalendar();
/**
* Constructor for objects of class Productos
*/
public Productos()
{
// initialise instance variables
nombreProducto = "";
nroLote = 0;
fechaCaducidad.getInstance();
}
public Productos(String nomProd, int lote, int dia, int mes, int anio){
setNombreProducto(nomProd);
setNroLote(lote);
setFechaCaducidad(dia,mes,anio);
}
// metodos setters
/**
* @param nombreProducto Descripcion del producto
*/
public void setNombreProducto(String xNombre){
nombreProducto = xNombre;
}
/**
* @param nroLote Numero de lote del producto
*/
public void setNroLote(int xLote){
nroLote = xLote;
}
public void setFechaCaducidad(int d, int m, int a){
fechaCaducidad.set(Calendar.DAY_OF_MONTH, d);
fechaCaducidad.set(Calendar.MONTH, m-1);
fechaCaducidad.set(Calendar.YEAR, a);
}
// metodos getters
/**
* @return Nombre del producto (String)
*/
public String getNombreProducto(){
return nombreProducto;
}
/**
* @return Número de lote (int)
*/
public int getNroLote(){
return nroLote;
}
/**
* @return Fecha de vencimiento del producto
*/
public String getFechaCaducidad(){
int dia = fechaCaducidad.get(Calendar.DAY_OF_MONTH);
int mes = fechaCaducidad.get(Calendar.MONTH)+1;
int anio = fechaCaducidad.get(Calendar.YEAR);
return dia+"/"+mes+"/"+anio;
}
}
Clase para productos frescos
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Write a description of class ProductosFrescos here.
*
* @author Luis
* @version CU00686B
*/
public class ProductosFrescos extends Productos {
Calendar fechaEnvasado = new GregorianCalendar();
String paisOrigen = "";
public ProductosFrescos(String nomProd, int lote, int diaVenc, int mesVenc, int anioVenc, String paisOrigen, int diaEnv, int mesEnv, int anioEnv) {
super(nomProd, lote, diaVenc, mesVenc, anioVenc);
fechaEnvasado.getInstance();
this.paisOrigen = paisOrigen;
setFechaEnvasado(diaEnv,mesEnv,anioEnv);
}
/**
* @param paisDeOrigen Nombre de pais donde se produce
*/
public void setPaisOrigen(String xPais){
paisOrigen = xPais;
}
public void setFechaEnvasado(int d, int m, int a){
fechaEnvasado.set(Calendar.DAY_OF_MONTH, d);
fechaEnvasado.set(Calendar.MONTH, m-1);
fechaEnvasado.set(Calendar.YEAR, a);
}
/**
* @return Nombre del pais de origen (String)
*/
public String getPaisOrigen(){
return paisOrigen;
}
public String getFechaEnvasado(){
int dia = fechaEnvasado.get(Calendar.DAY_OF_MONTH);
int mes = fechaEnvasado.get(Calendar.MONTH)+1;
int anio = fechaEnvasado.get(Calendar.YEAR);
return dia+"/"+mes+"/"+anio;
}
}
Clase para productos refrigerados
/**
* Write a description of class ProductosRefrigerados here.
*
* @author Luis
* @version CU00686B
*/
public class ProductosRefrigerados extends Productos
{
private String organismoControl;
public ProductosRefrigerados(String nomPro, int lote, int diaVenc, int mesVenc, int anioVenc, String organismoControl) {
// initialise instance variables
super(nomPro, lote, diaVenc, mesVenc, anioVenc);
this.organismoControl=organismoControl;
}
/**
* @param organismoControl El Organismo que controla el producto
*/
public void setOrganismoControl(String organismoControl){
this.organismoControl = organismoControl;
}
/**
* @return El Organismo que controla el producto (String)
*/
public String getOrganismoControl() {
return organismoControl;
}
}
Clase para productos congelados
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Write a description of class ProductosCongelados here.
*
* @author Luis
* @version CU00686B
*/
public class ProductosCongelados extends Productos {
private double temperaturaCongelado;
public ProductosCongelados(String nomProd, int lote, int diaVenc, int mesVenc, int anioVenc, double temperaturaCongelado)
{
super(nomProd, lote, diaVenc, mesVenc, anioVenc);
this.temperaturaCongelado=temperaturaCongelado;
}
/**
* @param temperaturaCongelado Temperatura del producto congelado
*/
public void setTemperaturaCongelado(double temperaturaCongelado){
this.temperaturaCongelado = temperaturaCongelado;
}
/**
* @return la temperatura de congelado(double)
*/
public double getTemperaturaCongelado() {
return temperaturaCongelado;
}
}
Clase para ingreso de datos por consola ya usada anteriormente
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
private String entradaTeclado; //Variable de instancia (campo) de la clase
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
// pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
} //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
} //Cierre del método pedirEntrada
public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
public String getPrimeraPalabra () {
for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
public int getLongitud () { //Método de la clase
return entradaTeclado.length();
} //Cierre del método getLongitud
} //Cierre de la clase