Talbe de Matière

  1. Fractions
  2. Vector Design
  3. Bouncing Balls

Fractions

Dans cet exercice basique, on cherche à developper une classe Fraction pour représenter une fraction mathématique de la forme \(F = \dfrac{p}{q}\). Où \(p\) est le nominateur et q est le dénominateur.

Un diagramme qui résume l’ensemble des fonctionalité de cette classe est représenté la figure:

Représentation de la classe Fraction .
  • La classe possède deux constructeurs.
    • Le premier est par défaut.
    • Le deuxième Fraction(int num, int denom) reçoit deux arguments pour initier les valeurs \(p\) et \(q\).
  • La classe offre deux getters:
    • getNum() et getDenom(): pour récupérer les valeurs de \(p\) et \(q\) respéctivement.
    • La fonction decimal renvoie le résultat réel de cette fraction.
  • Vous devez surchager les opérateurs suivants:
  1. Opérateur d’addition operator +.
  2. Opérateur de multiplication operator *.
  3. Opérateur de flux operator << .

Le code de départ est dans fractions.zip

Vector Design

Le but de cet exercice est d’utiliser vos connaissances sur le modèle de classes de C++ pour implémenter vous même un vecteur de Stanford avec toute l’intelligence et les méthodes fournies. Le diagramme de cette classe est le suivant:

Un projet simple (qui ne contient pas de tests) pour démarer votre implémentaiton est dans Vectors.zip

Bouncing Balls

Dans cet exercice, vous allez être exposés aux fonctionnement graphiques de la bibliothèque Stanford. Votre tache consiste à initialiser une fenêtre graphique et de d’y ajouter des balles qui se déplace librement dans celle ci.

Le code de départ de ce projet est dans Bouncing_balls.zip

Ces notes vont vous aider à démarrer le projet en vous montrant comment:

  1. Créer une fenêtre graphique qui peut contenir des objet.
  2. Ajouter un objet GOval qui peut représenter une balle.
  3. Comment déplacer ces objets dans la fenêtre.

Pour le reste c’est à vous de concevoir votre modèle de classes et de l’implémenter pour obtenir la simulation illustrée.

Graphical Window

Afin de construire une fenêtre graphique, on utilise un objet de la classe GWindow qui figure dans le header gwindow.h.

  • Allez dans le fichier main.cpp puis ajouter la ligne suivante:
// Créer une fenêtre de taille 600, 600
Gwindow win(600, 600);

// Fermer l'application avec la fermeture de cette fenêtre.
win.setCloseOperation(GWindow::CLOSE_EXIT);
  • Vous devoir une fenêtre vide, qui occupe une taille de \(600 \times 600\).
  • Pour obtenir la taille de cette fenêtre, on peut utiliser les deux accesseurs:
// Obtenir la largeur
wind.getWidth();

//Obtenir la longueur
wind.getHeight();

Maintenant qu’on possède une fenêtre graphique, on peut la remplir par des objets graphiques comme un cercle.

Adding Objects

La bibliothèque Stanford offre plusieurs objet graphiques qui peut être tracés dans une fenêtre GWindow. Les objet qu’il faut retenir sont:

  1. GLine(x0, y0, x1, y1): pour tracer une ligne entre \(A(x_0, y_0)\) et \(B(x_1, y_1)\).
  1. GOval(x, y, r1, r2): pour tracer un ellipse de centre \(C(x,y)\) et deux rayons \(r_1\) et \(r_2\).
  1. GRect(x, y, l, h): pour tracer un rectangle dont le corner

Ainsi afin d’ajouter un cercle qui va représenter une boule ajouter le code suivant:

//Creating a ball
GOval * oval = new GOval(300, 300, 40, 40);

//set Color
oval->setFillColor(45133);
oval->setFilled(true);

//Add the ball to the window
win.add(oval);

Vous devoir voir apparaitre une boule

Moving Objects

Maintenant qu’on peut ajouter des balles dans l’écran, nous allons essayer des les déplacer. L’objet GOval possède une méthode move.

oval->move(dx, dy); // Déplacer par dx et dy

Le problème est que cette méthode ** ne vérifie pas** si l’objet sort des dimensions de la fenêtre.

Votre tâche est de coder le bon déroulement de cette ball pour qui’elle puisse bondir au moment de son contact avec un bord comme illustré la figure suivante.

Final result

Le résultat final de votre simulation doit avoir plusieurs balls qui se déplacent librement ( sans collision) dans votre boite.