요약: Greeter
Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 43번째.
챌린지
쉬움Greeter 시스템을 만들어 함수 포인터를 통한 다형성을 보여 줍시다. 즉, 어떤 greeting function이 연결되어 있는지에 따라 동일한 struct type이 서로 다른 출력을 생성하도록 합니다.
코드를 세 개의 파일로 구성합니다.
greeter.h: 여기에서 greeter 인터페이스를 Define합니다.const char*(greet할 이름)를 받고 아무것도 반환하지 않는GreetFunc이라는 function pointer type을 Create합니다. 그런 다음language(const char*)와GreetFunctype의greetfunction pointer를 포함하는Greeterstruct를 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에서greetfunction을 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 컴파일러