Skip to content

Latest commit

 

History

History
137 lines (107 loc) · 3.41 KB

ex40-objects.md

File metadata and controls

137 lines (107 loc) · 3.41 KB

Object

Ex1

Créer un programme avec comme fichiers

  • main.cpp
  • square.cpp
  • square.h

Implémenter une classe Square avec comme attributs privés :

  • double side_length
  • double area

Les méthodes sont :

  • getArea
  • getSide
  • setSide (en affectant une valeur à side, il faut aussi calcul l'air du carré)

Voici le code main.cpp, ce code n'est pas complet.

#include <iostream>

int main(){
    cout << "Ex1 Objet Square" << endl;
    Square sq;
    sq.side_length = 3.4; // Cette ligne doit provoquer une erreur
    
    // Ici il faut mettre le côté de sq a 3.4;

    // Compléter l'affichage ci-dessous.
    cout << "Le côté vaut : " << ... << " et une aire de : " << ... << endl;
}

Ex 2

Quel est l'affichage du problème suivant :

class Value {
   public:
    int getValue() { return value; }

    void setValue(int value) { this->value = value; }

   private:
    int value;
};

class Container {
   public:
    Value& getValRef() { return val; }

    Value getVal() { return val; }

   private:
    Value val;
};

int main()
{
    cout << endl << "Exercice 2 reference" << endl;
    Container c;
    c.getValRef().setValue(4);
    Value v1 = c.getVal();
    Value v2 = c.getVal();
    Value v3 = c.getValRef(); // Attention v3 n'est pas une reference
    Value& v4 = c.getValRef();

    int num = 1;

    cout << num << ") V1 : " << v1.getValue() << endl;
    cout << num << ") V2 : " << v2.getValue() << endl;
    cout << num << ") V3 : " << v3.getValue() << endl;
    cout << num << ") V4 : " << v4.getValue() << endl;
    cout << num << ") C : " << c.getVal().getValue() << endl << endl;

    num = 2;
    v1.setValue(6);
    cout << num << ") V1 : " << v1.getValue() << endl;
    cout << num << ") V2 : " << v2.getValue() << endl;
    cout << num << ") V3 : " << v3.getValue() << endl;
    cout << num << ") V4 : " << v4.getValue() << endl;
    cout << num << ") C : " << c.getVal().getValue() << endl << endl;

    num = 3;
    v3.setValue(3);
    cout << num << ") V1 : " << v1.getValue() << endl;
    cout << num << ") V2 : " << v2.getValue() << endl;
    cout << num << ") V3 : " << v3.getValue() << endl;
    cout << num << ") V4 : " << v4.getValue() << endl;
    cout << num << ") C : " << c.getVal().getValue() << endl << endl;

    num = 4;
    v4.setValue(5);
    cout << num << ") V1 : " << v1.getValue() << endl;
    cout << num << ") V2 : " << v2.getValue() << endl;
    cout << num << ") V3 : " << v3.getValue() << endl;
    cout << num << ") V4 : " << v4.getValue() << endl;
    cout << num << ") C : " << c.getVal().getValue() << endl << endl;
}

Ex 3

Créer un programme avec comme fichier

  • main.cpp
  • car.cpp
  • car.h

Implémenter les classes suivantes dans les fichiers car

alt text

Le nombre de roues est défini par un #define

Car

  • getWheel: Retourne une reference sur la roue du tableau à la position id
  • setPressure : Affecte la valeur passée en paramètre à toute les roues

La sortie du programme suivant doit être :

Car c;
c.setPressure(2.3);
for (int i = 0; i < NBR_WHEEL; i++)
{
    cout << "Roue : " << i << " pression : " << c.get_wheel(i).getPressure() << endl;
}
Roue : 0 pression : 2.3
Roue : 1 pression : 2.3
Roue : 2 pression : 2.3
Roue : 3 pression : 2.3

Solutions