Recapitulação: Greeter
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 43 de 61.
Desafio
FácilVamos construir um sistema Greeter que demonstra polimorfismo através de ponteiros de função — o mesmo tipo de struct produzindo saídas diferentes com base em qual função de saudação está conectada.
Você organizará seu código em três arquivos:
greeter.h: Defina sua interface de saudação aqui. Crie um tipo de ponteiro de função chamadoGreetFuncque recebe umconst char*(um nome para saudar) e não retorna nada. Em seguida, defina uma structGreetercontendo umlanguage(umconst char*) e um ponteiro de funçãogreetdo tipoGreetFunc.greeter.c: Implemente as funções de saudação que representam diferentes idiomas:greet_english— imprimeHello, name!greet_spanish— imprimeHola, name!
main.c: Reúna tudo aqui. Crie duas instâncias deGreeter— uma para inglês e outra para espanhol — cada uma conectada à sua respectiva função de saudação. Leia um nome como entrada e, em seguida, chame a funçãogreetem ambos os greeters para demonstrar o comportamento polimórfico.
Seu programa receberá uma única entrada: um name para saudar.
Crie um greeter de inglês com o idioma definido como English e um greeter de espanhol com o idioma definido como Spanish. Para cada greeter, imprima seu idioma seguido por dois pontos e um espaço, e então 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 greeters 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 include guards em seu arquivo de cabeçalho.
Experimente você mesmo
#include <stdio.h>
#include <string.h>
#include "greeter.h"
int main() {
// Lê a entrada do nome
char name[100];
scanf("%s", name);
// TODO: Criar um greeter em Inglês
// - Definir language como "English"
// - Definir greet para a função greet_english
// TODO: Criar um greeter em Espanhol
// - Definir language como "Spanish"
// - Definir greet para a função greet_spanish
// TODO: Para cada greeter:
// 1. Imprimir o idioma seguido por ": "
// 2. Chamar a função greet com o name
return 0;
}
Todas as lições de Object Oriented Programming
1Fundamentos da Programação Modular
Arquivos de CabeçalhoInclude GuardsArquivos-FonteFunções EstáticasRecapitulação: Calculadora Modular4Encapsulamento
Conceito de Ponteiros OpacosDefinindo Structs OpacasGetters e SettersValidação em SettersRecapitulação: Caixa Secreta2Objetos e Métodos
Structs como ObjetosO Ponteiro 'Self'Const CorrectnessPonteiro vs ValorMétodos AuxiliaresRecapitulação: Point Manager5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta8Polimorfismo
Ponteiros de Função em StructsSimulando MétodosO Conceito de InterfaceImplementando InterfacesIteração PolimórficaRecapitulação: Greeter3Ciclo de Vida de Objetos
Padrão de ConstrutorPadrão de DestrutorInicialização na StackCópia ProfundaRecapitulação: String Wrapper6Herança via Composição
Incorporação de StructsA Regra do Primeiro MembroAcessando Membros PaiUpcastingRecapitulação: Hierarquia de Formas9Projeto: Desenhador de Formas
Visão Geral do ProjetoImplementação do Círculo