Menu
Coddy logo textTech

Implémentation du rectangle

Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 46 sur 61.

challenge icon

Défi

Facile

Continuons à construire le projet Shape Drawer en implémentant Rectangle : une autre forme concrète qui intègre la structure de base Shape, comme nous l’avons fait avec Circle.

En vous appuyant sur votre projet existant, vous allez ajouter les fonctionnalités du rectangle dans les fichiers suivants :

  • shape.h : conservez votre interface de base Shape avec les types de pointeurs de fonction DrawFunc et AreaFunc des leçons précédentes.
  • circle.h et circle.c : conservez votre implémentation de Circle de la leçon précédente.
  • rectangle.h : définissez votre structure Rectangle ici. Un rectangle intègre Shape comme son premier membre et ajoute les champs width et height (tous deux de type double). Déclarez une fonction constructeur create_rectangle qui prend les paramètres width et height et renvoie un Rectangle par valeur.
  • rectangle.c : implémentez le comportement spécifique au rectangle :
    • draw_rectangle : affiche Drawing Rectangle with width: X.XX and height: X.XX (les deux valeurs étant affichées avec 2 décimales)
    • area_rectangle : renvoie width × height
    • create_rectangle : initialise un Rectangle, relie les pointeurs de fonction de Shape intégré aux fonctions du rectangle, définit les dimensions et renvoie le rectangle
  • main.c : démontrez que les deux formes fonctionnent avec la même interface. Lisez deux entrées : la largeur et la hauteur d’un rectangle. Créez un rectangle à l’aide de votre constructeur, puis appelez à la fois draw et area via les pointeurs de fonction de Shape intégré. Affichez l’aire avec 2 décimales.

Votre programme recevra deux entrées : les valeurs width et height (sous forme de nombres à virgule flottante).

Exemple de sortie lorsque les entrées sont 4.0 et 3.0 :

Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00

Exemple de sortie lorsque les entrées sont 7.5 et 2.5 :

Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75

Comme avec Circle, le Rectangle intègre Shape comme son premier membre, ce qui vous permet d’accéder aux pointeurs de fonction via le membre intégré. Ce modèle cohérent permet le polymorphisme : les deux formes peuvent être traitées uniformément via leur interface Shape. N’oubliez pas d’utiliser des gardes d’inclusion dans tous les fichiers d’en-tête.

Essayez vous-même

#include <stdio.h>
#include "shape.h"
#include "rectangle.h"

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: Créer un rectangle en utilisant create_rectangle(width, height)
    
    // TODO: Appeler draw via le pointeur de fonction de la Shape embarquée
    
    // TODO: Appeler area via le pointeur de fonction de la Shape embarquée
    // TODO: Afficher l'aire avec 2 décimales : "Area: %.2f\n"
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C en ligne