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 rectangle


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut Définir une classe rectangle
    Bonjour,

    Je débute en C++, et j'essaye de faire une classe rectangle ( j'ai déjà défini une classe Point)
    On définit un rectangle à partir de son coin supérieur gauche et inférieur droit.

    Je dois tout d'abord faire une méthode init qui construit un rectangle à partir de 2 points.

    J'ai pour l'instant fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class rectangle
    { public:
     
    rectangle(){}; // constructeur par défaut
    init(Point,Point);
     
    private:
    	Point g,d; // points sup gauche et inf droit qui définissent mon rectangle
    };
     
    rectangle::init(Point a, Point b)
    {
           //a completer !
    }
    Seulement je comprends pas trop ce que ça veut dire de "construire un rectangle à partir de 2 points".
    Qu'est ce que doit faire exactement ma méthode init ? Déterminer les 4 points du rectangle ?

    J'ai l'impression qu'il faut juste faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rectangle::init(Point a, Point b)
    {
       g=a; b=g;
    }
    Puis dans le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main(int argc, char* argv[])
     
    {
    	Point a,b;
    	rectangle rect;
    	a.init(1,0, " Point a");
    	b.init(0,1,"Point b");	
    	rect.init(a,b);
    	return 0;
    }
    Est-ce que c'est juste ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Citation Envoyé par rouliane Voir le message
    Est-ce que c'est juste ?
    Non, il faut vraisemblablement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rectangle::init(Point a, Point b)
    {
       g=a; d=b;
    }
    Et puis on passera sans doute les paramètres par const & :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rectangle::init(const Point& a, const Point& b)
    {
       g=a; d=b;
    }
    C'est un exercice ou du 'vrai' code ?
    Parce qu'en pratique il faut utiliser les constructeurs et non créer des méthodes 'init'...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class rectangle
    {
      rectangle(const Point& a, const Point& b);
    };
    Ah et aussi ta classe Point et ta classe rectangle n'ont pas des noms très homogènes (Rectangle ?).

    MAT.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Merci Mat.

    Alors ça n'est pas du vrai code, mais bien un exercice . Vu que ce sont des exercices progressifs, on utilise pour l'instant pas les constructeurs.

    Mais quel est l'interet de remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rectangle::init(Point a, Point b)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rectangle::init(const Point& a, const Point& b)
    ?

    Sinon, je ne comprends pas quand tu dis :

    aussi ta classe Point et ta classe rectangle n'ont pas des noms très homogènes (Rectangle ?)
    Qu'est ce qu'un nom "homogène" ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Ah si ça fait partie d'un ensemble d'exercices progressifs alors ne tient peut-être pas compte de ma remarque sur const &, j'imagine que ça viendra par la suite.

    Sinon par pas très homogène je voulais dire que Point commence par une majuscule alors que rectangle non.

    MAT.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Ok, merci.
    Je vais essayer de faire la suite.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Alors je continue : je dois faire maintenant une méthode init qui construit un rectangle à partir d'un point et de 2 dimensions ( longueur et largeur ).
    J'ai supposé que le point était le point supérieur gauche.

    Je voulais donc créer la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init(Point, double, double);
    Qui sera définie de cette façon ( L et l permettront de "créer" le point inférieur droit ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Rectangle::init( Point a, double L, double l)
    {
       g=a;
       d.x=a.x+L; //
       d.y=a.y-l;
    }
    Le seul problème c'est que ça marche pas évidemment parce que je ne peux pas accéder à a.x, d.x, d.y et a.y car x et y sont "private".

    Sauriez-vous comment je pourrais faire pour remédier à celà ?

  7. #7
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Et puis donner un type de retour pour cette fonction init...

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 triangle
    Par Pingouin22 dans le forum C++
    Réponses: 13
    Dernier message: 16/10/2007, 10h07
  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