Interface   인터페이스

(2024-11-29)

1. 인터페이스 이란?

  ㅇ 서로 다른 시스템 또는 컴포넌트 간의 상호작용을 정의하는 방식
     - 서로 다른 요소들 간에 쉽게 상호 작용이 가능하도록 하는 경계면

  ㅇ 인터페이스 주요 형태
     - 소프트웨어 인터페이스
        . API, GUI, CLI 
        . 객체지향언어에서의 interface 등
     - 하드웨어 인터페이스
        . 포트 및 연결 (USB 포트, HDMI, 이더넷 포트 등)
        . 버스 인터페이스 (PCIe, I2C, SPI 등)
     - 시스템 인터페이스
        . 운영체제 인터페이스 (시스템 호출)
        . 네트워크 인터페이스 (TCP/IP 프로토콜 등)


2. 소프트웨어 개발시, 인터페이스 이란?

  ㅇ 통상, 소프트웨어 개발시,
     - 설계,초기 코딩 등을 할 때는, 
        . 대상에 어떤 속성메소드들이 존재하는지 명세 만 해놓고,
     - 실제 구현은, 
        . 각 구현체 마다 다르게 구현할 수 있게 약속하여 둔 것

  ㅇ 인터페이스의 주요 특징
     - 추상화  :  기능의 명세만 제공, 그 기능의 내부 구현은 숨김
        . 세부 사항에 대해 알 필요 없이 인터페이스를 통해 필요한 기능을 사용 가능
     - 독립성  :  각 구성 요소 마다 독립적으로 개발, 변경, 유지보수 가능
        . 구성 요소 간의 의존성을 줄여, 코드재사용성확장성을 높임
     - 표준화  :  특정 기능을 어떻게 호출할지에 대한 규칙을 정의
        . 동일한 방식으로 다양한 모듈을 사용, 결합 가능

  ※ 프로그래밍 언어에서, 인터페이스는,
     - 시스템이나 애플리케이션의 구조를 유연하고 확장 가능하게 만드는 중요한 도구임


3. [객체지향언어]  인터페이스클래스객체가 구현해야 하는 메서드들의 집합을 정의하는 계약으로써,
     - 인터페이스는 구현되지 않은 메서드들의 서명(시그니처)만을 포함하고, 
     - 실제 구현은 이 인터페이스를 구현하는 클래스에서 담당케 함

  ㅇ 사실상, 기능 스펙을 모아 명세해놓기 만 한 것 임
     - 즉, 인터페이스는 실제 객체가 아니며, 
     - 단순히 기능 스펙을 모아 명세해놓기 만 한 것임

  ㅇ 일종의, 클래스 템플릿 임
     - 즉, 인터페이스클래스를 위한 일종의 템플릿이라고도 할 수 있음
     - 비록 클래스 처럼 정의되지만, 메소드를 직접 처리하거나, 객체(인스턴스)를 만들 수 없음

  ㅇ 특히, 공통 메소드 정의시에 유용함
     - 서로 다른 성격의 클래스들에게서, 공통으로 사용할 만한 메소드를 정의하는데에 유용한 도구

  ㅇ 이는, 다형태성을 구현하는 방법 중 하나
     - (다형태성 : 프로그램문맥에 따라 여러 다른 형태나 동작을 할 수 있는 능력)

     - 例) 자바 언어에서는, `interface 키워드`를 사용하여 다형성을 지원 함
        . 이를 통해 다양한 객체가 동일한 방식으로 처리 가능


4. [객체지향언어]  인터페이스의 활용인터페이스의 용도
     - 공통적인 기능 선언
        . 주로, 인터페이스 내부에 공통기능을 선언 만하고, 
        . 하위 클래스에서 그 인터페이스 내부에 선언메소드들을 세부적으로 구현
     - 즉, 다른 클래스 간에 공통적인 기능을 정의할 때, 인터페이스를 사용함

  ㅇ 인터페이스의 사용
     - 같은 인터페이스를 사용하는 클래스들은,
        . 그 인터페이스에서 제공하는 메소드들을 공통으로 쓸 수 있음
     - 결국, 그 인터페이스에서 정한대로,
        . 같은 인자 형식, 같은 리턴형, 같은 메소드 이름까지도 똑같은 것을 사용할 수 있음


5. [객체지향언어]  인터페이스추상클래스의 차이인터페이스  : 다중 상속을 지원, 오직 메소드선언 만 있을 수 있음
  ㅇ 추상 클래스 : 단일 상속만 가능, 메소드의 부분적인 구현이 가능

[객체지향 프로그래밍]1. 객체지향   2. 객체지향 프로그래밍   3. 메세지   4. 생성자   5. 접근 제한 수식자   6. 추상 클래스   7. 인터페이스  

[자바 언어 기타]1. JSP   2. JVM   3. 가비지 컬렉션   4. 랩퍼 클래스   5. 바이트 코드   6. 서블릿   7. 애플릿   8. 인터페이스   9. 자바빈즈   10. 추상 윈도우 툴킷  

  1. Top (분류 펼침)      :     1,594개 분류    6,533건 해설

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]       편집·운영 (차재복)