Cours:PooTD1 qtcreator

De troyesGEII
Révision datée du 7 septembre 2023 à 09:20 par Bjacquot (discussion | contributions) (Écriture d'une classe Complexe)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Projet QT Creator : classe Vecteur

Un premier projet

  • Créer un projet C++ (application non-qt) avec QtCreator avec les fichiers suivants:

Fichier d'entête vecteur.h :

#ifndef VECTEUR_H
#define VECTEUR_H

class Vecteur
{
    public:
        Vecteur(float _x, float _y);
        float getX();
        float getY();
        float norme();
        float prodscal(Vecteur v);
        void affiche();
    private:
        float x;
        float y;
};

#endif // VECTEUR_H

Fichier d'implémentation vecteur.cpp

#include "vecteur.h"
#include <iostream>
#include <math.h>

using namespace std;

Vecteur::Vecteur(float _x, float _y)
{
    x = _x;
    y = _y;
}

float Vecteur::getX()
{
    return x;
}


float Vecteur::getY()
{
    return y;
}

float Vecteur::norme()
{
    return sqrt(x*x + y*y);
}

float Vecteur::prodscal(Vecteur v)
{
    return x*v.x + y*v.y;
}

void Vecteur::affiche()
{
    cout << "{ " << x << " ; " << y << " }" << endl;
}

Questions

  • Quels sont les attributs de cette classe ?
  • Quelles sont ses méthodes ?
  • Dessiner le diagramme UML de la classe Vecteur.
  • Modifier la fonction main() (dans le fichier main.cpp) pour
    • Créer un vecteur v (par exemple (1,2)) puis l'afficher
    • Calculer et afficher sa norme (utiliser cout)
    • Créer un second vecteur v2
    • Calculer et afficher le produit scalaire entre v et v2

Écriture d'une classe Complexe

  • Créer un projet C++ (application non-qt) avec QtCreator.
  • Modifier le projet afin d'ajouter la classe Complexe dotée de ces attributs :
double re;
double im;

et de cette méthode :

void Complexe::affiche() {
    cout << re << "+" << im << "i" << endl;
}

Le programme principal sera le suivant.

#include <iostream>
using namespace std;
int main() {
    Complexe z1;
    cout << "coucou" << endl;
    cout << "z1=";
    z1.affiche();
}
Compiler et exécuter le projet.
  • Quels sont les attributs de la classe Complexe ainsi définie ? Quelles sont ses méthodes ?
  • Ajouter à la classe un constructeur dont voici le squelette :
Complexe (double _re, double _im) {
    // à compléter
}
  • Ajouter à la classe une méthode permettant d’ajouter un nombre complexe :
Complexe Complexe::add(Complexe z) {
    // à compléter
}

qui permet de retourner un complexe correspondant à l’addition du nombre courant avec un nombrez. Exemple d’utilisation :

Complexe z1{0,1};
Complexe z2{1,0};
Complexe z3 = z1.add(z2);
  • Ajouter des getters et des setters aux attributs.
  • Ajouter des méthodes : produit de deux complexes, conjugué, …
  • Le cas échéant, vous pouvez reprendre le TD de S1 sur les nombres complexes : Cours:TdComplexe

Corrigé

Une correction possible