Menu
Coddy logo textTech

Implémentation du rectangle

Fait partie de la section Object Oriented Programming du Journey C de Coddy — leçon 46 sur 61.

challenge icon

Défi

Facile

Continuons la construction du projet Shape Drawer en implémentant le Rectangle — une autre forme concrète qui intègre la structure de base Shape, tout comme nous l'avons fait avec Circle.

En vous appuyant sur votre projet existant, vous ajouterez la fonctionnalité rectangle dans ces fichiers :

  • 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 retourne 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 affichées avec 2 décimales)
    • area_rectangle — retourne width × height
    • create_rectangle — initialise un Rectangle, relie les pointeurs de fonction de la Shape intégrée aux fonctions du rectangle, définit les dimensions et retourne le rectangle
  • main.c : Démontrez le fonctionnement des deux formes à travers la même interface. Lisez deux entrées : width et height pour un rectangle. Créez un rectangle à l'aide de votre constructeur, puis appelez à la fois draw et area via les pointeurs de fonction de la Shape intégrée. 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

Tout comme pour Circle, le Rectangle intègre Shape comme son premier membre, vous permettant d'accéder aux pointeurs de fonction via le membre intégré. Ce modèle cohérent est ce qui 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 intégrée
    
    // TODO: Appeler area via le pointeur de fonction de la Shape intégrée
    // TODO: Afficher l'aire avec 2 décimales : "Area: %.2f\n"
    
    return 0;
}

Toutes les leçons de Object Oriented Programming