Menu
Coddy logo textTech

Récapitulatif : Greeter

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

challenge icon

Défi

Facile

Construisons un système Greeter qui démontre le polymorphisme grâce aux pointeurs de fonction : le même type de structure produit des sorties différentes selon la fonction de salutation qui lui est associée.

Tu organiseras ton code sur trois fichiers :

  • greeter.h : définis ici ton interface de salutation. Crée un type de pointeur de fonction appelé GreetFunc qui prend un const char* (un nom à saluer) et ne renvoie rien. Définis ensuite une structure Greeter contenant un language (un const char*) et un pointeur de fonction greet de type GreetFunc.
  • greeter.c : implémente les fonctions de salutation qui représentent différentes langues :
    • greet_english : affiche Hello, name!
    • greet_spanish : affiche Hola, name!
  • main.c : rassemble tout ici. Crée deux instances de Greeter, une pour l’anglais et une pour l’espagnol, chacune associée à sa fonction de salutation respective. Lis un nom en entrée, puis appelle la fonction greet sur les deux salutateurs afin de démontrer un comportement polymorphe.

Ton programme recevra une seule entrée : un nom à saluer.

Crée un salutateur anglais avec la valeur English pour language et un salutateur espagnol avec la valeur Spanish pour language. Pour chaque salutateur, affiche sa langue suivie de deux-points et d’une espace, puis appelle sa fonction greet avec le nom fourni en entrée.

Exemple de sortie lorsque l’entrée est Maria :

English: Hello, Maria!
Spanish: Hola, Maria!

Exemple de sortie lorsque l’entrée est Carlos :

English: Hello, Carlos!
Spanish: Hola, Carlos!

Les deux salutateurs sont du même type Greeter, et produisent pourtant des salutations différentes, car chacun possède une fonction différente affectée à son membre greet. N’oublie pas d’utiliser des gardes d’inclusion dans ton fichier d’en-tête.

Essayez vous-même

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // Lire l'entrée du nom
    char name[100];
    scanf("%s", name);
    
    // TODO: Créer un greeter anglais
    // - Définir language à "English"
    // - Définir greet à la fonction greet_english
    
    
    // TODO: Créer un greeter espagnol
    // - Définir language à "Spanish"
    // - Définir greet à la fonction greet_spanish
    
    
    // TODO: Pour chaque greeter :
    // 1. Afficher le language suivi de ": "
    // 2. Appeler la fonction greet avec le name
    
    
    return 0;
}

Toutes les leçons de Programmation Orientée Objet

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