소개
이 랩에서는 C++ 에서 다형성 (polymorphism) 의 개념을 구현할 것입니다. 다형성은 객체 지향 프로그래밍 (Object Oriented Programming) 의 개념으로, 단일 함수가 다양한 방식으로 사용될 수 있도록 합니다. 다형성에는 두 가지 유형이 있습니다: 컴파일 시간 다형성 (compile-time polymorphism) 또는 정적 다형성 (static polymorphism) 과 런타임 다형성 (runtime polymorphism) 또는 동적 다형성 (dynamic polymorphism) 입니다. 이 랩에서는 런타임 또는 동적 다형성에 중점을 둘 것입니다.
새로운 main.cpp 파일 생성
먼저, ~/project 디렉토리에 main.cpp라는 이름의 새로운 C++ 파일을 생성합니다:
cd ~/project
touch main.cpp
다형성을 구현하는 코드 추가
이 단계에서는 Shape라는 클래스를 생성합니다. Shape 클래스는 area()라는 가상 함수 (virtual function) 를 갖습니다. 그런 다음 Shape 클래스를 상속하고 가상 함수 area()를 재정의 (override) 하는 Rectangle 및 Triangle 두 개의 클래스를 생성합니다. 클래스가 생성되면 Shape 클래스의 객체 배열을 생성한 다음 배열을 반복하여 각 객체의 area() 함수를 호출합니다.
#include <iostream>
using namespace std;
class Shape {
public:
virtual float area() {
return 0;
}
};
class Rectangle: public Shape {
public:
float area() {
cout << "Rectangle class area()" << endl;
return 0;
}
};
class Triangle: public Shape {
public:
float area() {
cout << "Triangle class area()" << endl;
return 0;
}
};
int main() {
Shape *shape;
Rectangle rec;
Triangle tri;
shape = &rec;
shape->area();
shape = &tri;
shape->area();
return 0;
}
코드를 컴파일하고 실행
이 단계에서는 다음 명령을 사용하여 코드를 컴파일하고 실행합니다:
g++ main.cpp -o main
./main
위 프로그램의 출력은 다음과 같습니다:
Rectangle class area()
Triangle class area()
요약
이 랩에서는 C++ 에서 다형성 (Polymorphism) 개념을 구현하는 방법을 배웠습니다. Shape라는 가상 함수 (virtual function) 를 가진 클래스를 생성했습니다. 그런 다음 Shape 클래스를 상속하고 가상 함수 area()를 재정의 (override) 하는 Rectangle 및 Triangle 두 개의 클래스를 생성했습니다. 마지막으로, Rectangle 및 Triangle 클래스의 객체를 생성하고 기본 클래스 Shape의 객체를 사용하여 area() 함수를 호출하여 각 클래스에 대한 호출이 이루어지도록 했습니다.



