Menu
Coddy logo textTech

Resumen: Greeter

Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 43 de 61.

challenge icon

Desafío

Fácil

Construyamos un sistema Greeter que demuestre el polimorfismo mediante punteros a funciones: el mismo tipo de estructura produce diferentes resultados según la función de saludo que se conecte.

Organizarás tu código en tres archivos:

  • greeter.h: Define aquí la interfaz de tu greeter. Crea un tipo de puntero a función llamado GreetFunc que acepte un const char* (un nombre al que saludar) y no devuelva nada. Después define una estructura Greeter que contenga un language (un const char*) y un puntero a función greet de tipo GreetFunc.
  • greeter.c: Implementa las funciones de saludo que representan diferentes idiomas:
    • greet_english: imprime Hello, name!
    • greet_spanish: imprime Hola, name!
  • main.c: Reúne aquí todos los elementos. Crea dos instancias de Greeter, una para inglés y otra para español, y conecta cada una con su función de saludo correspondiente. Lee un nombre como entrada y después llama a la función greet de ambos greeters para demostrar el comportamiento polimórfico.

Tu programa recibirá una única entrada: un nombre al que saludar.

Crea un greeter en inglés con el idioma establecido en English y un greeter en español con el idioma establecido en Spanish. Para cada greeter, imprime su idioma seguido de dos puntos y un espacio; después, llama a su función greet con el nombre de entrada.

Salida de ejemplo cuando la entrada es Maria:

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

Salida de ejemplo cuando la entrada es Carlos:

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

Ambos greeters son del mismo tipo Greeter, pero producen saludos diferentes porque cada uno tiene una función distinta asignada a su miembro greet. Recuerda usar protectores de inclusión en tu archivo de encabezado.

Pruébalo tú mismo

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

int main() {
    // Lee la entrada del nombre
    char name[100];
    scanf("%s", name);
    
    // TODO: Crea un greeter en inglés
    // - Establece language a "English"
    // - Establece greet a la función greet_english
    
    
    // TODO: Crea un greeter en español
    // - Establece language a "Spanish"
    // - Establece greet a la función greet_spanish
    
    
    // TODO: Para cada greeter:
    // 1. Imprime el language seguido de ": "
    // 2. Llama a la función greet con el name
    
    
    return 0;
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C online