프로토콜(개체 지향 프로그래밍)
Protocol (object-oriented programming)![]() |
프로토콜은 다양한 의미를 가진 특정 객체 지향 프로그래밍 언어에서 사용되는 용어이며, 다른 언어에서는 인터페이스 또는 특성을 나타낼 수 있습니다.
다른 방법으로 사용될 경우, "프로토콜"은 호출자와 객체 사이의 상호작용 체인을 나타내는 통신 프로토콜과 유사합니다.
protocol이라는 용어를 사용하는 언어는 다음과 같습니다.
이러한 언어에서 프로토콜은 개별 개체가 서로 통신하는 일반적인 수단입니다.이들은 API의 일부로서 오브젝트가 상호 운용하기 위해 합의하는 메서드와 값의 정의입니다.
프로토콜/인터페이스는 다음을 설명합니다.
- 오브젝트가 이해하는 메시지입니다.
- 이러한 메시지에 포함될 수 있는 인수.
- 이러한 메시지가 반환하는 결과 유형.
- 오브젝트 상태가 변경되어도 유지되는 불변량.
- 클라이언트가 오브젝트에 대해 처리해야 하는 예외적인 상황.
- (커뮤니케이션스타일의 사용 전용:UML 인터랙션 다이어그램에는 다음과 같은 메서드의 콜시퀀스 및 의사결정 포인트가 나타나 있습니다.커뮤니케이션 다이어그램, 시퀀스 다이어그램, 상호작용 개요 다이어그램/액티비티 다이어그램, 타이밍 다이어그램.
개체가 완전히 캡슐화된 경우 프로토콜은 다른 개체가 개체에 액세스할 수 있는 유일한 방법을 설명합니다.예를 들어 Javainterfaces에서는Comparable
interface는 메서드를 지정합니다.compareTo()
구현 클래스가 구현해야 합니다.즉, 예를 들어 클래스 내부를 알 필요 없이 Comparable 인터페이스를 구현하는 오브젝트를 별도의 정렬 방식으로 정렬할 수 있습니다(이러한 오브젝트 중 2개는 다음 방법으로 비교할 수 있습니다).compareTo()
).
일부 프로그래밍 언어는 프로토콜/인터페이스(Ada, C#, Dart, Delphi, Go, Java, Logtalk, Object Pascal, Objective-C, OCaml, PHP, Racket, Seed7, Swift)에 대한 명시적 언어 지원을 제공합니다.C++ 인터페이스에서는 추상 베이스 클래스라고 불리며 순수 가상 함수를 사용하여 구현됩니다.OCaml에서는 객체 지향 인터페이스를 클래스 유형이라고 합니다.Perl의 객체 지향 기능은 인터페이스도 지원합니다.
비객체 지향 언어
Go 프로그래밍 언어는 일반적으로 객체 지향 언어로 간주되지 않지만 사용자 정의 유형에서 메서드를 정의할 수 있습니다.Go에는 특정 메서드세트를 지원하는 모든 유형과 호환되는 "인터페이스" 유형이 있습니다(이 유형은 인터페이스를 명시적으로 구현할 필요가 없습니다).빈 인터페이스interface{}
는 모든 타입에 대응하고 있습니다.
기능 프로그래밍 및 분산 프로그래밍 언어는 통신 사용과 유사한 프로토콜이라는 용어를 사용합니다(즉,[citation needed] 허용된 메시지 교환 사양, 메시지가 아닌 교환 강조).특히, 이러한 언어에서 프로토콜의 일부로 간주되는 것은 다음과 같습니다.
- 허용된 메시지 시퀀스,
- 통신 참가자에게 부과되는 제한 사항
- 메시지가 처리될 때 예상되는 영향입니다.
Haskell과 같은 언어의 유형 클래스 또는 ML과 OCaml의 모듈 시그니처는 프로토콜이 사용되는 많은 용도로 사용됩니다.
「 」를 참조해 주세요.
- 개념(일반 프로그래밍)
- 위임(프로그래밍)
- Objective-C의 프로토콜
- 클래스(컴퓨터 사이언스)
- 캡슐화(컴퓨터 과학)
- 퍼블릭 인터페이스
- 기본적인 컴퓨터 사이언스 토픽 목록
- 응용 프로그램 프로그래밍 인터페이스
레퍼런스
- ^ "The Objective-C programming Language:Protocols". Apple Inc. Retrieved 7 October 2012.
- ^ 공식 Python 3 설명서, 추상 객체 계층