IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Définir une Classe triangle


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut Définir une Classe triangle
    J'ai une classe triangle à faire, mais il me faut des idées sur ce que l'on pet faire sur un triangle et comment on peut le définir.

    - Trois points déja
    - Calcule de la surface
    - surcharge de l'opérateur =

    Mais pour l'opérateur == comment voir si deux triangles st identiques ?
    A ouep info : les points sont définis dans R²

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    J'espère qu'avant tout, tu disposes d'une classe Point.

    Avant de surcharger l'opérateur =, je me serais déjà demandé si c'était nécessaire.
    http://cpp.developpez.com/faq/cpp/?p...GE_affectation
    Il faudra écrire explicitement un opérateur d'affectation dès lors qu'une simple affectation membre à membre des données de votre classe n'est plus suffisante, par exemple si elle gère une ressource (un pointeur brut, une connexion à une base de données, une texture en mémoire vidéo, ...).
    Donc, question à te poser avant tout, comment va-tu stocker tes points ? Agrégation ou composition ? De là, en découlera la surcharge ou non de = (mais pas que ça...)

    Tu peux dire que deux triangles sont identiques quand leurs points sont identiques deux à deux (ça t'oblige à plusieurs tests d'égalité au pire 6)

    Tu pourrais rajouter :
    • translation
    • rotation

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut Stockage des points
    Je stocke mes points par composition, j'ai une classe point et vecteur

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Donc, à priori, tu n'utiliseras pas de pointeur pour stocker tes points, donc aucun intérêt de surcharger l'opérateur =. Le compilateur le fera très bien à ta place.

    Très bien la classe vecteur mais c'est pour quoi ? Faire des translations ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut Explication
    Je t'explique, j'ai un test samedi, et le prof ns a dit sa tombe sur triangle, vecteur et point sans ns donner de .h donc on doit réfléchir a tt ce qu'on peut faire sur un triangle, un vecteur et sur un point, donc point et ds R².
    Un vecteur lui on peut le transposer, mais aussi le surcharger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    class Vecteur : public CObject {
    DECLARE_SERIAL (Vecteur)
    private :
    	double m_dX;
    	double m_dY;
    public :
    	Vecteur () {}
    	Vecteur (double, double);
    	Vecteur (Point, Point);
    	Vecteur (Vecteur&);
     
    	double ProjX () { return m_dX; }
    	double ProjY () { return m_dY; }
     
    	Vecteur operator = (Vecteur);		// Surcharge des operateurs
    	Vecteur operator + (Vecteur);
    	Vecteur operator +=(Vecteur);
    	Vecteur operator - (Vecteur);
    	Vecteur operator -=(Vecteur);
    	double  operator * (Vecteur);		// Attention : produit scalaire !
    	bool operator == (Vecteur);
    	bool operator != (Vecteur);
    	friend ostream& operator <<(ostream&, Vecteur);
     
    	double Norme ();					// Declaration des services				
    	bool Colineaire(Vecteur);
    	bool DeMemeSens(Vecteur);
    	bool Orthogonal(Vecteur);
    };

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Ca manque de const et de référence toutes ces déclarations. A moins que vous ne l'ayez pas encore vu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    class Vecteur : public CObject {
      DECLARE_SERIAL (Vecteur)
     
    private :
      double m_dX;
      double m_dY;
     
    public :
     
      Vecteur () : m_dX (0) , m_dY (0) {} // au moins initialiser à 0 ?
      Vecteur (double, double);
      Vecteur (const Point &, const Point &);
      Vecteur (const Vecteur &);
     
      double ProjX () const { return m_dX; }
      double ProjY () const { return m_dY; }
     
      // Vecteur & operator = (const Vecteur &); // Inutile
      Vecteur   operator +  (const Vecteur &) const;
      Vecteur & operator += (const Vecteur &);
      Vecteur   operator -  (const Vecteur &) const;
      Vecteur & operator -= (const Vecteur &);
      double    operator *  (const Vecteur &) const;
      bool      operator == (const Vecteur &) const;
      bool      operator != (const Vecteur &) const;
     
      friend std::ostream & operator << (std::ostream &, const Vecteur &);
     
      double Norme () const;
      bool Colineaire(const Vecteur &) const;
      bool DeMemeSens(const Vecteur &) const;
      bool Orthogonal(const Vecteur &) const;
     
    };

Discussions similaires

  1. Définir une classe css dans le code jquery.
    Par piotrr dans le forum jQuery
    Réponses: 9
    Dernier message: 27/07/2009, 11h56
  2. Définir une classe rectangle
    Par rouliane dans le forum C++
    Réponses: 13
    Dernier message: 21/01/2008, 11h14
  3. Réponses: 19
    Dernier message: 14/08/2007, 14h41
  4. Définir une classe dans une autre classe
    Par acieroid dans le forum C++
    Réponses: 7
    Dernier message: 21/05/2006, 23h24
  5. Définir une class comme élement graphique
    Par Janitrix dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 14/11/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo