인터페이스 (컴퓨팅)
인터페이스 (컴퓨팅) 와 구현 은 소프트웨어 개발에서 서로 밀접하게 관련되어 있지만, 구분되는 개념이다. 인터페이스는 시스템의 외부에서 볼 수 있는 모습, 즉 어떻게 상호작용하는지를 정의하는 반면, 구현은 그 인터페이스를 내부적으로 어떻게 실제로 동작하게 만드는지를 의미한다.
인터페이스 (Interface)
인터페이스는 특정 시스템 또는 구성 요소가 다른 시스템이나 구성 요소와 상호 작용하는 방식을 정의한 명세이다. 이는 함수, 메서드, 프로퍼티 등의 집합으로 구성될 수 있으며, 각 요소의 이름, 매개변수, 반환 값 등을 명시한다. 인터페이스는 구현의 세부 사항을 숨기고, 사용자에게 필요한 기능만을 노출함으로써 시스템의 추상화를 제공한다. 이를 통해, 사용자는 인터페이스에 정의된 기능만을 사용하여 시스템과 상호 작용할 수 있으며, 내부 구현의 변경에 영향을 받지 않는다. 다양한 프로그래밍 언어에서 인터페이스는 추상 클래스, 인터페이스 키워드 등을 통해 구현된다.
구현 (Implementation)
구현은 인터페이스에서 정의된 기능을 실제로 수행하는 코드이다. 인터페이스가 "무엇을 할 것인가"를 정의한다면, 구현은 "어떻게 할 것인가"를 정의한다. 하나의 인터페이스는 여러 개의 구현을 가질 수 있으며, 각 구현은 인터페이스에서 정의된 기능을 서로 다른 방식으로 구현할 수 있다. 예를 들어, Shape
인터페이스가 draw()
메서드를 정의한다면, Circle
, Rectangle
, Triangle
등의 클래스가 각각 Shape
인터페이스를 구현하고, 서로 다른 방식으로 draw()
메서드를 구현할 수 있다. 구현은 인터페이스를 통해 제공되는 기능을 실제로 작동하게 만드는 부분이므로, 시스템의 성능, 안정성, 효율성 등에 직접적인 영향을 미친다.
요약: 인터페이스는 계약서와 같고, 구현은 그 계약서를 이행하는 방식이다. 인터페이스는 추상적이고, 구현은 구체적이다. 인터페이스는 사용자에게 보이는 부분이고, 구현은 사용자에게 보이지 않는 부분이다. 인터페이스의 변경은 구현에 영향을 미칠 수 있지만, 구현의 변경은 인터페이스에 영향을 미치지 않도록 설계되어야 한다.