인터페이스(컴퓨팅)
Interface (computing)컴퓨팅에서 인터페이스는 컴퓨터 시스템의 두 개 이상의 개별 구성요소가 정보를 교환하는 공유 경계입니다.교환은 소프트웨어, 컴퓨터 하드웨어, 주변기기, 사람 및 이들의 [1]조합 간에 이루어질 수 있습니다.터치스크린과 같은 일부 컴퓨터 하드웨어 장치는 인터페이스를 통해 데이터를 송수신할 수 있는 반면, 마우스나 마이크와 같은 다른 장치는 주어진 [2]시스템에 데이터를 전송하기 위한 인터페이스만 제공할 수 있습니다.
하드웨어 인터페이스
하드웨어 인터페이스는 다양한 버스, 스토리지 디바이스, 기타 I/O 디바이스 등 다양한 컴포넌트에 존재합니다.하드웨어 인터페이스는 인터페이스에서의 기계적, 전기적, 논리적 신호 및 이러한 신호를 시퀀싱하기 위한 프로토콜(시그널링이라고도 함)[3]로 기술됩니다.SCSI 등의 표준 인터페이스는 I/O 디바이스 등의 컴퓨팅 하드웨어의 설계 및 도입을 컴퓨팅 시스템의 다른 컴포넌트의 설계 및 도입과 분리함으로써 사용자와 제조원이 컴퓨팅 [3]시스템의 구현에 큰 유연성을 확보할 수 있도록 합니다.하드웨어 인터페이스는 데이터의 일부를 동시에 운반하는 여러 전기 접속과 병렬로 하거나 데이터를 한 [4]번에 한 비트씩 전송하는 직렬로 할 수 있습니다.
소프트웨어 인터페이스
소프트웨어 인터페이스는, 「레벨」이 다른 폭넓은 타입의 인터페이스를 가리킬 수 있습니다.즉, operating system은 하드웨어와 인터페이스 할 수 있습니다.operating system 상에서 실행되고 있는 애플리케이션 또는 프로그램은 데이터 스트림, 필터 및 [5]파이프라인을 통해 상호 작용해야 할 수 있습니다.또한 객체 지향 프로그램에서는 응용 프로그램 내의 오브젝트가 [6]메서드를 통해 상호 작용해야 할 수도 있습니다.
실제로
설계의 주요 원칙은 기본적으로 모든 리소스에 대한 액세스를 금지하고 명확하게 정의된 진입점(인터페이스 [7]등)을 통해서만 액세스를 허용하는 것입니다.소프트웨어 인터페이스는 기본 컴퓨터 시스템의 컴퓨터 리소스(메모리, CPU, 스토리지 등)에 대한 액세스를 제공합니다.소프트웨어에 의한 이러한 리소스에 대한 직접 액세스(즉, 적절하게 설계된 인터페이스를 경유하지 않음)는 기능과 [citation needed]안정성에 큰 영향을 미칠 수 있습니다.
소프트웨어 컴포넌트 간의 인터페이스는 상수, 데이터 유형, 프로시저 유형, 예외 사양 및 메서드 서명을 제공할 수 있습니다.퍼블릭 변수도 인터페이스의 [8]일부로 정의될 수 있습니다.
소프트웨어 모듈A의 인터페이스는 해당 모듈의 구현과는 별도로 의도적으로 정의되어 있습니다.후자는 인터페이스에 기술된 절차와 메서드의 실제 코드와 기타 "개인" 변수, 절차 등을 포함합니다.A와 대화하는 다른 소프트웨어 모듈 B(예를 들어 A에 대한 클라이언트)는 퍼블리시된 인터페이스를 통해서만 강제로 실행됩니다.이 어레인지먼트의 실용적인 이점 중 하나는 A의 실장을 같은 인터페이스의 다른 실장으로 대체하면 B가 실패하지 않는다는 것입니다.A가 인터페이스의 요건을 내부적으로 충족하는 방법은 인터페이스의 사양에만 관계하는B와는 관계가 없습니다.(「리스코프 치환 원리」[citation needed]도 참조).
객체 지향 언어
일부 객체 지향 언어(특히 완전한 다중 상속이 없는 언어)에서 인터페이스라는 용어는 데이터를 포함하지 않지만 동작을 메서드 시그니처로 정의하는 추상 유형을 정의하기 위해 사용됩니다.그 인터페이스에 대응하는 모든 메서드의 코드와 데이터를 가지는 클래스가, 그 인터페이스를 [9]실장한다고 불립니다.게다가 단일 상속 언어에서도 복수의 인터페이스를 실장할 수 있기 때문에,[10] 동시에 다른 타입의 인터페이스를 실장할 수 있습니다.
따라서 인터페이스는 타입 정의입니다.교환되는 오브젝트의 타입은 특정 클래스를 지정하는 것이 아니라 구현된 인터페이스 또는 베이스 클래스 중 하나로 정의할 수 있습니다(예를 들어 함수나 메서드콜 등에서 교환할 수 있습니다.이 어프로치에서는, 그 인터페이스를 실장하는 모든 클래스를 사용할 [citation needed]수 있습니다.예를 들어, 최종 구현이 가능하기 전에 개발을 진행하기 위해 더미 구현을 사용할 수 있다.다른 경우에는 시험 중에 가짜 또는 모의 구현을 대체할 수 있다.이러한 stub 실장은 개발 프로세스의 후반부에서 실제 코드로 대체됩니다.
통상, 인터페이스에 정의되고 있는 메서드는 코드를 포함하지 않기 때문에, 그 자체를 호출할 수 없습니다.[citation needed]호출시에 실행하는 비추상 코드로 실장할 필요가 있습니다."라는 이름의 인터페이스Stack
「」에서는, 다음의 2개의 방법을 정의할 수 있습니다.push()
그리고.pop()
예를 들어 다음과 같은 다양한 방법으로 구현할 수 있습니다.FastStack
그리고.GenericStack
첫 번째는 고정 크기의 데이터 구조를 사용하는 고속화입니다.두 번째는 크기를 조정할 수 있지만 속도는 다소 낮습니다.
인터페이스에는 많은 메서드를 포함할 수 있지만 1개만 포함할 수도 있고 아예 포함하지 않을 수도 있습니다.예를 들어 Java 언어는 인터페이스를 정의합니다.Readable
싱글을 가지고 있다read()
다양한 구현이 다양한 목적으로 사용됩니다.BufferedReader
,FileReader
,InputStreamReader
,PipedReader
,그리고.StringReader
. 마커 인터페이스와 같은Serializable
메서드가 전혀 없으며 Reflection을 사용하여 [11]일반 처리에 런타임 정보를 제공하는 역할을 합니다.
인터페이스 프로그래밍
인터페이스를 사용하면 인터페이스에 프로그래밍이라고 하는 프로그래밍 스타일을 사용할 수 있습니다.이 접근방식의 배후에 있는 아이디어는 내부 구현 세부사항이 아닌 사용되는 객체의 인터페이스를 기반으로 프로그래밍 로직을 작성하는 것입니다.인터페이스에 프로그래밍하면 구현 세부 사항에 대한 의존도를 줄이고 코드를 [12]더 쉽게 재사용할 수 있습니다.
이 아이디어를 극단적으로 밀어붙이면 제어의 역전은 작업을 수행하는 데 사용되는 인터페이스의 특정 구현과 함께 코드를 주입하는 컨텍스트를 남깁니다.
사용자 인터페이스
사용자 인터페이스는 컴퓨터와 사람 사이의 상호작용 지점입니다. 사용자와 컴퓨터 시스템 간에 데이터가 전송되는 상호작용 양식(그래픽, 소리, 위치, 이동 등)을 모두 포함합니다.
「 」를 참조해 주세요.
- 추상화 반전
- 응용 프로그램 바이너리 인터페이스
- 응용 프로그램 프로그래밍 인터페이스
- 비즈니스 상호 운용성 인터페이스
- 컴퓨터 버스
- 하드 디스크 드라이브 인터페이스
- 구현(컴퓨터 사이언스
- 구현 상속
- 상호 운용성
- 상속 의미론
- 모듈러 프로그래밍
- 소프트웨어 컴포넌트
- 가상 상속
레퍼런스
- ^ Hookway, B. (2014). "Chapter 1: The Subject of the Interface". Interface. MIT Press. pp. 1–58. ISBN 9780262525503.
- ^ IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms. NYC, NY, USA: IEEE Press. 2000. pp. 574–575. ISBN 9780738126012.
- ^ a b Blaauw, Gerritt A;브룩스, Jr., 프레더릭 P.(1997년),"장 86장치 인터페이스", 컴퓨터 Architecture-Concepts과 변천, Addison-Wesley,를 대신하여 서명함. 489–493, 아이 에스비엔 0-201-10557-8를 참조하십시오:패터슨, 데이비드 A.,.헤네시, 존 L.(2005년),"그 프로세서, 메모리, 운영 체제에장 8.5, Interfacing/O장치", 컴퓨터 기구와 설계-소프트웨어 인터페이스, 제3Edition, 모건 카우프만,를 대신하여 서명함. 588–596, 아이 에스비엔 1-55860-604-1.
- ^ Govindarajalu, B. (2008). "3.15 Peripheral Interfaces and Controllers - OG". IBM PC And Clones: Hardware, Troubleshooting And Maintenance. Tata McGraw-Hill Publishing Co. Ltd. pp. 142–144. ISBN 9780070483118. Retrieved 15 June 2018.
- ^ Buyya, R. (2013). Mastering Cloud Computing. Tata McGraw-Hill Education. p. 2.13. ISBN 9781259029950.
- ^ Poo, D.; Kiong, D.; Ashok, S. (2008). "Chapter 2: Object, Class, Message and Method". Object-Oriented Programming and Java. Springer-Verlag. pp. 7–15. ISBN 9781846289637.
- ^ Bill Venners (2005-06-06). "Leading-Edge Java: Design Principles from Design Patterns: Program to an interface, not an implementation - A Conversation with Erich Gamma, Part III". artima developer. Archived from the original on 2011-08-05. Retrieved 2011-08-03.
Once you depend on interfaces only, you're decoupled from the implementation. That means the implementation can vary, and that is a healthy dependency relationship. For example, for testing purposes you can replace a heavy database implementation with a lighter-weight mock implementation. Fortunately, with today's refactoring support you no longer have to come up with an interface up front. You can distill an interface from a concrete class once you have the full insights into a problem. The intended interface is just one 'extract interface' refactoring away. ...
- ^ Patterson, D.A.; Hennessy, J.L. (7 August 2004). Computer Organization and Design: The Hardware/Software Interface (3rd ed.). Elsevier. p. 656. ISBN 9780080502571.
- ^ "What Is an Interface". The Java Tutorials. Oracle. Archived from the original on 2012-04-12. Retrieved 2012-05-01.
- ^ "Interfaces". The Java Tutorials. Oracle. Archived from the original on 2012-05-26. Retrieved 2012-05-01.
- ^ "Performance improvement techniques in Serialization". Precise Java. Archived from the original on 2011-08-24. Retrieved 2011-08-04.
We will talk initially about Serializable interface. This is a marker interface and does not have any methods.
- ^ Gamma; Helm; Johnson; Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley. pp. 17–18. ISBN 9780201633610.