Título: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú? Publicado por: Tona Martínez en 23 Mayo 2019, 09:36 am #include <iostream>
#include <cmath> #include <iomanip> #include <string> #include <conio.h> #include <stdlib.h> #include "Carátula.cpp" using namespace std; class Tarjeta { private: int NumTarjeta; float Fondos; public: Tajeta(int, float); void Consultar(); }; class TarjetaDebito: public Tarjeta { private: string Propietario; public: TarjetaDebito(int, float, string); void Consultar(); }; class TarjetaCredito: public TarjetaDebito { private: float Credito; public: TarjetaCredito(int, float, string, double); void Consultar(); }; class TarjetaMetro: public TarjetaDebito { private: double MontoRecarga; public: TarjetaMetro(int, float, string); void Consultar(); void Meter(float Monto); void printMontoFinal(); }; Tarjeta::Tarjeta(int NumTarjeta, float Fondos) { this->NumTarjeta = NumTarjeta; this->Fondos = Fondos; } void Tarjeta::Consultar() { cout<<"\nLos Fondos actuales de la Tarjeta son de: $"<<Fondos; } TarjetaDebito::TarjetaDebito(int NumTarjeta, float Fondos, string Propietario): Tarjeta(NumTarjeta, Fondos) { this->Propietario = Propietario; } void TarjetaDebito::Consultar(float Monto) { cout<<"\nLos Fondos actuales de la Tarjeta de Débito son de: $"<<Fondos; } TarjetaCredito::TarjetaCredito(int NumTarjeta, float Fondos, string Propietario, double Credito): TarjetaDebito(NumTarjeta, Fondos, Propietario) { this->Credito = Credito; } void TarjetaCredito::Consultar(float Monto) { cout<<"\nTu crédito actual en esta Tarjeta de Crédito es de: $"<<Credito; } TarjetaMetro::TarjetaMetro(int NumTarjeta, float Fondos, string Propietario): TarjetaDebito(NumTarjeta, Fondos, Propietario){} void TarjetaMetro::Consultar() { cout<<"\nLos Fondos actuales de la Tarjeta del Metro son de: $"<<Fondos; } void TarjetaMetro::Meter() { cout<<"\nIngrese el monto que desea recargar: $"; cin>>MontoRecarga; } void TarjetaMetro::printMontoFinal() { cout<<"\nEl Monto Final de sus Tarjetas es: "; } void Menu() { char op, op2, op3; cout<<"\n\tBienvenido al STC Metro"; cout<<"\n¿Qué Operación deseas realizar?"; cout<<"\n\n\ta)Recargar Saldo a Tarjeta"; cout<<"\n\n\tb)Transferir saldo entre tarjetas"; cout<<"\n\n\tc)Salir"; cin>>op; if(op=='a') { cout<<"\n\tTeclee el número del tipo de tarjeta: "; cout<<"\n\n\t1.- Tarjeta de Crédito"; cout<<"\n\n\t2.- Tarjeta de Débito"; cin>>op2; if(op2=='1') { cout<<"\nDigite el número de su Tarjeta de Crédito: "; cin>>(*(TarjetaCredito.NumTarjeta)); cout<<"\nSu Crédito disponible es de: $5000"; cout<<"\nIngrese el número de su tarjeta del metro: "; cin>>(*(TarjetaMetro.NumTarjeta)); cout<<"\nSu Saldo actual en la tarjeta del STC es de: $20"; cout<<"\nIngrese el monto que desea recargar: $"; cin>>(*(TarjetaMetro.Monto)); cout<<"\nFinalmente usted termina con un saldo de: $"<<(*(TarjetaMetro.Monto)) + 20; } if(op2=='2') { cout<<"\nDigite el número de su Tarjeta de Débito: "; cin>>(*(TarjetaDebito.NumTarjeta)); cout<<"\nIngrese el número de su tarjeta del metro: "; cin>>(*(TarjetaMetro.NumTarjeta)); cout<<"\nSu saldo disponible en su tarjeta de débito es de: $500"; cout<<"\nSu saldo en su tarjeta del STC es de: $20"; cout<<"\nDigite el monto que desea recargar: $"; cin>>(*(TarjetaMetro.Monto)); cout<<"\nUsted finaliza con: $"<<(*(TarjetaMetro.Monto)) + 20<<" en su tarjeta del metro"; cout<<"\nY su saldo de tarjeta de débito es de: $"500 -= (*(TarjetaMetro.Monto)); } } if(op=='b') { cout<<"\nDigite el Número de Tarjeta que va a transferir: "; cout<<"\nDigite el Número de Tarjeta a la que se transferirá el monto: "; } } int main() { Caratula(); TarjetaMetro TM1; Menu(); TM1.printMontoFinal(); return 0; } Título: Re: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú? Publicado por: Niber en 24 Mayo 2019, 16:16 pm -Yo veo el codigo algo desordenado, tienes una clase base Tarjeta, y derivada de esta clase esta TarjetaDebito de la que derivan TarjetaCredito y TarjetaMetro- Las variables son privadas, con lo cual son conocidas dentro de su clase. O bien haces las funciones de acceso (set y get) o declaras las variables como protected.
-En la funcion menu() intentas hacer todo, pero no has declarado ningun objeto TarjetaCredito, TarjetaMetro.... Creo que seria mas legible si la funcion menu devolviese la opción elegida y luego dependiendo la opción, realizar las operaciones. Recuerda declarar los objetos. Título: Re: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú? Publicado por: CalgaryCorpus en 24 Mayo 2019, 17:22 pm Hay varias inconsistencias en los metodos Consultar. Los declaras sin parametros, pero luego en la implementation si reciben.
Ese parametros esta demas. |