4. 5 실현관계 (Realization)
실현관계는 추상적으로 행위에 대한 약속만 정의하고 이를 기반으로 약속된 행위를 구체적으로 정의할 경우에 약속하는 형식과 구체적 정의를 하는 형식 간의 관계입니다. 여기에서 행위에 대한 약속을 정의한 추상 형식을 인터페이스라 부르며 인터페이스를 구현 약속하는 클래스와의 관계를 실현관계라 합니다. 이때 약속된 행위는 묵시적으로 접근 지정자가 public입니다.
[그림 4.10]
C++ 언어에서는 행위에 대한 추상적인 약속은 순수 가상 함수를 형식 내에 캡슐화하는 방식으로 할 수 있습니다. 순수 가상 함수를 형식 내에 캡슐화할 때에는 virtual 키워드를 앞에 붙이고 메서드 뒤에 =0;를 명시하면 됩니다. 그리고 소스 코드에서 해당 형식에 대한 구체적 구현은 하지 않습니다.
virtual Do()=0;
Java나 C#에서는 인터페이스를 별도의 형식으로 제공하고 있지만 C++에는 인터페이스 형식을 지원하지 않습니다. 다만 COM 기술에서 #define interface struct 와 같이 매크로 상수를 정의하고 있으며 interface 매크로 상수를 이용하여 순수 가상 함수들로만 구성된 형식을 인터페이스 형식처럼 사용하고 있습니다.
IStudy.h |
#pragma once
#define interface struct
interface IStudy { virtual void Study()=0; }; |
Stu.h |
#pragma once #include "IStudy.h"
class Stu : public IStudy { public: Stu(void); ~Stu(void); void Study(); };
|
Stu.cpp |
#include "Stu.h"
Stu::Stu(void) { }
Stu::~Stu(void) { } void Stu::Study() { } |
Test.cpp |
#include "Stu.h"
void main() { IStudy *istudy = new Stu(); istudy->Study(); delete istudy; } |
(모든 동영상 강의는 무료입니다.)
'언어 자료구조 알고리즘 > Escort C++' 카테고리의 다른 글
[C++] 파생 시에 액세스 지정 (0) | 2016.04.15 |
---|---|
[C++] 무효화 된 멤버 사용하기 (0) | 2016.04.15 |
[C++] 무효화 (0) | 2016.04.15 |
[C++] 파생 개체 생성 과정 및 초기화 (0) | 2016.04.15 |
[C++] 일반화 관계와 파생 (0) | 2016.04.15 |
[C++] 의존 관계 (Dependency) (0) | 2016.04.15 |
[C++] 연관(Association) 관계와 직접 연관(Directed Association) 관계 (0) | 2016.04.15 |
[C++] 집합(Aggregation)관계와 구성(Composition) 관계 (0) | 2016.04.15 |
[C++} 4. 1 일반화 (Generalization) 관계 (0) | 2016.04.15 |
[C++] 캡슐화 실습 소스 코드 (0) | 2016.04.15 |