Menu
CoddyTech

Revisão: Greeter

Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 43 de 61.

challenge icon

Desafio

Fácil

Vamos criar um sistema Greeter que demonstra polimorfismo por meio de ponteiros de função: o mesmo tipo de struct produz diferentes saídas dependendo de qual função de saudação está atribuída.

Você organizará seu código em três arquivos:

  • greeter.h: Defina aqui sua interface de saudação. Crie um tipo de ponteiro de função chamado GreetFunc que recebe um const char* (um nome para saudar) e não retorna nada. Em seguida, defina uma struct Greeter que contenha um language (um const char*) e um ponteiro de função greet do tipo GreetFunc.
  • greeter.c: Implemente as funções de saudação que representam diferentes idiomas:
    • greet_english: imprime Hello, name!
    • greet_spanish: imprime Hola, name!
  • main.c: Reúna tudo aqui. Crie duas instâncias de Greeter, uma para inglês e outra para espanhol, cada uma associada à sua respectiva função de saudação. Leia um nome como entrada e, em seguida, chame a função greet em ambos os saudadores para demonstrar o comportamento polimórfico.

Seu programa receberá uma única entrada: um nome para saudar.

Crie um saudador em inglês com o idioma definido como English e um saudador em espanhol com o idioma definido como Spanish. Para cada saudador, imprima seu idioma seguido de dois-pontos e um espaço; em seguida, chame sua função greet com o nome de entrada.

Exemplo de saída quando a entrada é Maria:

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

Exemplo de saída quando a entrada é Carlos:

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

Ambos os saudadores são do mesmo tipo Greeter, mas produzem saudações diferentes porque cada um tem uma função diferente atribuída ao seu membro greet. Lembre-se de usar guardas de inclusão no arquivo de cabeçalho.

Experimente você mesmo

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

int main() {
    // Leia o nome fornecido
    char name[100];
    scanf("%s", name);
    
    // TODO: Crie um saudador em inglês
    // - Defina language como "English"
    // - Defina greet como a função greet_english
    
    
    // TODO: Crie um saudador em espanhol
    // - Defina language como "Spanish"
    // - Defina greet como a função greet_spanish
    
    
    // TODO: Para cada saudador:
    // 1. Imprima language seguido de ": "
    // 2. Chame a função greet com o nome
    
    
    return 0;
}

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C online