begin process at 2012 05 29 13:56:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

POO: classe et heritage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

POO: classe et heritage

samedi 19 février 2011 à 14:30:46 | POO: classe et heritage

eishtein

bonjour les gars;
Bon voilà, j'ai les deux classes suivantes:
Code C/C++ :
class fraction
{
      public:
             fraction(int=0,int=1);
             fraction(double&);
             int pgcd(int,int);
             fraction operator+=(fraction);
             fraction operator-=(fraction);
             fraction operator*=(fraction);
             bool operator==(fraction);
             int num();
             int den();
             void afficher();
             
      protected:
              int a,b;
              void reduire();
};
class intfract: public fraction
{
      public:
             intfract(int=0);
		     intfract(int=0,int=0,int=0);
		     intfract(fraction);
             intfract& operator+=(intfract&);
             void aff();
       protected:
               int Pint;
};

malgré le fait que j'ai déclaré les champs de la classe de base comme étant de type protected, le compilateur me génère un message d'erreur comme quoi selon ce contexte on peut pas les manipuler. je vous serais donc très reconnaissant si vous m'aider à résoudre ce problème;
ET MERCI D'AVANCE
eishtein;
samedi 19 février 2011 à 15:47:25 | Re : POO: classe et heritage

CptPingu

Administrateur CodeS-SourceS


intfract(int=0);
intfract(int=0,int=0,int=0);


Dangereux ça. Si je fais "new intfract", laquelle des deux méthodes est appelée ?


Pourquoi avoir une méthode aff() alors que tu as une méthode affichage() au dessus ?
Quelle est l'intérêt de créer une classe fraction ?
Si c'est juste le type qui doit changer, alors l'héritage n'est pas du tout adapté, c'est un template qu'il te faut.

Techniquement, j'ai besoin que tu postes plus de code, pour pouvoir te résoudre l'erreur de compilation.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
samedi 19 février 2011 à 20:10:14 | Re : POO: classe et heritage

eishtein

merci pour la réponse;
ben en fait l'idée c'est de créer une classe 'intfract' représentant un nombre sous la forme suivante :"1 '1/2' [UN ET DEMI]". c pour çà que j'ai créé une classe intfract dérivée de la classe 'fraction' . En ce qui concerne les constructeurs de la classe intfract , j'en ai créé 3 pour la simple raison qu'il existe trois cas:
-->le premier cas : on peut initialiser via le constructeur avec uniquement la partie entiere 'Pint'.
-->le deuxieme cas : on peut initialiser via le constructeur avec la partie entière et la partie fraction.
-->le troisieme cas : on peut initialiser via le constructeur rien qu'avec la partie fraction.
ENFIN , pour la methode affichage, si je n'utilise que la methode afficher de la classe fraction, la partie entière ne s'affichera pas, d'où l'intérêt de la methode 'aff()'.
voici le code des definition au cas où il peut vous etre utile:
[code=cpp]
#include <iostream>
#include <math.h>
#include "fraction.h"

using namespace std;

fraction::fraction(int x,int y)
{
a=x;
b=y;
}
fraction::fraction(double &x0)
{
double epsilon=fabs(x0/1e2);
a=(int)x0;
b=1;

while(fabs(a-x0)>epsilon)
{


x0*=
samedi 19 février 2011 à 20:27:15 | Re : POO: classe et heritage

eishtein

merci pour la réponse;
ben en fait l'idée c'est de créer une classe 'intfract' représentant un nombre sous la forme suivante :"1 '1/2' [UN ET DEMI]". c pour çà que j'ai créé une classe intfract dérivée de la classe 'fraction' . En ce qui concerne les constructeurs de la classe intfract , j'en ai créé 3 pour la simple raison qu'il existe trois cas:
-->le premier cas : on peut initialiser via le constructeur avec uniquement la partie entiere 'Pint'.
-->le deuxieme cas : on peut initialiser via le constructeur avec la partie entière et la partie fraction.
-->le troisieme cas : on peut initialiser via le constructeur rien qu'avec la partie fraction.
ENFIN , pour la methode affichage, si je n'utilise que la methode afficher de la classe fraction, la partie entière ne s'affichera pas, d'où l'intérêt de la methode 'aff()'.
voici le code des definition au cas où il peut vous etre utile:
[code=cpp]
#include <iostream>
#include <math.h>
#include "fraction.h"

using namespace std;

fraction::fraction(int x,int y)
{
a=x;
b=y;
}
fraction::fraction(double &x0)
{
double epsilon=fabs(x0/1e2);
a=(int)x0;
b=1;

while(fabs(a-x0)>epsilon)
{


x0*=
samedi 19 février 2011 à 20:36:47 | Re : POO: classe et heritage

eishtein

merci pour la réponse;
ben en fait l'idée c'est de créer une classe 'intfract' représentant un nombre sous la forme suivante :"1 '1/2' [UN ET DEMI]". c pour çà que j'ai créé une classe intfract dérivée de la classe 'fraction' . En ce qui concerne les constructeurs de la classe intfract , j'en ai créé 3 pour la simple raison qu'il existe trois cas:
-->le premier cas : on peut initialiser via le constructeur avec uniquement la partie entiere 'Pint'.
-->le deuxieme cas : on peut initialiser via le constructeur avec la partie entière et la partie fraction.
-->le troisieme cas : on peut initialiser via le constructeur rien qu'avec la partie fraction.%
lundi 21 février 2011 à 10:25:44 | Re : POO: classe et heritage

CptPingu

Administrateur CodeS-SourceS
Évite les "using namespace", voir: [ Lien ]

Beaucoup d'erreur de conception:
- L'héritage n'est pas justifié, une "fraction" et une "fraction entière" ne diffère que par le type, pas par un concept d'héritage.
- Si tu fais un héritage, affichage() devrait être redéfinit, et non réécrit sous un autre nom (mot clé virtual).
- Si tu mets des arguments en protected, tu dois pouvoir les utiliser dans la classe fille, sans souci. Poste moi l'ensemble de ton code, et l'erreur exacte. Parce que là, je ne vois pas.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
lundi 21 février 2011 à 11:07:01 | Re : POO: classe et heritage

CptPingu

Administrateur CodeS-SourceS
Voici un petit exemple pour étayer mes dires:
Code C/C++ :
#include <iostream>
#include <sstream>

template <typename T>
class Complex
{
public:
  Complex();
  Complex(T real);
  Complex(T real, T img);

  Complex<T> operator*(const Complex<T>& image) const
  {
    return Complex<T>(_real * image._real - _img * image._img,
		      _real * image._img + _img * image._real);
  }

  T real() const;
  T img() const;

  void display(std::ostream& out) const;
private:
  T _real;
  T _img;
};

template <typename T>
std::ostream& operator<<(std::ostream& out, const Complex<T>& imag);

template <typename T>
Complex<T>::Complex()
  : _real(0), _img(0)
{
}

template <typename T>
Complex<T>::Complex(T real)
  : _real(real), _img(0)
{
}

template <typename T>
Complex<T>::Complex(T real, T img)
  : _real(real), _img(img)
{
}

template <typename T>
void Complex<T>::display(std::ostream& out) const
{
  out << _real << " + " << _img << "i";
}

template <typename T>
T Complex<T>::real() const
{
  return _real;
}

template <typename T>
T Complex<T>::img() const
{
  return _img;
}

template <typename T>
std::ostream& operator<<(std::ostream& out, const Complex<T>& imag)
{
  imag.display(out);
  return out;
}


template <typename T>
class Fraction
{
public:
  Fraction();
  Fraction(T num);
  Fraction(T num, T den);
  Fraction(const Fraction<T>& frac);
  Fraction<T> operator*(const Fraction<T>& frac) const;
  void display(std::ostream& out) const;
private:
  T _num;
  T _den;
};

template <typename T>
std::ostream& operator<<(std::ostream& out, const Fraction<T>& imag);

template <typename T>
Fraction<T>::Fraction()
  : _num(0), _den(1)
{
}

template <typename T>
Fraction<T>::Fraction(T num)
  : _num(num), _den(1)
{
}

template <typename T>
Fraction<T>::Fraction(T num, T den)
  : _num(num), _den(den)
{
}

template <typename T>
Fraction<T>::Fraction(const Fraction<T>& frac)
  : _num(frac._num), _den(frac._den)
{
}

template <typename T>
Fraction<T> Fraction<T>::operator*(const Fraction<T>& frac) const
{
  return Fraction<T>(_num * frac._num, _den * frac._den);
}

template <typename T>
void Fraction<T>::display(std::ostream& out) const
{
  out << _num << "/" << _den;
}

template <typename T>
std::ostream& operator<<(std::ostream& out, const Fraction<T>& imag)
{
  imag.display(out);
  return out;
}

int main()
{
  Complex<int> im(4, 5);
  std::cout << im << std::endl;

  {
    Fraction<int> f(5, 6);
    Fraction<int> g(5, 2);
    Fraction<int> h = f * g;
    std::cout << f << std::endl
	      << g << std::endl
	      << h << std::endl;
  }
  {
    Fraction<double> f(5.5, 6.6);
    Fraction<double> g(5.5, 2.2);
    Fraction<double> h = f * g;
    std::cout << f << std::endl
	      << g << std::endl
	      << h << std::endl;
  }
  {
    Fraction<Complex<int> > f(Complex<int>(5, 6), Complex<int>(6, 8));
    Fraction<Complex<int> > g(Complex<int>(8, 10), Complex<int>(78, 2));
    Fraction<Complex<int> > h = f * g;
    std::cout << f << std::endl
	      << g << std::endl
	      << h << std::endl;
  }

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : int, classe, fraction, operator, intfract


Répondre à ce message

Sujets en rapport avec ce message

Matrice constante. [ par nsoualem ] j'ai crée une classe matrice avec un constructeurdu type:matrice(int nbligne,int nbcolonne)...elle marche a merveille!!!Lors de la création d'un code, simplifier une fraction ( débutant ) !!! [ par myogtha ] #include int main (){int denominateur,mulfac1,mulfac2,facmul1,facmul2,facmulfinal;int a,b,c,d;coutcin>>a;coutcin>&gt Pointeur vers une fonction dans une classe ... [ par MoDDiB ] Supposons que j'ai la fonctionvoid Fonction(int test,int t);appartenant a la classe Cclass.Quelle est la syntaxe pour creer un pointeur vers cette fon Prob avec "!" [ par saturne_1606 ] Bonjour a tous!Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si Definition d'une classe membre d'une autre classe [ par raidentr ] Je veux définir une classe membre d'une atre classe, est ce que c'est possible ? Exemple :class voiture{public : char marque[128]; int annee; class co C++ : Appel d'un autre constructeur de la classe [ par ymca2003 ] Salut, j'ai un petit problème pour appeler un autre constructeur d'une classe. Ex :// constructeur 1CMyClass::CMyClass(int x, int y){...}// constructe problème Win32 Api [ par Toadstool ] J'ai Visual C++ 6 Introductory Edition et j'ai programmé une classe censée représenter une fenetre mais quand dans le constructeur de la classe j'ecri Import DLL ? [ par DeAtHCrAsH ] J'ai une DLL dans laquelle j'ai crée une classe.J'aimerai maintenant importer la classe dans mon executable de maniere dynamique ?Ma classe est défini Comment utiliser les classes avec les boites de dialogue ? [ par alain34270 ] Bonjour,j'ai écrit une classe qui contient une boite de dialogue.Je veux utiliser la fonction DialogBox pour afficher ma boite de dialogue, associée à Probleme avec les threads en C++ sour linux [ par benjamvs ] Bonjour,j'ai le probleme suivant a regler en C++je travaille sur les threads sous linux, avec la librairie "pthread"Lorsque je crée un thread, celui c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales