삽질의 현장/- .NET

#042_닷넷(.NET)_.Net Framework 기본 - 인터페이스 (1)

shovelman 2015. 10. 29. 16:07


안녕하세요 삽잡이입니다.


이번 시간에는 진짜로 인터페이스에 대해서 알아보도록하겠습니다...


interface는 굉장히 중요합니다.

모든 것들의 핵심은 interface라고 해도 과언이 아닐정도이지요...


객체가 상속, 다형성, 캡슐화를 통해 구현되는 이유를 아시겠습니까?

바로, '왠만한 것은 다 감추기 위해서'입니다.

최선의 것만 알고, 나머지는 내부에서 알아서 할것이니 구체적인 것은 알 필요 없고 

사용하고자 하는 클라이언트가 요구하는 메시지만 던질 수 있도록하자는 것이지요...

이것이 핵심입니다.

그런데 이 모든 내용들은 모두 interface를 내포하고 있습니다. 어마어마하군요...




객체지향에서 객체는 메시지를 통해 서로 간에 주고 받는 일을 합니다.

이 의미는 수 많은 객체들이 서로 객체들과 메시지를 통해 대화한다는 소리입니다.


이 객체와 객체들이 메시지를 주고받는 집합에서 

'메시지'가 바로 '인터페이스'라고 부를 수 있습니다.


구현할 때야 객체의 내부적인 내용들이 중요하겠지만,

클라이언트 즉, 외부에서는 객체의 내용물이 아닌 메시지가 중요하겠지요.

이 메시지 처리를 위해서 인터페이스가 중요한 것입니다.


설계에서 가장 중요한 것이 바로 인터페이스 설계입니다.



Person이라는 객체가 있다면, 

인터페이스 설계에서는 어떤 객체, 클래스던지 

'어떤 인터페이스'를 갖게할 것인지가 기본 중 기본입니다.


Person을 상속받는 타입이라면 모두 

Eat, Run, Sleep, Study 에 대한 기능을 가져야하겠지요.

아무튼... 객체지향 설계에서 가장 핵심은 바로, 인터페이스 설계임을 알아두시길 바랍니다.



네모난 항목들은 모두 다 '클래스'입니다.

그리고 이 클래스들이 모여 '클래스 계층 구조'를 이루게 됩니다.

클래스는 개념의 묶음을 나타내기 때문에, 

이 클래스 계층 구조는 '개념간의 계층 구조'라고 말할 수 있겠지요...

모든 실세계의 객체들도 개념간의 계층 구조들로 이루어져있습니다.


정리하자면, 개념을 표현한 것이 클래스이기때문에

클래스간에 게층구조가 개념의 계층 구조라고 부를 수 있다 이겁니다.


그런데, 인터페이스는 말 그대로 '인터페이스'입니다... 클래스와 다르다 이겁니다.

즉, Study, Eat, Sleep과 같이 문법을 하나 만들어내는 것입니다.

개념을 표현하는 것이 아닌 인터페이스 그 자체이지요...



이번 시간은 여기까지 하도록 하겠습니다.

이상 삽잡이였습니다!