의견.png

인터페이스

위키원
tjdwhd2401 (토론 | 기여)님의 2019년 7월 23일 (화) 11:41 판
이동: 둘러보기, 검색

인터페이스(interface)란 사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 프로토콜을 말한다.

개요

인터페이스는 사물의 경계가 되는 부분과 그 경계에서의 통신 및 접속이 가능하도록 하는 매개체를 의미한다. 주로 컴퓨터 분야에서 사용되는 용어이며, I/F로 축약하여 사용하기도 한다. 크게 ‘하드웨어 인터페이스’, ‘소프트웨어 인터페이스’ 그리고 ‘사용자 인터페이스’의 세 가지로 구분된다.[1]

등장배경

역사

활용

특징

  • 100% abstrace class

interface의 모든 메소드는자동으로 public abstract method가 된다. 따라서 이를 구현하는 하위 클래스는 반드시해당 method의 body를 구현해야한다. abstract class 와 구분하기 위해선언시에는 class 키워드 대신 interface 키워드를 사용한다.

  • 다형성을 제공한다.

상위 객체에 하위 객체를 참조하게 하여신규로 추가되는 하위 객체에 대해서도 동일한 규약을 가지게 하는 것처럼 interface도 abstact class로써 같은 역할을 수행할 수 있다.

  • 상속 트리에 무관하게 적용 가능하다.

상위 객체와 하위 객체의 관계와는 달리상속 트리 상의 계보를 타지 않더라도전혀 다른 트리상의 객체에 대해서도 interface를 적용할 수 있다. 이 경우 interface는 하위 객체에서 반드시 구현해야하므로규약의 성격을 발휘하면서도 하나의 "역할"을 부여하는 기능을 한다.

  • 여러개의 interface를 구현할 수 있다.

java에서 다중 상속을 막는 것과는 달리interface는 DDD(Deadly Diamond of Death)를 발생하지 않으므로 하위 클래스는 여러개의 interface를 구현할 수 있다.

종류

컴퓨터 등 정보 기기의 하드웨어 간 통신을 위해서 존재하는 입출력 포트의 전기적 연결 장치인 커넥터(connector), 신호의 송수신 방법(프로토콜) 등을 말한다. 컴퓨터 관련 버스, 저장 장치 및 다양한 입출력 기기들 내에 존재하며, 주로 병렬 연결과 직렬 연결로 나뉘어진다. 컴퓨터 내부 장치나 구성 요소간의 상호 접속을 가능하게 하는 플러그, 커넥터, 카드 등이 하드웨어 인터페이스에 속한다. 하드웨어 인터페이스의 종류로는 USB(Universal Serial Bus)와 같은 직렬 커넥터, RS-232C와 같은 통신용 직렬 인터페이스, SCSI와 같은 병렬 인터페이스 장치 등이 있다.[1]

소프트웨어 간의 통신을 위해 메시지를 전달하는 방식 등이 결정된 것으로, 다양한 레벨에서 다양한 종류의 인터페이스가 존재한다. 운영체제(OS)와 하드웨어들 사이의 인터페이스, 운영체제와 응용 프로그램이 상호 작용하는 인터페이스, 객체 지향 프로그래밍에서 응용 내의 객체들이 서로 상호 작용할 수 있도록 하는 메소드 등이 소프트웨어 인터페이스에 속한다. 소프트웨어 설계 시 자원에 대한 접근을 잘 정의된 진입점(entry point), 즉 인터페이스를 통해서만 가능하도록 함으로써 시스템 자원에 대한 기능성과 안정성을 제공할 수 있다.[1]

기계, 특히 컴퓨터와 사용자(인간) 사이의 상호 작용과 정보 교환을 위한 인터페이스로 컴퓨터 상호 작용(HCI : human-computer interaction) 혹은 인간-기계 인터페이스(MMI : man-machine interface)라고도 한다. 사용자 인터페이스는 크게 입력과 출력의 두 가지 방법을 제공한다. 입력은 사용자가 시스템을 조작하는 방법을 정의하고, 출력은 사용자가 조작에 따라 시스템이 생성한 결과를 제시하는 수단이다. 좋은 사용자 인터페이스는 심리학과 생리학에 기반하여 사용자가 필요한 요소를 쉽게 찾고 사용하며 정확한 결과를 손쉽게 얻어낼 수 있도록 설계해야 한다.[1]

문제점과 대안

평가와 전망

각주

  1. 1.0 1.1 1.2 1.3 인터페이스〉《두산백과》

참고자료

같이 보기


  의견.png 이 인터페이스 문서는 인터넷에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.