자작 델파이/C++Builder 강좌
제가 직접 작성한 델파이 및 C++Builder에 대한 강좌나 팁을 올리는 공간입니다.
글 수 233
안녕하세요? 홍환민입니다.
델마당 자유게시판에서 인터페이스에 대한 논의가 있었고, 인터페이스에 대해서
설명하는 글을 써 주실분이 없나.. 하는 얘기가 있어서 쓸까 말까 고민하다가
이렇게 그냥 간단히 써보자 하고 글을 쓰기 시작했습니다. ^^
인터페이스(Interface)란 무엇일까요..
일단 뭔가를 알기 위해 가장 먼저 해야 할 일은 그 단어의 정의를 알아보는 건데요..
인터페이스(interface)는 사물 간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적 혹은 영속적인 접근을 목적으로 만들어진 물리적, 가상적 매개체를 의미한다.
위의 정의는 위키피디아에서 퍼온 겁니다.
위 정의는 좀 어려운데요...
제 나름대로의 정의로는 인터페이스는 "뭔가 대화를 하기 위한 약속" 입니다.
예를 들어, 사람과 사람 사이에는 언어를 통해서 대화를 합니다.
각 나라의 사람들은 한국어, 영어와 같은 자국의 언어를 통해서, 서로 의사소통을 하기 위해서
일종의 약속을 정해놓은 것입니다.
UI(유저인터페이스)의 경우도 사람과 어플리케이션 간의 조작을 위한 일종의 약속입니다.
에디트 박스처럼 생긴 것은 "여기에다가 값을 입력하시오~"와 같은 일종의 약속된 컨트롤인 것이지요.
각종 리모콘들도 일종의 약속이라고 볼 수 있습니다.
전원 버튼, 채널 위 아래 버튼, 볼륨 위 아래 버튼 등등 각 리모콘은 대략적으로 비슷한 모양을 가지고 있으며,
비슷한 버튼들로 구성되어 있습니다.
실제로 내부적으로 리모콘의 전자회로가 어떻게 구현되어 있냐에 대해서는 크게 관심이 없으며,
그 부분은 달라도 상관이 없습니다.
그 약속만 지키면 사람들은 그 약속대로 리모콘을 조작할 수 있기 때문입니다.
마지막으로 한가지 예를 더 들어보도록 하겠습니다.
공산품들은 일종의 표준이란게 있습니다.
샤프를 예를 들면 각 심의 두께는 4B, 2HB 등등의 규약을 정해놓고 그것을 지키도록 하고 있습니다.
그 규칙을 지키면, 해당 심을 지원하는 샤프의 경우 그 심을 이용할 수 있기 때문입니다.
샤프의 사용자의 경우, 자신이 가진 샤프가 지원하는 샤프심을 골라서 사면.. 샤프가 내부적으로
어떻게 만들어져 있는지와 관련없이, 해당 샤프심을 이용할 수가 있습니다.
풀과 풀뚜껑도 마찬가지입니다.
풀의 뚜꼉과 맞닿는 부분의 모양에 맞게끔만 풀뚜껑을 만든다면, 어떤 회사의 어떤 풀뚜껑이던간에
풀에 끼울수가 있겠지요.
이러하든 어떤 규약들을 정해놓고 해당 규약을 지키는 모듈이나 클래스들 사이에 통신을 할 수 있게 하는
것이 이 인터페이스입니다.
네트웍 통신에 사용되는 프로토콜도 일종의 인터페이스라고 볼 수 있습니다.
특정 라이브러리에 속한 API 함수를 호출하려면,
함수명
리턴값
파라미터
등의 형태를 알면 호출할 수가 있습니다.
이것도 일종의 인터페이스라고 볼 수 있습니다.
API란 말 자체가 "Application Programming Interface" 니까요...
클래스의 경우로 생각해 본다면,
개념적인 면에서의 인터페이스가 아닌, 구현면에서 말하는 인터페이스는 함수들을 정의해 놓습니다.
"나란 클래스는 이러이러한 함수들을 구현해서 공개하고 있으니, 이걸 이용하세요."
와 같은 의미라고 보시면 됩니다.
그 클래스를 사용하는 쪽하고는 일종의 규약을 만들어서 공개하고 있는 것이지요.
그러니, 이 규약에 맞춰서 나를 사용하면 됩니다. 라고 하는 겁니다.
개념적으로 보면 이렇습니다.
그래서 COM에서 보면 IUnknown, IDispatch 등등의 인터페이스를 구현하고 있지요.
IDispatch를 구현하고 있는 클래스는 IDispatch에 해당하는 함수들을 구현하고 있으니,
사용할 수 있게 되는 것입니다.
델파이의 예를 들면,
TComponent를 상속받은 클래스의 경우, 부모 자식 관계를 설정하는 기능을 가진다는 것을 보증하며,
TControl의 경우 비주얼한 컴포넌트라는 것을 보증합니다.
왜냐하면 위의 클래스들은 해당하는 메소드를 이미 가지고 있으며, 원한다면 그것을 재정의할 수 있는데,
그렇다고 해서 의미와 다르고 전혀 엉뚱한 동작을 정의하지는 않기 때문입니다.
대략.. 개념은 이해가 되셨을까 모르겠습니다.
자유게시판에 논의된 내용은 실제 델파이에서의 인터페이스라는 언어적 기능을 어떻게 사용하는지..
그 부분에 대해서 코드도 넣고 해서 설명을 드려야 되는건데,
글도 길어지고 귀찮고 해서리... --;;
뭐 그냥 인터페이스에 대한 개념이라도 알고 싶으신 분들도 있으실거 같기도 하고..
(근데 이 글 읽고 대강 감이라도 잡히시나요?)
인터페이스의 실제 사용법 등은 델파이 도움말이나 델파이의 문법을 다룬 책들을 참고하시구요...
(흠 무책임하군요 --;;)
아님 다른분이 좀 강좌로 올려주세요.
오늘 이런저런 일들이 있다보니까 이글도 횡성수설.. 정신도 하나도 없고... --;
이 글을 그냥 날려버릴까 올릴까 고민하다가.. 그래도 없는 것보단 나을거 같아서 올립니다.
행복한 하루 되세요.
델마당 자유게시판에서 인터페이스에 대한 논의가 있었고, 인터페이스에 대해서
설명하는 글을 써 주실분이 없나.. 하는 얘기가 있어서 쓸까 말까 고민하다가
이렇게 그냥 간단히 써보자 하고 글을 쓰기 시작했습니다. ^^
인터페이스(Interface)란 무엇일까요..
일단 뭔가를 알기 위해 가장 먼저 해야 할 일은 그 단어의 정의를 알아보는 건데요..
인터페이스(interface)는 사물 간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적 혹은 영속적인 접근을 목적으로 만들어진 물리적, 가상적 매개체를 의미한다.
위의 정의는 위키피디아에서 퍼온 겁니다.
위 정의는 좀 어려운데요...
제 나름대로의 정의로는 인터페이스는 "뭔가 대화를 하기 위한 약속" 입니다.
예를 들어, 사람과 사람 사이에는 언어를 통해서 대화를 합니다.
각 나라의 사람들은 한국어, 영어와 같은 자국의 언어를 통해서, 서로 의사소통을 하기 위해서
일종의 약속을 정해놓은 것입니다.
UI(유저인터페이스)의 경우도 사람과 어플리케이션 간의 조작을 위한 일종의 약속입니다.
에디트 박스처럼 생긴 것은 "여기에다가 값을 입력하시오~"와 같은 일종의 약속된 컨트롤인 것이지요.
각종 리모콘들도 일종의 약속이라고 볼 수 있습니다.
전원 버튼, 채널 위 아래 버튼, 볼륨 위 아래 버튼 등등 각 리모콘은 대략적으로 비슷한 모양을 가지고 있으며,
비슷한 버튼들로 구성되어 있습니다.
실제로 내부적으로 리모콘의 전자회로가 어떻게 구현되어 있냐에 대해서는 크게 관심이 없으며,
그 부분은 달라도 상관이 없습니다.
그 약속만 지키면 사람들은 그 약속대로 리모콘을 조작할 수 있기 때문입니다.
마지막으로 한가지 예를 더 들어보도록 하겠습니다.
공산품들은 일종의 표준이란게 있습니다.
샤프를 예를 들면 각 심의 두께는 4B, 2HB 등등의 규약을 정해놓고 그것을 지키도록 하고 있습니다.
그 규칙을 지키면, 해당 심을 지원하는 샤프의 경우 그 심을 이용할 수 있기 때문입니다.
샤프의 사용자의 경우, 자신이 가진 샤프가 지원하는 샤프심을 골라서 사면.. 샤프가 내부적으로
어떻게 만들어져 있는지와 관련없이, 해당 샤프심을 이용할 수가 있습니다.
풀과 풀뚜껑도 마찬가지입니다.
풀의 뚜꼉과 맞닿는 부분의 모양에 맞게끔만 풀뚜껑을 만든다면, 어떤 회사의 어떤 풀뚜껑이던간에
풀에 끼울수가 있겠지요.
이러하든 어떤 규약들을 정해놓고 해당 규약을 지키는 모듈이나 클래스들 사이에 통신을 할 수 있게 하는
것이 이 인터페이스입니다.
네트웍 통신에 사용되는 프로토콜도 일종의 인터페이스라고 볼 수 있습니다.
특정 라이브러리에 속한 API 함수를 호출하려면,
함수명
리턴값
파라미터
등의 형태를 알면 호출할 수가 있습니다.
이것도 일종의 인터페이스라고 볼 수 있습니다.
API란 말 자체가 "Application Programming Interface" 니까요...
클래스의 경우로 생각해 본다면,
개념적인 면에서의 인터페이스가 아닌, 구현면에서 말하는 인터페이스는 함수들을 정의해 놓습니다.
"나란 클래스는 이러이러한 함수들을 구현해서 공개하고 있으니, 이걸 이용하세요."
와 같은 의미라고 보시면 됩니다.
그 클래스를 사용하는 쪽하고는 일종의 규약을 만들어서 공개하고 있는 것이지요.
그러니, 이 규약에 맞춰서 나를 사용하면 됩니다. 라고 하는 겁니다.
개념적으로 보면 이렇습니다.
그래서 COM에서 보면 IUnknown, IDispatch 등등의 인터페이스를 구현하고 있지요.
IDispatch를 구현하고 있는 클래스는 IDispatch에 해당하는 함수들을 구현하고 있으니,
사용할 수 있게 되는 것입니다.
델파이의 예를 들면,
TComponent를 상속받은 클래스의 경우, 부모 자식 관계를 설정하는 기능을 가진다는 것을 보증하며,
TControl의 경우 비주얼한 컴포넌트라는 것을 보증합니다.
왜냐하면 위의 클래스들은 해당하는 메소드를 이미 가지고 있으며, 원한다면 그것을 재정의할 수 있는데,
그렇다고 해서 의미와 다르고 전혀 엉뚱한 동작을 정의하지는 않기 때문입니다.
대략.. 개념은 이해가 되셨을까 모르겠습니다.
자유게시판에 논의된 내용은 실제 델파이에서의 인터페이스라는 언어적 기능을 어떻게 사용하는지..
그 부분에 대해서 코드도 넣고 해서 설명을 드려야 되는건데,
글도 길어지고 귀찮고 해서리... --;;
뭐 그냥 인터페이스에 대한 개념이라도 알고 싶으신 분들도 있으실거 같기도 하고..
(근데 이 글 읽고 대강 감이라도 잡히시나요?)
인터페이스의 실제 사용법 등은 델파이 도움말이나 델파이의 문법을 다룬 책들을 참고하시구요...
(흠 무책임하군요 --;;)
아님 다른분이 좀 강좌로 올려주세요.
오늘 이런저런 일들이 있다보니까 이글도 횡성수설.. 정신도 하나도 없고... --;
이 글을 그냥 날려버릴까 올릴까 고민하다가.. 그래도 없는 것보단 나을거 같아서 올립니다.
행복한 하루 되세요.






