공부/C++

인터페이스(interface)의 개념

셩잇님 2023. 1. 25. 01:24
반응형

 

 

1. 인터페이스란?

인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다.  Java나 C# 등의 다른 객체 지향 언어에서는 인터페이스 형식을 제공하지만, C++언어에서는 인터페이스 형식을 제공하지는 않지만 순수 가상 메서드를 이용하여 정의할 수 있습니다.

 

인터페이스는 멤버 필드나 구체적으로 구현한 메서드를 갖지 않고 특정 기능을 약속한 메서드만 갖습니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 모든 멤버를 public으로 접근 지정합니다. C++ 언어에서는 구조체(struct)의 기본 값이 public 이여서 구조체를 이용하여 인터페이스를 정의하는 이들도 많습니다. 물론 클래스(class)를 통해서 인터페이스를 만들 수 있습니다. 아래 예제는 구조체와 클래스를 이용하여 인터페이스의 기본 형식을 제공합니다.

// 구조체를 이용한 interface
#define interface struct

interface IPlay
{
    virtual void Play() = 0;
};

// 클래스를 이용한 interface
#define interface class

interface IPlay 
{
public:
    virtual void Play() = 0;
};

 

또한 개발자들 사이에 인터페이스 이름 규칙은 I로 시작하고 I뒤에 약속하는 기능을 붙이고 있습니다. 따라서 Play 기능을 약속하는 인터페이스는 IPlay라고 명명합니다. 물론 인터페이스를 기반으로 파생한 형식은 약속한 기능을 재정의하여 구체적으로 구현하여야 개체를 생성할 수 있습니다. 아래는 인터페이스를 이용한 예제입니다.

//인터페이스 정의를 통해 같은 방법으로 다양한 형식 개체 사용
//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;
}

위 예제에서는 인터페이스 IPlay에서 파생한 Man 클래스에서 약속한 기능 Play를 재정의하여 사용합니다.

 

실행 결과

홍길동 연주하다.

 

 


 

 

출처 : https://ehpub.co.kr/%EB%94%94%EB%94%A4%EB%8F%8C-c-35-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-interface/

 

[디딤돌 C++] 35. 인터페이스 (INTERFACE) – 언제나 휴일

이번에는 인터페이스(interface)를 살펴볼게요. 인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. Java나 C# 등의 다른 OOP언어에서는 인터페이스 형식을 제공합니다. C++언어에

ehpub.co.kr

 

 

 

반응형