Vous êtes sur la page 1sur 23

Repblica Bolivariana de Venezuela

Universidad Nacional Experimental del Tchira


Departamento de Ingeniera Informtica
Computacion II-Ingeniera Electrnica (415201)
San Cristbal-Venezuela

Tema Perteneciente a la Unidad N II:

Programacin Orientada a Objetos en C++.

Autor: Lcdo. Jos Froiln Guerrero Pulido

Mayo, 2005

Clases
Una clase es la descripcin de un tipo de objeto. La descripcin abarca la definicin de los distintos atributos
y mtodos inherentes al objeto.
Sintaxis:
class tipo_objeto
{
public:
tipo_dato
:
tipo_dato
private:
tipo_dato
:
tipo_dato
};

metodo1 (parmetros);
metodoN (parmetros);
atributo1;
atributoN;

tipo_dato tipo_objeto::metodo1 (parmetros)


{
instrucciones;
}
:
tipo_dato tipo_objeto::metodoN (parmetros)
{
instrucciones;
}
En algunos casos se puede pensar en la declaracin de atributos en la parte pblica y as mismo el declarar
mtodos en la parte privada.
La parte pblica de la clase implica que los elementos definidos en este bloque solo se pueden manipular en
cualquier lugar del programa a travs de un identificador de acceso (variable o arreglo).
La parte privada de la clase implica que los elementos definidos en este bloque solo se pueden manipular solo
por mtodos definidos en la parte pblica.

Constructores.
Cuando se crean objetos, una de las operaciones ms comunes que se realizan sus programas es inicializar los
datos miembros del objeto. Para simplificar el proceso de inicializacin de los datos miembros de la clase, el C++
proporciona una funcin constructora que se ejecuta por si sola cada vez que se crea un objeto. A continuacin se
presentan las siguientes caractersticas de los constructores:

Las funciones constructoras son mtodos de la clase que facilitan a los programas la inicializacin de
los datos miembros de la clase.
Las funciones constructoras tienen el mismo nombre que la clase.
Las funciones constructoras no retornan valores.
Cada vez que el programa crea un objeto de la clase, C++ llama a la funcin constructora de la clase,
si existe.

Pueden existir varias funciones constructoras, pero con diferentes parmetros, esto se conoce como
sobrecarga.

Destructores.
Una funcin destructora automticamente se ejecuta cada vez que se finalice la ejecucin de un programa.
Muchos de los objetos pueden asignar memoria para almacenar informacin, cuando se descarta a un objeto, el C+
+ llama a una funcin destructora especial que puede liberar dicha memoria, limpiando la basura dejada por la
desaparicin del objeto. A continuacin se presentan las siguientes caractersticas de los constructores:

Las funciones destructoras tienen el mismo nombre que la clase, con la excepcin de que debe
anteponer a su nombre el carcter tilde (~).
Las funciones destructoras no retornan valores.

Funciones Amigas
Una funcin amiga de una clase se define por fuera del alcance directo de los miembros privados de dicha
clase, pero aun as tiene el derecho de acceso a los miembros private de la clase. Se puede declarar una funcin o
toda una clase como friend de otra clase. Para declarar una funcin como friend en una clase, en la definicin de
clase procede el prototipo de la funcin con la palabra reservada friend.
Sintaxis:
class tipo_objeto
{
friend tipo_dato funcionamiga (tipo_objeto *, parmetros);
public:
:
private:
:
};
tipo_dato funcionamiga (tipo_objeto *, parmetros)
{
instrucciones;
}

Ejercicios Resueltos
//Programa 1: Procesar informacin de un empleado por medio de una clase.
#include <iostream.h>
#include <conio.h>
class empleado
{
public:
void leer_empleado(void);
void mostrar_empleado(void);
char nombre[15];
long numero_empleado;
float salario;

};
void empleado::leer_empleado(void)
{
cout<< "Nombre:";
cin >> nombre;
cout<< "Nmero:";
cin >> numero_empleado;
cout<< "Salario: Bs.";
cin >> salario;
}
void empleado::mostrar_empleado(void)
{
cout << "Nombre: " << nombre << endl;
cout << "Nmero: " << numero_empleado << endl;
cout << "Salario: Bs." << salario << endl;
}
void main()
{
empleado trabajador;
clrscr();
trabajador.leer_empleado();
cout<<"\nResultado despus de la lectura...\n";
trabajador.mostrar_empleado();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 2: Procesar informacin de cinco empleados por medio de una clase.


#include <iostream.h>
#include <conio.h>
class empleado
{
public:
void leer_empleado(void);
void mostrar_empleado(void);

};

private:
char nombre[15];
long numero_empleado;
float salario;

void empleado::leer_empleado(void)
{
cout<< "Nombre:";
cin >> nombre;
cout<< "Nmero:";
cin >> numero_empleado;
cout<< "Salario: Bs.";
cin >> salario;
}
void empleado::mostrar_empleado(void)
{
cout<<"\t"<<nombre<<"\t"<<numero_empleado<<"\t"<<salario<< endl;
}
void main()
{
empleado trabajador[5];
clrscr();
for (int i=0; i<5; i++)
{
cout<<"Empleado "<<i+1<<endl;
trabajador[i].leer_empleado();
}
clrscr();
cout<<"\n\tListado de Empleados\n";
cout<<"\tNombre\tNumero\tSalario Bs.\n\n";
for (int i=0; i<5; i++)
trabajador[i].mostrar_empleado();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 3: Efectuar la asignacin y lectura de datos fuera de la clase.


#include <iostream.h>
#include <conio.h>
class perros
{
public:
char raza[15];
int peso_promedio;
int altura_promedio;
void mostrar_raza(void);
};
void perros::mostrar_raza(void)
{
cout << "Raza: " << raza << endl;
cout << "Peso promedio: " << peso_promedio << endl;
cout << "Altura promedio: " << altura_promedio << endl;
}
void main()
{
perros canito, canuto;
strcpy(canito.raza,"Doberman;
canito.peso_promedio = 58;
canito.altura_promedio = 25;
cout<<"Ingrese los Datos Referentes a Canuto...\n";
cout<<"Raza:";
cin>>canuto.raza;
cout<<"Peso Promedio:";
cin>>canuto.peso_promedio;
cout<<"Altura Promedio:";
cin>>canuto.altura_promedio;
clrscr();
cout<<"\nResultados despus de la lectura...\n\n";
cout<<"Los datos de Canito son:\n";
canito.mostrar_raza();
cout<<"\nLos datos de Canuto son:\n";
canuto.mostrar_raza();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 4: Efectuar la lectura y validacion de los miembros de la parte privada de la


clase.
#include <iostream.h>
#include <conio.h>
class empleado
{
public:
int asignar_valores(char *, long, float);
void mostrar_empleado(void);
void cambiar_salario(void);
private:
char nombre[15];
long numero;
float salario;
};
int empleado::asignar_valores(char *t_nom, long t_num, float t_sal)
{
strcpy(nombre,t_nom);
numero = t_num;
if (t_sal > 198000.0 && t_sal < 600000.0)
{
salario = t_sal;
return(0);
// salario incorrecto
}
else return(-1);
// salario equivocado
}
void empleado::mostrar_empleado(void)
{
cout << "Empleado: " << nombre << endl;
cout << "Nmero: " << numero << endl;
cout << "Salario: Bs." << salario << endl;
}
void empleado::cambiar_salario (void)
{
do
{
cin>>salario;
if (salario < 198000.0 || salario > 600000.0)
cout<<"\nSalario Incorrecto...\nDar un nuevo salario:";
}
while(salario < 198000.0 || salario > 600000.0);
}

void main()
{
empleado trabajador;
if (trabajador.asignar_valores("Ana Prez", 101, 850000.0)== 0)
{
cout << "Valores asignados al empleado." << endl;
trabajador.mostrar_empleado();
}
else
{
cout << "Especifico un salario no vlido." << endl;
cout << "\nAsigne un nuevo salario:";
trabajador.cambiar_salario();
}
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 5: Efectuar la invocacin y lectura de los miembros de la clase, luego


//de efectuar la lectura de una clave de seguridad.
#include <iostream.h>
#include <string.h>
#include <conio.h>
#define ENTER 13
class empleado
{
public:
void leer_clave(void);
void validar_clave(char *);
private:
void asignar_valores(void);
void mostrar_empleado(void);
char clave[6];
char nombre[15];
float salario;
};
void empleado::leer_clave(void)
{
int j=0;
char t_clave[6];
do
{
t_clave[j]=getch();
if (t_clave[j]!=ENTER) cout<<"*";
j++;
}
while (t_clave[j-1]!=ENTER);
t_clave[j-1]='\0';
validar_clave(t_clave);
}
void empleado::validar_clave(char *c)
{
static int i=1;
strcpy(clave,"josef");
if (strcmp(c,clave)!=0)
{
cout<<"\nClave Incorrecta";
if (i==1)
{
cout<<"\nDar de nuevo la clave:";
i=2;
leer_clave();
}
else
{
cout<<"\nHasta Luego...Usuario no Autorizado";
}
}
else
{
cout<<"\nClave Correcta";
asignar_valores();
clrscr();
mostrar_empleado();
}
}

void empleado::asignar_valores(void)
{
cout<< "\nNombre:";
cin >> nombre;
cout<< "Salario: Bs.";
cin >> salario;
}
void empleado::mostrar_empleado(void)
{
cout << "\nEmpleado: " << nombre << endl;
cout << "Salario: Bs." << salario << endl;
}
void main()
{
empleado acceso;
cout<<"Introduzca clave de acceso (5 caracteres):";
acceso.leer_clave();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 6: Implementacin de una funcin constructora sin parmetros.


#include <iostream.h>
#include <conio.h>
// Construccion de la clase tiempo
class tiempo
{
public:
tiempo();
void activar_tiempo (int, int, int );
void imprimir_formato_militar ();
void imprimir_formato_estandar ();
private:
int hora;
// 0-23
int minuto; // 0-59
int segundo; // 0-59
};
// La funcion tiempo inicializa a 0 los miembros de datos de la clase
tiempo::tiempo ()
{
hora=minuto=segundo=0;
}
// Activa un nuevo tiempo usando el formato militar. Chequea los datos
// introducidos, si los datos son invalidos iniciliza los valores de
// los miembros de datos en cero.
void tiempo::activar_tiempo (int h, int m, int s)
{
hora = (h >= 0 && h < 24) ? h : 0;
minuto = (m >=0 && m < 60) ? m : 0;
segundo = (s >=0 && s < 60) ? s : 0;
}
// Funcion para imprimir el tiempo en formato militar
void tiempo::imprimir_formato_militar ()
{
cout<< (hora < 10 ? "0" : "") << hora << ":"
<< (minuto < 10 ? "0" : "") << minuto << ":"
<< (segundo < 10 ? "0" : "") << segundo;
}
// Funcion para imprimir el tiempo en formato estandar
void tiempo::imprimir_formato_estandar ()
{
cout << (hora==0 || hora==12 ? 12 : hora%12) << ":"
<< (minuto < 10 ? "0" : "") << minuto << ":"
<< (segundo < 10 ? "0" : "") << segundo
<< (hora < 12 ? " AM" : " PM");
}
void main()
{
clrscr();
tiempo t;
// t es una variable objeto de tipo tiempo
cout << "El tiempo inicial en formato militar es -> ";
t.imprimir_formato_militar ();
cout << "\nEl tiempo inicial en formato estandar es -> ";
t.imprimir_formato_estandar ();
t.activar_tiempo (13, 27, 6);
cout << "\n\nEl tiempo en formato militar despues de activar un tiempo es -> ";
t.imprimir_formato_militar ();

cout << "\nEl tiempo en formato estandar despues de activar un tiempo es -> ";
t.imprimir_formato_estandar ();
t.activar_tiempo (99, 99, 99);
cout << "\n\nEl tiempo con datos invalidos:"<< "\nEn formato militar es -> ";
t.imprimir_formato_militar ();
cout << "\nEn formato estandar es -> ";
t.imprimir_formato_estandar ();
getch();

//Programa 7: Implementacin de una funcin constructora sin parmetros.


//Inicializacin de un vector numrico a travs del constructor.
#include <iostream.h>
#include <conio.h>
class entero
{
public:
entero()
{
x=2;
};
void mostrar_valor(void);
private:
int x;
};
void entero::mostrar_valor(void)
{
cout<<x;
}
void main(void)
{
entero vec[10];
clrscr();
for (int i=0; i<10; i++)
{
cout<<"\nEl valor de vec["<<i<<"]:";
vec[i].mostrar_valor();
}
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 8: Implementacin de una funcin constructora con parmetros.


#include <iostream.h>
#include <string.h>
#include <conio.h>
class empleado
{
public:
empleado(char *, int, float);
void mostrar_empleado(void);
private:
char nombre[15];
int numero;
float salario;
};
empleado::empleado(char *t_nom, int t_num, float t_sal)
{
strcpy(nombre, t_nom);
numero = t_num;
salario = (t_sal < 500000.0)? t_sal: 0.0;
}
void empleado::mostrar_empleado(void)
{
cout << "\nEmpleado: " << nombre << endl;
cout << "Nmero: " << numero << endl;
cout << "Salario: Bs." << salario << endl;
}
void main()
{
char nom[15];
float sal;
int num;
cout<< "Nombre:";
cin >> nom;
cout<< "Nmero:";
cin >> num;
cout<< "Salario: Bs.";
cin >> sal;
empleado trabajador(nom, num, sal);
cout<<"\n\nLos datos almacenados despus de ejecutarse la funcin constructora";
trabajador.mostrar_empleado();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 9: Sobrecarga de funciones constructoras.


#include <iostream.h>
#include <string.h>
#include <conio.h>
class empleado
{
public:
empleado(char *, long, float);
empleado(char *, long);
void mostrar_empleado(void);
int cambiar_salario(float);
long leer_numero(void);
private:
char nombre[25];
long numero_empleado;
float salario;
};
empleado::empleado(char *nombre, long numero_empleado,float salario)
{
strcpy(empleado::nombre, nombre);
empleado::numero_empleado = numero_empleado;
if (salario < 50000.0) empleado::salario = salario;
else empleado::salario = 0.0; // salario especificado no vlido
}
empleado::empleado(char *nombre, long numero_empleado)
{
strcpy(empleado::nombre, nombre);
empleado::numero_empleado = numero_empleado;
do
{
cout << "Digite un salario para " << nombre << " menor a Bs. 500,000.00: ";
cin >> empleado::salario;
}
while(salario >= 500000.0);
}
void empleado::mostrar_empleado(void)
{
cout << "Empleado: " << nombre << endl;
cout << "Nmero: " << numero_empleado << endl;
cout << "Salario: Bs." << salario << endl;
}
void main()
{
empleado trabajador("Feliz Guerra", 101, 10101.0);
empleado gerente("Juana Prez", 102);
trabajador.mostrar_empleado();
gerente.mostrar_empleado();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 10: Implementacin de una funcin destructora.


#include <iostream.h>
#include <string.h>
#include <conio.h>
class empleado
{
public:
empleado(char *, int, float);
~empleado(void);
void mostrar_empleado(void);
private:
char nombre[15];
int numero;
float salario;
};
empleado::empleado(char *t_nom, int t_num, float t_sal)
{
strcpy(nombre, t_nom);
numero = t_num;
salario = (t_sal < 500000.0)? t_sal: 0.0;
}
empleado::~empleado(void)
{
cout<<"\n\nDestruyendo el objeto para "<< nombre<< endl;
getch();
}
void empleado::mostrar_empleado(void)
{
cout << "\nEmpleado: " << nombre << endl;
cout << "Nmero: " << numero << endl;
cout << "Salario: Bs." << salario << endl;
}
void main()
{
char nom[15];
float sal;
int num;
cout<< "Nombre:";
cin >> nom;
cout<< "Nmero:";
cin >> num;
cout<< "Salario: Bs.";
cin >> sal;
empleado trabajador(nom, num, sal);
cout<<"\n\nLos datos almacenados despus de ejecutarse la funcin constructora";
trabajador.mostrar_empleado();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 11: Implementacin de una clase cadena para crear y manipular objetos tipo cadenas
de caracteres.
#include <iostream.h>
#include <string.h>
#include <conio.h>
class cadena
{
public:
cadena(char *);
// Constructor
void sumar_cadena(char *);
void restar_caracter(char);
void mostrar_cadena(void);
private:
char datos[100];
};
cadena::cadena(char *letras)
{
strcpy(datos, letras);
}
void cadena::sumar_cadena(char *letras)
{
strcat(datos, letras);
}
void cadena::restar_caracter(char letra)
{
char temp[100];
int i, j;
for (i = 0, j = 0; datos[i]; i++)
{
if (datos[i] != letra) temp[j++] = datos[i];
}
temp[j] = NULL;
strcpy(datos, temp);
}
void cadena::mostrar_cadena(void)
{
cout << datos << endl;
}
void main()
{
cadena titulo("Aprenda Programacin Orientada a Objetos en C++");
cadena tema("Entienda la sobrecarga de operadores");
titulo.mostrar_cadena();
titulo.sumar_cadena(" paso a paso!");
titulo.mostrar_cadena();
tema.mostrar_cadena();
tema.restar_caracter('r');
tema.mostrar_cadena();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 12: Implementacin de una funcion amiga.


#include <iostream.h>
#include <conio.h>
class numero
{
friend void asignar_valor(numero *,int );
public:
numero(){x=0;}
void imprimir(void);
private:
int x;
};
void asignar_valor (numero *c,int nx)
{
c->x=nx;
}
void numero::imprimir(void)
{
cout << x << endl;
}
void main()
{
int n;
numero m;
cout<<"El valor de la variable x antes de activar la funcin amiga: ";
m.imprimir();
cout<<"Dar un valor para x:";
cin>>n;
asignar_valor(&m,n);
cout<<"El valor de la variable x despus de activar la funcin amiga: ";
m.imprimir();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 13: Manipulacin de una funcin amiga y variables por referencia.


#include <iostream.h>
#include <conio.h>
class entero
{
friend float suma_condicionada(entero *, int &);
public:
void cargar();
private:
float y;
};
void entero::cargar()
{
cin>>y;
}
float suma_condicionada(entero *num, int &c)
{
float x;
if (num->y>=100 && num->y<=200)
{
c++;
x=num->y;
}
else x=0;
return x;
}
void main()
{
entero vec[100];
float pro, acum=0;
char resp;
int i=-1,con=0;
do
{
i++;
cout<<"Dar valor "<<i+1<<":";
vec[i].cargar();
cout<<"Desea cargar otro valor (s/n):";
resp=getch();
resp=toupper(resp);
cout<<endl;
}
while (resp=='S'||i>=100);
for (int j=0; j<=i; j++)
{
acum+=(suma_condicionada(&vec[j],con));
}
pro=acum/con;
printf ("El promedio de los valores condicionados es de:%.2f",pro);
cout<<"\nPresione una Tecla para Continuar";
getch();
}

//Programa 14: Implementacin de una funcin amiga dentro de una clase perteneciente a otra
clase.
#include <iostream.h>
#include <string.h>
#include <conio.h>
class libro;
class biblioteca
{
public:
void cambiar_catalogo(libro *, char *);
};
class libro
{
public:
libro(char *, char *, char *);
void mostrar_libro(void);
friend void biblioteca::cambiar_catalogo(libro *,char *);
private:
char titulo[25];
char autor[25];
char catalogo[25];
};
void biblioteca::cambiar_catalogo(libro *este_libro, char *catalogo_nuevo)
{
strcpy(este_libro->catalogo, catalogo_nuevo);
}
libro::libro(char *t_titulo, char *t_autor, char *t_catalogo)
{
strcpy(titulo, t_titulo);
strcpy(autor, t_autor);
strcpy(catalogo, t_catalogo);
}
void libro::mostrar_libro(void)
{
cout << "Ttulo: " << titulo << endl;
cout << "Autor: " << autor << endl;
cout << "Catlogo: " << catalogo << "\n\n";
}
void main()
{
libro programacion("Aprenda C++ paso a paso"," Ing. Informatica"," Principiantes");
programacion.mostrar_libro();
biblioteca bibliotecario;
bibliotecario.cambiar_catalogo(&programacion,"Como aprender en C++ funciones amigas");
programacion.mostrar_libro();
cout<<"\nPresione una Tecla para Continuar";
getch();
}

Ejercicios Propuestos
1. El gobierno regional ha realizado una encuesta, donde se han solicitado los datos ms relevantes, sobre la
preferencia de los vehculos disponibles en el mercado, para determinar cuales modelos se escogern para la
puesta en marcha de un plan denominado FonBienes. Los datos registrados, para cada encuestado se refieren
a: Nombre del encuestado, marca del vehculo, modelo, monto disponible para entregar como cuota inicial y
nmero de meses para pagar. El gobierno desea un programa en C++, que posea las siguientes caractersticas:
a) La funcin constructora y destructora de la respectiva clase.
b) Almacenar los datos recopilados en un arreglo de objetos. Utilice una funcin miembro pblica.
c) Generar un listado por pantalla con los nombres de aquellos encuestados que hayan seleccionado
vehculos de la marca Ford a excepcin del modelo Laser y que requieran un plazo mayor a dos
aos para cancelar el vehculo. Utilice una funcin miembro pblica.
d) Determinar si el modelo Corsa de la marca Chevrolet tiene mayor preferencia que el modelo
Fiesta de la marca Ford. Utilice una funcin amiga.
2. La biblioteca de la UNET desea adquirir N cantidad de libros, los cuales se identifican mediante los siguientes
datos: ISBN, Ttulo, Editorial, Ao de Publicacin, Costo y Observacin. La biblioteca desea un programa en
C++, que posea las siguientes caractersticas:
a) Una funcin amiga para cargar los datos de los atributos del objeto.
b) Una funcin miembro pblica para validar el costo del libro (el costo debe se mayor a 4000 Bs.).
c) Una funcin miembro pblica para asignarle al atributo Observacin un valor con base a la siguiente
condicin: Si el costo del libro es mayor a 60000 Bs. o la publicacin del libro es menor al ao 2001,
este libro no lo puede adquirir la universidad; en caso contrario el libro si se lo puede adquirir la
universidad.
d) Una funcin miembro pblica para listar los datos de aquellos libros que la biblioteca no puede adquirir.
e) Una funcin amiga para determinar el costo promedio de los libros de una determinada editorial
suministrada por el usuario.
f) La funcin constructora y destructora de la respectiva clase.
3. Una inmobiliaria posee el registro para cado uno de los tipos de inmuebles que administra (casas, quintas y
apartamentos) y que estn actualmente disponibles con los siguientes campos: Nombre del propietario, tipo de
transaccin (venta o alquiler), costo de la transaccin, caractersticas del inmueble (cantidad de habitaciones,
cantidad de baos, con o sin telefono), para este ltimo atributo hacer uso de un campo tipo estructura. Escriba
un programa en C++ para:
a)

Almacenar los datos de la siguiente cantidad de inmuebles: seis casas, tres quintas y cuatro
apartamentos.
b) Calcular mediante una funcin amiga el costo promedio de las casas en venta.
c) Listar en un archivo de texto el nombre del propietario y el costo de los apartamentos de tres
habitaciones, disponibles para alquilar. Use una funcin miembro pblica.
4. Leer N nmeros por el teclado y almacenarlos en un arreglo de objetos a travs de una funcin definida por el
usuario. Disear un programa en C++ con tres funciones amigas para determinar en cada caso
respectivamente: si el nmero es capicua, cantidad de divisores y el cubo del nmero. Ir visualizando para
cada nmero y en forma de columnas los resultados que retornen las funciones amigas de la clase.
5. Leer N nmeros por el teclado y almacenarlos en un arreglo de objetos a travs de una funcin definida por el
usuario. Disear un programa en C++ con tres funciones amigas para determinar en cada caso
respectivamente: si el nmero es primo, perfecto, par o impar. Ir visualizando para cada nmero y en forma de
columnas los resultados que retornen las funciones amigas de la clase.

6. En un banco de la ciudad existe un gerente, tres subgerentes y seis cajeros, cada uno de estos empleados
mencionados poseen por jerarquia un nombre de usuario y una contrasea iguales para tener acceso al sistema
de transacciones u operaciones de los clientes del banco. Disear un programa en C++ con mens de
operaciones para efectuar lo siguiente:
a)

Use funciones miembros pblicas para introducir y validar el nombre de usuario y contrasea
dependiendo del tipo de empleado seleccionado por el usuario.
b) Si la validacin realizada en el punto anterior es correcta a travs de funciones miembros privadas
cargar, modificar y consultar datos de los clientes desde archivos binarios. Pero existen ciertas
restricciones por cada nivel de jerarquia existente en el banco para el manejo de las transacciones u
operaciones de los clientes, estas son:

Gerente: Puede cargar, modificar y consultar datos de los clientes.


Subgerente: Solo puede cargar y consultar datos de los clientes.

Cajeros: Solo puede consultar datos de los clientes.

Los datos almacenados acerca de los clientes en el archivo son los siguientes: Nro. de cuenta, Nro. de libreta,
fecha de apertura de la cuenta (un campo de tipo estructura: dia, mes y ao) y nombre del cliente.
En otra clase independiente a los clientes manejar los datos de los empleados de los cuales se tienen los
siguientes datos privados y funciones miembros pblicas: Nombre del empleado, nombre de usuario, contrasea,
tipo de empleado, sueldo y prima; cargar y listar los datos de los empleados. Aplicar sobrecarga de funciones
constructoras

Vous aimerez peut-être aussi