Menu
Coddy logo textTech

요약: Greeter

Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 43번째.

challenge icon

챌린지

쉬움

Greeter 시스템을 만들어 함수 포인터를 통한 다형성을 보여 줍시다. 즉, 어떤 greeting function이 연결되어 있는지에 따라 동일한 struct type이 서로 다른 출력을 생성하도록 합니다.

코드를 세 개의 파일로 구성합니다.

  • greeter.h: 여기에서 greeter 인터페이스를 Define합니다. const char*(greet할 이름)를 받고 아무것도 반환하지 않는 GreetFunc이라는 function pointer type을 Create합니다. 그런 다음 language(const char*)와 GreetFunc type의 greet function pointer를 포함하는 Greeter struct를 Define합니다.
  • greeter.c: 서로 다른 언어를 나타내는 greeting functions를 Implement합니다.
    • greet_english: Hello, name!을 print합니다.
    • greet_spanish: Hola, name!을 print합니다.
  • main.c: 여기에서 모든 것을 하나로 결합합니다. 두 개의 Greeter 인스턴스를 Create합니다. 하나는 English용이고 다른 하나는 Spanish용이며, 각각 해당 greeting function에 연결합니다. 이름을 input으로 Read한 다음 두 greeter에서 greet function을 Call하여 다형성 동작을 보여 줍니다.

프로그램은 greet할 name 하나를 input으로 받습니다.

English로 설정된 language를 사용하는 English greeter와 Spanish로 설정된 language를 사용하는 Spanish greeter를 Create합니다. 각 greeter에 대해 해당 language 뒤에 콜론과 공백을 print한 다음, input name을 사용하여 해당 greet function을 Call합니다.

input이 Maria일 때의 출력 예시:

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

input이 Carlos일 때의 출력 예시:

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

두 greeter는 동일한 Greeter type이지만, 각각의 greet member에 서로 다른 function이 할당되어 있기 때문에 서로 다른 greeting을 생성합니다. header file에서 include guards를 사용하는 것을 잊지 마세요.

직접 해보기

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

int main() {
    // 이름 입력을 읽습니다
    char name[100];
    scanf("%s", name);
    
    // TODO: 영어 greeter 생성
    // - language를 "English"로 설정
    // - greet를 greet_english 함수로 설정
    
    
    // TODO: 스페인어 greeter 생성
    // - language를 "Spanish"로 설정
    // - greet를 greet_spanish 함수로 설정
    
    
    // TODO: 각 greeter에 대해:
    // 1. language 다음에 ": "를 출력
    // 2. name으로 greet 함수 호출
    
    
    return 0;
}

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러