안녕하세요 삽잡이입니다.
이번 시간에는 진짜로 인터페이스에 대해서 알아보도록하겠습니다...
interface는 굉장히 중요합니다.
모든 것들의 핵심은 interface라고 해도 과언이 아닐정도이지요...
객체가 상속, 다형성, 캡슐화를 통해 구현되는 이유를 아시겠습니까?
바로, '왠만한 것은 다 감추기 위해서'입니다.
최선의 것만 알고, 나머지는 내부에서 알아서 할것이니 구체적인 것은 알 필요 없고
사용하고자 하는 클라이언트가 요구하는 메시지만 던질 수 있도록하자는 것이지요...
이것이 핵심입니다.
그런데 이 모든 내용들은 모두 interface를 내포하고 있습니다. 어마어마하군요...
객체지향에서 객체는 메시지를 통해 서로 간에 주고 받는 일을 합니다.
이 의미는 수 많은 객체들이 서로 객체들과 메시지를 통해 대화한다는 소리입니다.
이 객체와 객체들이 메시지를 주고받는 집합에서
'메시지'가 바로 '인터페이스'라고 부를 수 있습니다.
구현할 때야 객체의 내부적인 내용들이 중요하겠지만,
클라이언트 즉, 외부에서는 객체의 내용물이 아닌 메시지가 중요하겠지요.
이 메시지 처리를 위해서 인터페이스가 중요한 것입니다.
설계에서 가장 중요한 것이 바로 인터페이스 설계입니다.
Person이라는 객체가 있다면,
인터페이스 설계에서는 어떤 객체, 클래스던지
'어떤 인터페이스'를 갖게할 것인지가 기본 중 기본입니다.
Person을 상속받는 타입이라면 모두
Eat, Run, Sleep, Study 에 대한 기능을 가져야하겠지요.
아무튼... 객체지향 설계에서 가장 핵심은 바로, 인터페이스 설계임을 알아두시길 바랍니다.
네모난 항목들은 모두 다 '클래스'입니다.
그리고 이 클래스들이 모여 '클래스 계층 구조'를 이루게 됩니다.
클래스는 개념의 묶음을 나타내기 때문에,
이 클래스 계층 구조는 '개념간의 계층 구조'라고 말할 수 있겠지요...
모든 실세계의 객체들도 개념간의 계층 구조들로 이루어져있습니다.
정리하자면, 개념을 표현한 것이 클래스이기때문에
클래스간에 게층구조가 개념의 계층 구조라고 부를 수 있다 이겁니다.
그런데, 인터페이스는 말 그대로 '인터페이스'입니다... 클래스와 다르다 이겁니다.
즉, Study, Eat, Sleep과 같이 문법을 하나 만들어내는 것입니다.
개념을 표현하는 것이 아닌 인터페이스 그 자체이지요...
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#044_닷넷(.NET)_.Net Framework 기본 - 인터페이스(일반적인 구현 & 명시적 구현) (0) | 2015.10.29 |
---|---|
#043_닷넷(.NET)_.Net Framework 기본 - 인터페이스 (2) (0) | 2015.10.29 |
#041_닷넷(.NET)_.Net Framework 기본 - 인터페이스 Intro (0) | 2015.10.29 |
#040_닷넷(.NET)_.Net Framework 기본 - 세대 (0) | 2015.10.29 |
#039_닷넷(.NET)_.Net Framework 기본 - 비관리 리소스 종결 (0) | 2015.10.29 |