Академический Документы
Профессиональный Документы
Культура Документы
I. OBJETIVOS
En la mayoría de las clases es necesario dar valores iniciales a sus miembros (constructor) y
liberar memoria al finalizarlos (destructor). Para ello se utilizan los métodos constructor y
destructor.
El método constructor será miembro público cuyo nombre es el mismoque el de la clase, sin
devolver nada.Puede llevar parámetros,
1
El método destructor será un miembro con el mismo nombre de la clase con el prefijo ~, sin
devolver nada, ni siquiera void.
Constructor
Dentro del método constructor se pueden inicializar los miembros de la clase con un valor por
defecto o un valor que se recibe como parámetro al momento de la creación del objeto. Por
ejemplo:
Destructor
El método destructor no siempre hace falta, solo cuando se llame a rutinas que modifiquen el
estado del sistema y antes de destruir el objeto haya que reponer ese estado. Se crea dentro de
la clase anteponiendo al nombre el símbolo (~).
2
III. MATERIALES Y EQUIPO
IV. PROCEDIMIENTO
Ejercicio 1. Implementación del método constructor para inicializar miembros del objeto
Desarrolle una clase que permita identificar el cuadrante donde se encuentra un punto (x,y) en
el plano cartesiano. La clase retornará una cadena de caracteres especificando el cuadrante al
que pertenece el punto.
#include <iostream>
#include <stdlib.h>
private:
float X, Y;
};
main(){
3
float x,y;
cout<<"\t-->Ingrese el punto (x,y):\n" ;
cin>>x>>y;
//Inicializamos el objeto y enviamos x y y
Cuadrante xy(x,y);
cout<<"El punto ("<<x<<","<<y<<") se encuentra en: ";
xy.vercuadrante();
system("pause");
}//fin funcion principal
void Cuadrante::vercuadrante(){
//verificamos los puntos
//para ubicar la coordenada
if ((X>0) && (Y>0))
cout<<"I Cuadrante"<<endl;
else if ((X>0) && (Y<0))
cout<< "II Cuadrante"<<endl;
else if ((X<0) && (Y<0))
cout<< "III Cuadrante"<<endl;
else if ((X<0) && (Y>0))
cout<< "IV Cuadrante"<<endl;
else if ((X==0) && (Y==0))
cout<< "Origen"<<endl;
else if ((X==0) && (Y!=0))
cout<< "Eje Y"<<endl;
else if ((X!=0) && (Y==0))
cout<< "Eje X"<<endl;
}//fin metodo vercuadrante
class Factura{
public:
void newFactura();
Factura();//Constructor
private:
//atributos privados
char cliente[30];
char vendedor[30];
4
char fecha[10];
float monto;
int cantProd;
//metodos privados
void setCliente();
void setVendedor();
void setFecha();
void getCliente();
void getVendedor();
void getfecha();
}; //fin clase Factura
class Detalle{
private:
float cantidad, precio;
float IVA;
char producto[20];
public:
Detalle(float _iva=0.13){//Constructor
IVA=_iva;
};
float getIva();
float getTotal();
void setCantidad();
void setPrecio();
void setProducto();
float getCantidad();
float getPrecio();
void getProducto();
};//fin clase Detalle
main(){
Factura f; //objeto f de la clase Factura
f.newFactura();
system("pause");
Factura::Factura(){//Método constructor
cantProd=0;
monto=0;
void Factura::newFactura(){
char resp;
setVendedor();
setCliente();
setFecha();
5
Detalle det[100]; //arreglo de 100 objetos clase Detalle
do{
system("cls");
cout<<"\nIngrese la descripción del producto No:
"<<cantProd+1<<endl;
det[cantProd].setProducto();
det[cantProd].setCantidad();
det[cantProd].setPrecio();
cantProd++;
cout<<"\nPresione <ENTER> para otro producto";
resp=getche();
}while(resp==13);
system("cls");
cout<<"\nFecha:\t"<<fecha;
cout<<"\nVendedor:\t"<<vendedor;
cout<<"\nCliente:\t"<<cliente;
cout<<"\n___________________________________________
______________\n";
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
for(int i=0;i<cantProd;i++){
cout<<endl;
cout<<i+1<<"\t";
det[i].getProducto();
cout<<"\t\t\t"<<det[i].getCantidad()<<"\t"<<det[i].getPrecio(
);
cout<<"\t"<<det[i].getIva()<<"\t"<<det[i].getTotal();
monto+=det[i].getTotal();
}
cout<<endl<<endl;
cout<<"\t\tTotal a pagar: $"<<monto<<endl<<endl;
}
void Factura::setVendedor(){
cout<<"\n-->Ingrese el nombre del vendedor: ";
cin.getline(vendedor,30);
}
void Factura::setCliente(){
cout<<"\n-->Ingrese el nombre del cliente: ";
cin.getline(cliente,30);
}
void Factura::setFecha(){
cout<<"\n-->Ingrese la fecha: ";
6
cin.getline(fecha,10);
}
void Detalle::setProducto(){
do{
cout<<"\n\t-->Ingrese nombre de producto: ";
cin.getline(producto,30);
}while(strlen(producto)==0);
}
void Detalle::setCantidad(){
do{
cout<<"\n\t-->Ingrese cantidad de "<<producto<<" a
adquirir: ";
cin>>cantidad;
}while(cantidad<=0);
}
void Detalle::setPrecio(){
do{
cout<<"\n\t-->Ingrese precio: ";
cin>>precio;
}while(precio<0);
}
float Detalle::getIva(){
return precio*cantidad*IVA;
}
float Detalle::getTotal(){
return precio*cantidad+getIva();
}
void Detalle::getProducto(){
cout<<producto;
}
float Detalle::getCantidad(){
return cantidad;
}
float Detalle::getPrecio(){
return precio;
}
V. DISCUSION DE RESULTADOS
1. Crear una clase profesor con los miembros, nombre y materia y un método público que
permita el ingreso de la lista de N alumnos y sus 3 notas. La clase deberá mostrar: a) el
cuadro de notas de todos los alumnos, b) el cuadro de honor, c) el promedio de notas o d)
el listado de los alumnos con promedio por debajo del promedio general.
2. Crear una clase Banco la cual pueda manejar N cuentas de ahorro con los datos del
ahorrante. Esta debe contener los métodos necesarios para manejar los depósitos y retiros
de cuenta. Además, que se pueda ver a) el total de depósitos en todas las cuentas, b) El
reporte de estado de cuenta para un ahorrante en específico, ingresando el número de
cuenta.
7
VII. BIBLIOGRAFIA
• Metodología de la Programación: Diagramas de Flujo, Algoritmos y Programación
estructurada. Joyanes Aguilar, Luis. No. De Clasificación 005.1 J88 1998. Editorial:
MCGRAW HILL
• Cómo Programar en C/C++. Deitel, Harvey M... No. De Clasificación 005.362 D325 1995
Editorial: PRENTICE HALL