인터페이스(interface)란 상호작용의 규정이다.
상호작용에는 3가지가 필요하다. 액션을 취하는 쪽, 액션에 응답하는 쪽, 그리고 액션의 방식.
중요한 것은 액션의 방식이다. CLI(command-line interface)에 대해 생각해보자. 사용자는 컴퓨터에게 요청하고, 그 요청에 대해 컴퓨터는 사용자에게 응답한다. CLI는 이러한 요청과 응답의 구성 방식이 커맨드 라인이라고 하는 텍스트로 이루어진다. GUI(graphical user interface)는 액션의 구성 방식이 시각적인 대상에 대한 클릭/드래그 등으로 바뀐 것이다.
상호작용을 하는 측은 그 규정의 디테일에 대해 알아야만 한다. 예컨대 API(application programming interface)가 그렇다. 정해진 방식을 따라서 요청해야만 올바른, 그리고 원하는 응답을 얻을 수 있다. 달리 말하면 액션을 취하는 측에서는 제한된 상호작용의 창구만을 바라볼 수 있으며, 그 한계는 제공자에 의해 결정된다.
요청자는 응답자를 볼 수 없다. 응답자와 소통하는 창구 - 접촉면(interface)만을 바라볼 뿐이다. 응답자의 세부 사항은 은닉되어 그 겉부분만이 사영(projection)된다. 즉 인터페이스는 응답자를 대표하지만 응답자 그 자체는 아니므로 별개의 매개로 보아야 한다는 뜻이다. 그렇기 때문에 인터페이스는 요청자와 응답자의 결합을 느슨하게끔 한다. Java의 인터페이스가 그렇다. 잘 정의된 방식과 그에 적합한 구현은 설계의 유연성을 제공한다. 모듈 단위의 운영이 가능해지는 것이다.
'Study > Computer Science' 카테고리의 다른 글
[HTTP] Stateless (0) | 2024.05.02 |
---|---|
프로그래밍 패러다임 (0) | 2024.04.15 |
자료형, 메모리, 그리고 Python [2] (0) | 2024.04.07 |
자료구조 (0) | 2024.04.05 |
자료형, 메모리, 그리고 Python [1] (0) | 2024.03.24 |