[C con Clase] duda con clase

Perseuz user en usa.net
Dom Ago 17 02:51:00 CEST 2014


Esta es mi versión.

Archivo Factura.h:

// Ejercicio. 3.13: Factura.h
// Definición de la clase Factura. Este archivo presenta la interfaz
// public de Factura sin revelar las implementaciones de sus funciones
// miembro, que están definidas en Factura.cpp.

#include <string> // utiliza la clase string estándar de C++
using std::string;

// definición de la clase Factura
class Factura
{
public:
    Factura( string, string, int, int ); // constructor que inicializa los 4   miembros de datos
    void establecerNumeroArticulo( string ); // función que establece el número del artículo
    string obtenerNumeroArticulo(); // función que obtiene el número del artículo
    void establecerDescripcionArticulo( string ); // función que establece la descripción del artículo
    string obtenerDescripcionArticulo(); // función que obtiene la descripción del artículo
    void establecerCantidadArticulo( int ); // función que establece la cantidad del artículo
    int obtenerCantidadArticulo(); // función que obtiene la cantidad del artículo
    void establecerPrecioArticulo( int ); // función que establece el precio del artículo
    int obtenerPrecioArticulo(); // función que obtiene el precio del artículo
    int obtenerMontoFactura( ); // función que calcula el monto total de la Factura
private:
    string numeroArticulo; // numero de identificacion del artículo
    string descripcionArticulo; // descripcion del artículo
    int cantidadArticulo; // cantidad del artículo
    int precioArticulo; // precio del artículo
}; // fin de la clase Factura

Archivo Factura.cpp:

// Ejercicio. 3.13: Factura.cpp
// Definiciones de las funciones miembro de Factura. Este archivo contiene
// implementaciones de las funciones miembro cuyo prototipo está en Factura.h.

#include "Factura.h" // incluye la definición de la clase Factura

// el constructor inicializa numeroArticulo, descripcionArticulo, cantidadArticulo y precioArticulo
// con los objetos string e int suministrados como argumento
Factura::Factura( string numero, string descripcion, int cantidad, int precio )
{
    establecerNumeroArticulo( numero ); // llama a la función establecer para inicializar numeroArticulo
    establecerDescripcionArticulo( descripcion ); // llama a la función establecer para inicializar descripcionArticulo
    establecerCantidadArticulo( cantidad ); // llama a la función establecer para inicializar cantidadArticulo
    establecerPrecioArticulo( precio ); // llama a la función establecer para inicializar precioArticulo
} // fin del constructor de Factura

// función para establecer el número del artículo
void Factura::establecerNumeroArticulo( string numero )
{
    numeroArticulo = numero; // almacena el número del artículo en el objeto
} // fin de la función establecerNumeroArticulo

// función para obtener el número del artículo
string Factura::obtenerNumeroArticulo()
{
    return numeroArticulo; // devuelve el numeroArticulo del objeto
} // fin de la función obtenerNumeroArticulo

// función para establecer la descripción del artículo
void Factura::establecerDescripcionArticulo( string descripcion )
{
    descripcionArticulo = descripcion; // almacena la descripción del artículo en el objeto
} // fin de la función establecerDescripcionArticulo

// función para obtener la descripción del artículo
string Factura::obtenerDescripcionArticulo()
{
    return descripcionArticulo; // devuelve la descripcionArticulo del objeto
} // fin de la función obtenerDescripcionArticulo

// función para establecer la cantidad del artículo
void Factura::establecerCantidadArticulo( int cantidad )
{
    if ( cantidad >= 0 )
    cantidadArticulo = cantidad; // almacena la cantidad del artículo en el objeto si aquel es positivo

    else
    {
        cantidadArticulo = 0; // si la cantidad es negativa la hace cero
    }
} // fin de la función establecerCantidadArticulo

// función para obtener la cantidad del artículo
int Factura::obtenerCantidadArticulo()
{
    return cantidadArticulo; // devuelve la cantidadArticulo del objeto
} // fin de la función obtenerCantidadArticulo

// función para establecer el precio del artículo
void Factura::establecerPrecioArticulo( int precio )
{
    if ( precio >= 0 )
    precioArticulo = precio; // almacena el precio del artículo en el objeto si aquel es positivo

    else
    {
        precioArticulo = 0; //si el precio es negativo lo hace cero
    }
} // fin de la función establecerPrecioArticulo

// función para obtener el precio del artículo
int Factura::obtenerPrecioArticulo()
{
    return precioArticulo; // devuelve el precioArticulo del objeto
} // fin de la función obtenerPrecioArticulo

// función para obtener el monto de la factura
int Factura::obtenerMontoFactura( )
{
    return ( obtenerCantidadArticulo() * obtenerPrecioArticulo() );
}

Archivo Ejercicio 3.13.cpp:

// Ejercicio. 3.13: Ejercicio 3.13.cpp
// Demostración de la clase Factura después de separar
// su interfaz de su implementación.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "Factura.h" // incluye la definición de la clase Factura

// la función main empieza la ejecución del programa
int main()
{
    // crea dos objetos Factura
    Factura Articulo1( "01", "palas", 5, 1500 );
    Factura Articulo2( "02", "martillos", 10, 300 );
    Factura Articulo3( "03", "taladros", -9, 2000 );
    Factura Articulo4( "04", "sierras", 5, -1000 );

    // muestra el monto de la factura por artículo
    cout << "El monto de la factura para el articulo No. " << Articulo1.
        obtenerNumeroArticulo() << " es: $" << Articulo1.obtenerMontoFactura() << endl;
    cout << "El monto de la factura para el articulo No. " << Articulo2.
        obtenerNumeroArticulo() << " es: $" << Articulo2.obtenerMontoFactura() << endl;
    cout << "El monto de la factura para el articulo No. " << Articulo3.
        obtenerNumeroArticulo() << " es: $" << Articulo3.obtenerMontoFactura() << endl;
    cout << "El monto de la factura para el articulo No. " << Articulo4.
        obtenerNumeroArticulo() << " es: $" << Articulo4.obtenerMontoFactura() << endl;

    return 0; // indica que terminó correctamente
} // fin de main


El pasado 2014-01-21 08:19:43, Humberto Boone Abdo escribió:
 
HBA> Buenas,
HBA> Necesito ayuda con una clase, que apenas he estado estudiando esto por lo tanto es nuevo para mi, estuve resolviendo un problema que dice así:
HBA> Cree una clase llamada 'Factura', que una ferretería podría utilizar para representar una factura por un artículo vendido en la tienda. Una 'Factura' debe incluir cuatro piezas de información como miembros de datos: un número de pieza (tipo string), la descripción de la pieza (tipo string), la cantidad de artículos de ese tipo que se van a comprar (tipo int),y el precio por artículo (tipo int). Su clase debe tener un constructor que inicialice los cuatro miembros de datos. Proporcione una función 'establecer' y una función 'obtener' para cada miembro de datos. Además, proporcione una función miembro llamada 'obtenerMontoFactura', que calcule el monto de la factura (es decir, que multiplique la cantidad por el precio por artículo) y después devuelva ese monto como un valor int. Si la cantidad no es positiva debe establecerse en cero. Si el precio por artículo no es positivo, debe establecerse en 0. Escriba un programa que demuestre las
HBA>  capacidades de la clase 'Factura'.
HBA> Mis dudas son que no estoy seguro si hice bien el constructor y no se como hacerle para que cuando pide la descripción se puedan introducir caracteres espacio y no sólo la primera palabra que escribo.(Bueno  intente usar la función getline pero no me funcionó)
HBA> Tampoco entiendo si cree bien los objetos, porque cuando dejaba los paréntesis vacíos me daba error y lo que hice fue ponerle ("","",0,0) y así fue como funcionó pero no estoy seguro si sea una buena idea optar por eso.
HBA> Aquí los archivos:
HBA> factura.h:
HBA> #include<string>
HBA> usingstd::string;
HBA> classFactura{
HBA> public:
HBA> Factura(stringpieza,stringdesc,intcant,intprecio){
HBA> establecerNom(pieza);
HBA> establecerDesc(desc);
HBA> establecerCant(cant);
HBA> establecerPrecio(precio);
HBA> //Nombredepieza:
HBA> }
HBA> voidestablecerNom(stringpieza){
HBA> nompieza=pieza;
HBA> }
HBA> stringobtenerNom(){
HBA> returnnompieza;
HBA> }
HBA> //Descripción:
HBA> voidestablecerDesc(stringdesc){
HBA> descpieza=desc;
HBA> }
HBA> stringobtenerDesc(){
HBA> returndescpieza;
HBA> }
HBA> //Cantidad:
HBA> voidestablecerCant(intcant){
HBA> cantart=cant;
HBA> }
HBA> intobtenerCant(){
HBA> returncantart;
HBA> }
HBA> //Precio:
HBA> voidestablecerPrecio(intprecio){
HBA> if(precio<0){
HBA> precio=0;
HBA> }
HBA> precioart=precio;
HBA> }
HBA> intobtenerPrecio(){
HBA> returnprecioart;
HBA> }
HBA> //Montofactura:
HBA> intobtenerMontoFactura(){
HBA> intmonto;
HBA> monto=cantart+precioart;
HBA> if(monto<0){
HBA> monto=0;
HBA> }
HBA> returnmonto;
HBA> }
HBA> private:
HBA> stringnompieza;
HBA> stringdescpieza;
HBA> intcantart;
HBA> intprecioart;
HBA> };
HBA> main.cpp
HBA> #include<iostream>
HBA> usingnamespacestd;
HBA> #include<string>
HBA> usingnamespacestd;
HBA> #include"factura.h"
HBA> intmain()
HBA> {
HBA> Facturafactura1("","",0,0);
HBA> Facturafactura2("","",0,0);
HBA> stringnumpieza;
HBA> stringdesc;
HBA> intcanta;
HBA> intprecioa;
HBA> cout<<"Introduceelnumerodepieza:"<<endl;
HBA> cin>>numpieza;
HBA> factura1.establecerNom(numpieza);
HBA> cout<<"Escribeladescripcióndelarticulo"<<endl;
HBA> cin>>desc;
HBA> factura1.establecerDesc(desc);
HBA> cout<<"Introducelacantidaddearticulos"<<endl;
HBA> cin>>canta;
HBA> factura1.establecerCant(canta);
HBA> cout<<"Cualeselpreciodelarticulo?"<<endl;
HBA> cin>>precioa;
HBA> factura1.establecerPrecio(precioa);
HBA> cout<<"Elmontoes:"<<factura1.obtenerMontoFactura();
HBA> cout<<endl;
HBA> }
HBA> gracias de antemano.
HBA> _______________________________________________
HBA> Lista de correo Cconclase Cconclase en listas.conclase.net
HBA> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
HBA> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase