elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú?  (Leído 1,825 veces)
Tona Martínez

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú?
« 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;
}


En línea

Niber

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú?
« Respuesta #1 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.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Hola,¿alguien me podría decir si estoy enlazando bien las clases en el menú?
« Respuesta #2 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.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines