Menu
Coddy logo textTech

Récapitulatif : Greeter

Fait partie de la section Object Oriented Programming 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 à travers les pointeurs de fonction — le même type de structure produisant des sorties différentes selon la fonction de salutation qui lui est associée.

Vous organiserez votre code sur trois fichiers :

  • greeter.h : Définissez votre interface de salutation ici. Créez un type de pointeur de fonction appelé GreetFunc qui prend un const char* (un nom à saluer) et ne retourne rien. Définissez ensuite une structure Greeter contenant un language (un const char*) et un pointeur de fonction greet de type GreetFunc.
  • greeter.c : Implémentez les fonctions de salutation qui représentent différentes langues :
    • greet_english — affiche Hello, name!
    • greet_spanish — affiche Hola, name!
  • main.c : Rassemblez tout ici. Créez deux instances de Greeter — une pour l'anglais et une pour l'espagnol — chacune reliée à sa fonction de salutation respective. Lisez un nom en entrée, puis appelez la fonction greet sur les deux greeters pour démontrer le comportement polymorphe.

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

Créez un greeter anglais avec le langage défini sur English et un greeter espagnol avec le langage défini sur Spanish. Pour chaque greeter, affichez sa langue suivie d'un deux-points et d'un espace, puis appelez sa fonction greet avec le nom saisi.

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 greeters sont du même type Greeter, pourtant ils produisent des salutations différentes car chacun possède une fonction différente assignée à son membre greet. N'oubliez pas d'utiliser des gardes d'inclusion dans votre fichier d'en-tête.

Essayez vous-même

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

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

Toutes les leçons de Object Oriented Programming