일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 언제나 휴일
- 표준 라이브러리 함수
- 추천
- 언제나휴일
- c언어
- 동영상 강의
- 강의
- 실습으로 다지는 c#
- 알고리즘
- 원격 제어 프로그램
- C++
- 동영상
- 안드로이드 앱 개발
- 캡슐화
- 소스 코드
- 네트워크 프로그래밍
- 파이썬
- 클래스 다이어그램
- Windows Forms
- 실습
- 졸업 작품 소재
- 프로젝트
- 충남 천안
- c#
- 유튜브 동영상 강의
- 표준 입출력
- 졸업 작품
- 무료 동영상 강의
- 산책하기 좋은 곳
- 소켓 통신
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C++] 35. 인터페이스 (INTERFACE) 본문
이번에는 인터페이스(interface)를 살펴볼게요. 인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. Java나 C# 등의 다른 OOP언어에서는 인터페이스 형식을 제공합니다. C++언어에서는 인터페이스 형식을 제공하지는 않지만 순수 가상 메서드를 이용하여 정의할 수 있습니다.
인터페이스는 멤버 필드나 구체적으로 구현한 메서드를 갖지 않고 특정 기능을 약속한 메서드만 갖습니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 모든 멤버를 public으로 접근 지정합니다.
C++언어에서는 구조체는 디폴트 가시성이 public이어서 구조체를 이용하여 인터페이스를 정의하는 이들도 많습니다.
#define interface struct
interface IPlay //구조체는 디폴트 가시성
{
virtual void Play()=0;
};
물론 class를 이용하여 인터페이스를 만들 수도 있습니다.
#define interface class
interface IPlay
{
public:
virtual void Play()=0;
};
개발자들 사이에 인터페이스 이름은 I로 시작하고 I뒤에 약속하는 기능을 붙이고 있어요. 따라서 Play 기능을 약속하는 인터페이스는 IPlay라고 명명합니다. 물론 인터페이스는 여러 개의 기능을 약속할 수 있겠죠. 이 때도 대표하는 기능을 이름에 포함하세요.
물론 인터페이스를 기반으로 파생한 형식은 약속한 기능을 재정의하여 구체적으로 구현하여야 개체를 생성할 수 있습니다. 다음은 인터페이스 IPlay에서 파생한 Man 클래스에서 약속한 기능 Play를 재정의하여 사용하는 예제 코드입니다.
//인터페이스 정의를 통해 같은 방법으로 다양한 형식 개체 사용
//Program.cpp
#include <iostream>
#include <string>
using namespace std;
#define interface struct
interface IPlay
{
virtual void Play()=0;
};
class Man:public IPlay
{
string name;
public:
Man(string name)
{
this->name = name;
}
virtual void Play()
{
cout<<name<<" 연주하다."<<endl;
}
};
void Concert(IPlay *iplay)
{
iplay->Play();
}
int main()
{
Man *man = new Man("홍길동");
Concert(man);
delete man;
return 0;
}
▷ 실행 결과
홍길동 연주하다.
'C & C++ > 디딤돌 C++' 카테고리의 다른 글
[C++] 39. 상속, 다형성 실습1 (상품, 할인 상품) (0) | 2024.04.08 |
---|---|
[C++] 38. C++에서의 형 변환 (0) | 2024.04.08 |
[C++] 37. 하향 캐스팅 (0) | 2024.04.08 |
[C++] 36. 다중 상속 (0) | 2024.04.08 |
[C++] 34. 추상 클래스(ABSTRACT CLASS) (0) | 2024.04.08 |
[C++] 33. 메서드의 다형성 (0) | 2024.04.07 |
[C++] 32. 형식의 다형성 (0) | 2024.04.07 |
[C++] 31. 다형성 개요 (0) | 2024.04.07 |