Resumen: Greeter
Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 43 de 61.
Desafío
FácilConstruyamos 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 llamadoGreetFuncque acepte unconst char*(un nombre al que saludar) y no devuelva nada. Después 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 aquí todos los elementos. Crea dos instancias deGreeter, 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óngreetde 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
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írculoImplementación del rectánguloUso polimórficoContenedor de figurasPractica por tu cuenta: Compilador de C online