Héritage c++

Signaler
Messages postés
83
Date d'inscription
samedi 7 juin 2008
Statut
Membre
Dernière intervention
29 avril 2015
-
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
-
Bonsoir,

Alors, j'ai créer un programme en c++ concernant une classe "compte" où je px calculer le versement et le retrait bien sur sous condition. Maintenant je me demande comment je peux Hériter cette classe pour créer un autre "copmte carnet" où je peux mettre la fonction Calcul Intérêt (avec un taux fixe), en redéfinissant la fonction afficher et le constructeur aussi.
Merci d'avance.
Voici le programme :



#include
#include<conio.h>
class compte
{int Num_client;
int Num_agence;
int Num_compte;
float solde;
public:
compte(int cl, int ag, int nc, float sol)
{
Num_client=cl;
Num_agence=ag;
Num_compte=nc;
solde=sol;
}
void afficher()
{cout<<"N? du Client est: "<<Num_client<<"\n";
cout<<"N? de l'Agence est: "<<Num_agence<<"\n";
cout<<"N? du compte: "<<Num_compte<<"\n";
cout<<"Solde : "<<solde<<"\n";
}
void verser(float s)
{solde=solde+s;
}
void retirer(float s1)
{
if(solde>s1)
solde=solde-s1;
else
cout<<"Retrait impossible"<<endl;
   }
}; //Fin Programme
void main()
{ clrscr();
int nc,na,nu;
float sol,s,s1;
cout<<"Entrer n? du client: "<<endl;
cin>>nu;
cout<<"Entrer n? de l'agence:  "<<endl;
cin>>na;
cout<<"Entrer n? du compte "<<endl;
cin>>nc;
cout<<"Entrer le solde "<<endl;
cin>>sol;
compte c1(nu,na,nc,sol);
c1.afficher();
cout<<"Combien voulez vous verser??"<<endl;
cin>>s;
c1.verser(s);
cout<<"Votre nouveau solde est :";
c1.afficher();

cout<<"Combien voulez vous retirer??"<<endl;
cin>>s1;
c1.retirer(s1);
cout<<"Votre nouveau solde est :";
c1.afficher();
getch();}

2 réponses

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
On évite de coder dans un header. Sépare bien la définition du code.

Exemple:

Fichier header: (.h, .hh, .hpp)
class Toto
{
   Toto();
    void afficher();
};

Fichier de code: (.cpp, .cc)
Toto::Toto()
{
}

void Toto::afficher()
{
}

De plus, pour hériter il te suffit simplement d'utiliser l'opérateur ":".

Enfin, la signature d'un main est : int main() et non void main()

#include

class Compte
{
public:
  Compte(int cl, int ag, int nc, float sol);
  virtual void afficher() const;
  virtual void verser(float s);
  virtual void retirer(float s1);
private:
  int _numClient;
  int _numAgence;
  int _numCompte;
  float _solde;
};

Compte::Compte(int cl, int ag, int nc, float sol)
  : _numClient(cl), _numAgence(ag), _numCompte(nc), _solde(sol)
{
}

void
Compte::afficher() const
{
  std::cout << "N? du Client est: " << _numClient << std::endl;
  std::cout << "N? de l'Agence est: " << _numAgence << std::endl;
  std::cout << "N? du compte: " << _numCompte << std::endl;
  std::cout << "Solde : " << _solde << std::endl;
}

void
Compte::verser(float s)
{
  _solde += s;
}

void
Compte::retirer(float s1)
{
  if (_solde > s1)
    _solde -= s1;
  else
    std::cout << "Retrait impossible" << std::endl;
}

class CompteCarnet : public Compte
{
  typedef Compte super;

public:
  CompteCarnet(int cl, int ag, int nc, float sol);
  virtual void afficher() const;
  virtual void calculerTauxInteret();
};

CompteCarnet::CompteCarnet(int cl, int ag, int nc, float sol)
  : super(cl, ag, nc, sol)
{
}

void
CompteCarnet::afficher() const
{
  // Ajoute ici ce que tu veux
  super::afficher(); // Affichage comme dans compte
  // Ajoute ici ce que tu veux
}

void
CompteCarnet::calculerTauxInteret()
{
  // Réalise tes calculs
}

int main()
{
  //clrscr();
  int nc,na,nu;
  float sol,s,s1;
  std::cout << "Entrer n? du client: " << std::endl;
  std::cin >> nu;
  std::cout << "Entrer n? de l'agence: " << std::endl;
  std::cin >> na;
  std::cout << "Entrer n? du compte " << std::endl;
  std::cin >> nc;
  std::cout << "Entrer le solde " << std::endl;
  std::cin >> sol;
  Compte c1(nu, na, nc, sol);
  c1.afficher();
  std::cout << "Combien voulez vous verser??" << std::endl;
  std::cin >> s;
  c1.verser(s);
  std::cout << "Votre nouveau solde est :";
  c1.afficher();

  std::cout << "Combien voulez vous retirer??" << std::endl;
  std::cin >> s1;
  c1.retirer(s1);
  std::cout << "Votre nouveau solde est :";
  c1.afficher();

  CompteCarnet c2(nu, na, nc, sol);
  c2.afficher();
  std::cout << "Combien voulez vous verser??" << std::endl;
  std::cin >> s;
  c2.verser(s);
  std::cout << "Votre nouveau solde est :";
  c2.afficher();

  std::cout << "Combien voulez vous retirer??" << std::endl;
  std::cin >> s1;
  c2.retirer(s1);
  std::cout << "Votre nouveau solde est :";
  c2.afficher();
  //getch();

  return 0;
}
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Remplace juste "private" par "protected" dans la classe Compte, si tu veux avoir accès aux attributs dans la classe fille.