Objectif: Appliquer les connaissances de C++ acquises.
Le but de cet exercice est la création d'une classe abstraite PFunction
et de ses sous-classes représentant des courbes paramétriques (données par des fonctions du type f(t) = (x(t), y(t)) qui calculent un point à partir d'un paramètre t).
Cette exercice utilise la classe PtVec
qui a été mise en oeuvre lors de l'exercice précédent.
Lors de cet exercice, vous allez implémenter quatre classes: PFunction
, Circle
, Cycloid
et Astroid
. La classe PFunction
est la super-classe des trois autres:
La classe PFunction
sert de classe de base dont les autres héritent. Elle réunit toutes les fonctionnalités communes aux fonctions paramétriques :
setDomain()
et getDomain()
computePoint()
trace()
En plus, elle déclare une fonction abstraite f
:
virtual PtVec f(double t) = 0;
Explications : Le mot clé virtual
assure que les méthodes surchargées par les sous-classes seront exécutées lors de l'appel à la fonction f
. L'affectation = 0
déclare la fonction comme abstraite; c.-à-d. les sous-classes doivent implémenter cette fonction, sinon le compilateur ne peut pas instancier un tel objet.
Ces sous-classes implémentent :
f
qui prend comme argument le paramètre t et retourne un point (c'est-à-dire un objet de la classe PtVec
) calculé selon la définition de la fonction.Les fonctions paramétriques sont définies de la manière suivante :
Manipulation 3.1 : Créez la classe PFunction
et les trois sous-classes et comparez l'affichage (produit par le programme de test) avec cette image.
Conseils:
trace()
de la classe PFunction
fait appel à la fonction f
abstraite qui n'existera que dans les classes dérivées.trace()
. Une qui prend comme argument le nombre de subdivisions du domaine de définition et une deuxième qui ne prend pas d'argument mais appelle la première avec un argument 100
:
void trace(int steps) { ... }
void trace() { trace(100); }