Resumen: Greeter
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 43 de 61.
Desafío
FácilVamos a construir un sistema Greeter que demuestre el polimorfismo a través de punteros a funciones: el mismo tipo de estructura produciendo diferentes salidas según qué función de saludo esté conectada.
Organizarás tu código en tres archivos:
greeter.h: Define aquí tu interfaz de saludador. Crea un tipo de puntero a función llamadoGreetFuncque reciba unconst char*(un nombre al que saludar) y no devuelva nada. Luego, define una estructuraGreeterque contenga unlanguage(unconst char*) y un puntero a funcióngreetde tipoGreetFunc.greeter.c: Implementa las funciones de saludo que representan diferentes idiomas:greet_english— imprimeHello, name!greet_spanish— imprimeHola, name!
main.c: Reúne todo aquí. Crea dos instancias deGreeter— una para inglés y otra para español — cada una conectada a su respectiva función de saludo. Lee un nombre como entrada, luego llama a la funcióngreeten ambos saludadores para demostrar el comportamiento polimórfico.
Tu programa recibirá una única entrada: un nombre al que saludar.
Crea un saludador en inglés con el idioma establecido en English y un saludador en español con el idioma establecido en Spanish. Para cada saludador, imprime su idioma seguido de dos puntos y un espacio, luego llama a su función greet con el nombre de entrada.
Ejemplo de salida cuando la entrada es Maria:
English: Hello, Maria!
Spanish: Hola, Maria!Ejemplo de salida cuando la entrada es Carlos:
English: Hello, Carlos!
Spanish: Hola, Carlos!Ambos saludadores son del mismo tipo Greeter, sin embargo, producen saludos diferentes porque cada uno tiene una función diferente asignada a su miembro greet. Recuerda usar guardas de inclusión en tu archivo de cabecera.
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: Crear un greeter en inglés
// - Establecer language a "English"
// - Establecer greet a la función greet_english
// TODO: Crear un greeter en español
// - Establecer language a "Spanish"
// - Establecer greet a la función greet_spanish
// TODO: Para cada greeter:
// 1. Imprimir el language seguido de ": "
// 2. Llamar a la función greet con el name
return 0;
}
Todas las lecciones de Object Oriented Programming
1Fundamentos de programación modular
Archivos de cabeceraGuardas de inclusiónArchivos fuenteFunciones estáticasRepaso: Calculadora modular4Encapsulamiento
Concepto de punteros opacosDefinición de structs opacosGetters y SettersValidación en settersResumen: Caja secreta7Punteros a funciones
Declaración de punteros a funcionesLlamada a punteros a funcionesTypedef para punteros a funcionesPasar funciones como argumentosRepaso: Dispatch de calculadora10Contenedores genéricos
Repaso de punteros voidWrapper genéricoSwap genéricoComparación genéricaRepaso: Array genérico2Objetos y métodos
Structs como objetosEl puntero 'Self'Const CorrectnessPuntero vs. ValorMétodos auxiliaresResumen: Point Manager5Proyecto: Cuenta bancaria simple
Configuración del proyectoImplementación de la cuenta3Ciclo de vida de los objetos
Patrón ConstructorPatrón DestructorInicialización en StackCopia profundaResumen: String Wrapper6Herencia mediante composición
Incrustación de StructsLa regla del primer miembroAcceso a miembros padreUpcastingResumen: Jerarquía de formas9Proyecto: Dibujador de figuras
Descripción general del proyectoImplementación del círculo