Sujet Test 5 : objets
Vous avez 15min pour faire le test.
Rendu
Type de rendu
Rendu sur feuille.
Éléments de notation
Les principales questions sont les quatre premières (une bonne note si vous y répondez bien).
Sujet
On souhaite créer une classe Polynome pour manipuler des polynômes avec les fonctionnalités suivantes:
- un polynôme est représenté par la séquence des coefficients de ses monômes par ordre croissant de degré. Par exemple, $P(X) = 3 \cdot X^3 -0.5\cdot X + 1$ est représenté par $(1, -0.5, 0, 3)$.
- le constructeur prend en argument la séquence de coefficients.
- si
pest une instance dePolynomep.calcule_degré()renvoie le degré du polynômep.evalue(x)renvoie la valeur du polynôme enx(un flottant).str(p)renvoie une chaîne de caractères du style3 X ** 3 -0.5 X + 1.p.derive()renvoie un nouveau polynôme correspondant à la dérivée dep.p + qrenvoie un nouveau polynôme correspondant à la somme depet d'une autre instanceqdePolynome.p * qrenvoie un nouveau polynôme correspondant au produit depet d'une autre instanceqdePolynome.
On aimerait aussi créer une classe FractionRationnelle représentant des bestioles de la forme $R(X) = \frac{P(X)}{Q(X)}$ où $P$ et $Q$ sont deux polynômes ($Q\neq 0$).
Question 1
Faites un diagramme UML avec les classes Polynome et FractionRationnelle, et la relation entre ces classes. Pour FractionRationnelle, vous ferez apparaître deux méthodes issues de votre imagination (inutile de donner des explications, le diagramme UML est suffisamment explicite).
Question 2
Pourquoi vaut-il mieux utiliser un tuple plutôt qu'une liste pour stocker les coefficients d'un polynôme ?
Question 3
Donnez le code de la classe Polynome avec uniquement le constructeur et les méthodes calcule_degré, evalue.
Question 4
Donnez le code d'une fonction de test pour chacune des méthodes précédentes.
Question 5
Donnez le code de la classe FractionRationnelle avec uniquement son constructeur.
Question 6
Donnez le code des méthodes pour calculer la dérivée, la somme, le produit et la conversion en chaîne de caractères de polynômes.