Interface

박정호·2022년 5월 31일
0

Interface

타입스크립트, 솔리디티, 혹은 자바 에서 인터페이스의 중요성을 말해보고 싶다.

인터페이스의 중요성을 말한다면 기본적으로 패러다임, 혹은 설계를 하는 관점을 제시하면 좋다.

객체지향으로 설계를 한다는 전제라면 가장 중요한 개념은 유형이고, 확장성을 위해선 항상 문제를 추상화/일반화 해야 한다면 결국 중심은 추상 유형, 즉 인터페이스가 될 수 밖에 없다.

자바와 같은 방식의 객체지향 언어에서 인터페이스가 왜 필요하냐는 이야기는 데이터베이스 중심적 개발에서 테이블이 왜 필요한가나 마찬가지의 이야기이다.

물론 게시판을 만든다고 반드시 데이터베이스를 안써도 되고, 데이터베이스를 쓴다고 해도 아마 테이블 하나에 컬럼을 늘여서 모든 값을 다 때려 넣어도 어떻게든 돌아가게는 할 수는 있다다.

하지만, 기본적으로 RDBMS라는 개념 자체가 테이블 하나를 고유한 성격의 데이터의 집합으로 보고 그런 집합 사이의 관계를 맺는 방식으로 쓰라고 만든 것이고, SQL의 조인 구문 등 모든 관련 도구들이 그런 개념을 전제로 하고 있다.

마찬가지로 자바에서 객체지향을 무시하고 C처럼 코딩한다고 해도 안될 것이야 없겠지만, 자바의 핵심 API를 비롯한 대부분의 라이브러리/프레임워크/개발 도구 등이 유형을 통한 추상화를 전제로 구성되어 있다.

따라서 객체 지향 언어를 본래의 의도대로 사용하기 위해선 결국 추상 유형을 중심으로 사고하는 것이 최적의 접근이다.

왜 인터페이스가 필요한가 = 왜 객체지향적으로 개발해야 하나

인터페이스의 장점

  1. Cooperation (협업)

  2. Easy to replace (교체 용이)

  3. Multiple inheritance (다중 상속)

인터페이스(interface)와 추상 클래스(abstract class)의 차이점

인터페이스와 추상 클래스는 존재 목적이 다르다. 추상 클래스는 그 추상 클래스를 상속받아서 기능을 이용하고, 확장시키는 데 있다.
반면, 인터페이스는 함수의 껍데기인 것인데, 그 이유는 그 함의 구현을 강제하기 위해서이다.
구현을 강제함으로써 구현 객체의 같은 동작을 보장할 수 있다.

profile
개발하기

0개의 댓글