Código C++: Clases cFecha y cProducto con Lectura de Fechas y Control de Inventario

Informática y Telecomunicaciones3,9 KB

Método leerFecha() en C++

A continuación se muestra el método leerFecha(), encargado de solicitar al usuario una fecha y validar cada uno de sus componentes.

Descripción del método

El método utiliza ciclos do-while para validar la entrada de datos:

  • Año: no puede ser negativo.
  • Mes: debe estar entre 1 y 12.
  • Día: debe estar entre 1 y el número de días del mes indicado.

Código

void leerFecha(){   //método para ingresar una fecha
    int dx, mx, ax;   //para lectura de días, mes y año

    do {   //ciclo de lectura de año
        cout << endl << "Año: ";
        cin >> ax;   //lectura
    } while (ax < 0);  //repetir lectura mientras ingrese años negativos

    do {   //ciclo de lectura de MES
        cout << endl << "Mes: ";
        cin >> mx;   //lectura
    } while ((mx < 1) || (mx > 12));  //repetir lectura mientras ingrese mes fuera de rango

    do {   //ciclo de lectura de día
        cout << endl << "Día: ";
        cin >> dx;   //lectura
    } while ((dx < 1) || (dx > diasMes(mx, ax)));  //repetir lectura mientras ingrese días fuera de rango permitido

    setDia(dx);   //actualiza el día leído
    setMes(mx);   //actualiza el mes leído
    setAnio(ax);  //actualiza el año leído
} //de leerFecha

};  //de la clase cFecha

Clase cProducto

La clase cProducto representa de forma genérica los productos de un inventario. Es una clase base abstracta, ya que contiene el método virtual puro calcularPrecioVenta(), que debe ser implementado por las clases derivadas tar0 y tar12.

Atributos principales

  • codigo: identificador del producto.
  • nombre: descripción del producto.
  • precioUnitario: precio sin impuestos ni descuentos.
  • stock: existencias disponibles.
  • precioVenta: precio final con impuestos y descuentos.
  • fechaCaducidad: objeto de tipo cFecha (composición entre clases).

Constructor y destructor

Ambos inicializan los atributos con valores por defecto mediante los métodos set correspondientes.

Código

class cProducto {    //definición de la clase para todos los productos
    char codigo[EXT1];   //código que identifica a cada producto
    char nombre[EXT2];   //nombre o descripción del producto
    float precioUnitario;  //precio unitario, sin impuestos ni descuentos
    int stock;             //existencias del producto
    float precioVenta;        //valor calculado de precio de venta, con impuestos y descuentos
    cFecha fechaCaducidad;    //composición entre clases

public:
    cProducto(){ setCodigo("0000"); setNombre(" "); setPrecioUnitario(0); setStock(0); setPrecioVenta(0); } //constructor
    ~cProducto(){ setCodigo("0000"); setNombre(" "); setPrecioUnitario(0); setStock(0); setPrecioVenta(0); } //destructor

    void setCodigo(char val[]){ strcpy(codigo, val); }
    void setNombre(char val[]){ strcpy(nombre, val); }
    void setPrecioUnitario(float val){ precioUnitario = val; }
    void setStock(int val){ stock = val; }
    void setPrecioVenta(float val){ precioVenta = val; }
    void setFechaCaducidad(cFecha oFec){ fechaCaducidad = oFec; }

    virtual void calcularPrecioVenta(cFecha oF) = 0;   //método que calcula el precio de venta, implementado en las clases tar0 y tar12

    string getCodigo(){ return codigo; }
    string getNombre(){ return nombre; }
    float getPrecioUnitario(){ return precioUnitario; }
    int getStock(){ return stock; }
    float getPrecioVenta(){ return precioVenta; }
    cFecha getFechaCaducidad(){ return fechaCaducidad; }
};

Descargar

PDF Word HTML