오브젝트(컴퓨터 사이언스)
Object (computer science)컴퓨터 과학에서 오브젝트는 변수, 데이터 구조, 함수 또는 방법이 될 수 있습니다.메모리 영역으로서 값이 포함되어 식별자에 의해 참조됩니다.
객체 지향 프로그래밍 패러다임에서 객체는 변수, 함수 및 데이터 구조의 조합이 될 수 있습니다. 특히 패러다임의 클래스 기반 변형에서는 클래스의 특정 인스턴스를 참조합니다.
데이터베이스 관리의 관계형 모델에서 오브젝트는 테이블이나 컬럼 또는 데이터와 데이터베이스 엔티티 간의 연관(예를 들어 개인의 나이를 특정 개인과 [1]관련짓는 것)일 수 있습니다.
오브젝트 기반 언어
프로그래밍 언어에서 중요한 차이점은 객체 지향 언어와 객체 기반 언어의 차이입니다.ID, 속성 및 속성 등 오브젝트의 기본 기능을 포함하는 언어는 일반적으로 오브젝트 기반으로 간주됩니다.언어는 객체 기반이며 다형성, 상속, 캡슐화 및 가능한 구성 기능을 가진 경우 객체 지향으로 간주됩니다.다형성은 어떤 객체가 전달되었는지에 따라 여러 동작으로 함수의 이름을 과부하시키는 기능을 말합니다.기존 메시지 전달은 첫 번째 개체만 식별하며 해당 개체로 "메시지 전송"하는 것으로 간주합니다.단, Flavors나 Common Lisp Object System(CLOS; 공통 리스프 오브젝트 시스템) 등의 일부 객체 지향 프로그래밍 언어에서는 [2]함수의 첫 번째 파라미터보다 많은 파라미터를 판별할 수 있습니다.상속이란 객체 클래스를 하위 클래스로 분류하고 기존 클래스의 하위 클래스인 새 클래스를 만들며 상위 클래스의 모든 데이터 제약 조건과 동작을 상속할 뿐만 아니라 새로 추가하거나 개체 클래스를 [3][4]하나 이상 변경하는 기능입니다.
객체 지향 프로그래밍
객체 지향 프로그래밍은 모듈식 재사용 가능 소프트웨어 시스템을 설계하기 위한 접근법입니다.객체 지향 접근법은 컴퓨터 프로그래밍의 초기 단계로 거슬러 올라가는 우수한 설계 관행의 발전입니다.객체 오리엔테이션은 구조화된 프로그래밍이나 추상적인 데이터 유형과 같은 오래된 기술의 논리적 확장일 뿐입니다.개체는 다형성과 상속이 추가된 추상 데이터 유형입니다.
프로그램을 코드와 데이터로 구성하기보다는 객체 지향 시스템은 "객체"라는 개념을 사용하여 이 둘을 통합합니다.오브젝트에는 상태(데이터)와 동작(코드)이 있습니다.사물은 현실 세계에서 발견되는 사물과 일치할 수 있다.예를 들어, 그래픽 프로그램에는 동그라미, 정사각형, 메뉴 등의 오브젝트가 있습니다.온라인 쇼핑 시스템은 쇼핑 카트, 고객, 상품과 같은 객체를 가집니다.쇼핑 시스템은 주문, 결제, 할인 등의 행동을 지원합니다.오브젝트는 클래스 계층으로 설계됩니다.그래서 예를 들어 쇼핑 시스템에서는 전자제품, 주방용품, 책과 같은 높은 수준의 수업이 있을 수 있다.예를 들어 CD 플레이어, DVD 플레이어 등 전자 제품에서는 한층 더 개선될 수 있습니다.이러한 클래스와 서브클래스는 [5][6]수리논리에서의 집합과 서브셋에 대응합니다.
특수 객체
오브젝트의 중요한 개념은 디자인 패턴입니다.설계 패턴은 일반적인 문제를 해결하기 위해 재사용 가능한 템플릿을 제공합니다.다음 객체 설명은 [7]객체의 가장 일반적인 설계 패턴의 예입니다.
- 함수 오브젝트: 단일 메서드를 가진 오브젝트(C++에서는 이 메서드는 함수 연산자 "operator()"가 됩니다.이것은 함수에 대한 C/C++ 포인터처럼 기능합니다.
- 불변의 객체: 생성 시 고정된 상태로 설정되며 나중에 변경되지 않는 객체입니다.
- 퍼스트 클래스 객체: 제한 없이 사용할 수 있는 객체.
- 컨테이너 개체: 다른 개체를 포함할 수 있는 개체입니다.
- 공장 개체:목적인 다른 개체를 만들 개체입니다.
- Metaobject:이 다른 개체( 아니는 것이 반드시 개체 클래스와 비교하다) 만들 수 있는 개체입니다.
- Prototype 개체:이 다른 개체 복사에 의해 만들어질 수 있는 특수 metaobject.
- 하나님 개체:일 너무 많은(한anti-pattern의 한 예) 알고 있는 개체입니다.
- Singleton개체:그것의 클래스 프로그램의 수명 중에 있는 유일한 인스턴스 개체입니다.
- 필터 개체:그것의 입력으로 개체의 출력으로 전환시키는 것 데이터 스트림을 받는 개체입니다.문자 종종 우리에게 주어지는 입력 및 출력 스트림이 개울,지만 임의의 개체의 일 수도 있었다.그들은 추상적인 개발자 쪽에서 요구되는 기존의 구현 상충 이것들은 일반적으로 포장지에 싸서 사용된다.
분산 객체
그 객체 지향형 접근법은 아닌 프로그래밍 모델.그것은 똑같이 잘 분산 시스템에 대한 인터페이스 정의 언어로 사용될 수 있다.OMA는 분산 컴퓨팅 모델에 그린 물체는 더 크게, 더 오래 지속되고 있으며, 더 많은 개체 프로그래밍보다 서비스 관련 결이 보이는 경향이 있다.
표준 법 분산 개체를 패키지로 인터페이스 정의 언어(IDL)를 통해서입니다.한 IDL모든 배포된 서버 개체의 세부 사항들은 클라이언트를 보호한다.인데 세부 정보는 개체에 대해, 어떤 운영 체계, 그리고 다른 플랫폼 특정 문제들이 쓰면 프로그래밍 언어가 공존하고 있는 컴퓨터.는 일정한 방식으로 모든 사물에는 거래와 지속성과 같은 서비스를 제공하는 분산 환경의 IDL은 또한 보통 부분이다.분산 객체에 대한 가장 일반적인 표준 중 두 가지는 객체 관리 그룹의 CORBA 표준과 마이크로소프트의 DCOM입니다.[8]
분산 객체 외에 분산 컴퓨팅을 활성화하기 위해 객체의 기본 개념에 대한 다양한 확장 기능이 제안되었습니다.
- 프로토콜 개체는 개체 지향 인터페이스 내에서 네트워크 통신을 포함하는 프로토콜 스택의 구성 요소입니다.
- 복제된 개체는 내부 상태 간에 높은 일관성을 달성하기 위해 분산 다중 파티 프로토콜을 실행하고 요청에 조정된 방식으로 응답하는 분산 개체(복제본이라고 함) 그룹입니다.예를 들어 폴트 톨러런스 CORBA 오브젝트가 있습니다.
- 라이브 분산 개체(또는 단순히 라이브 개체)[9]는 복제된 개체 개념을 내부적으로 분산 프로토콜을 사용할 수 있는 복제본 그룹으로 일반화하므로 로컬 상태 간의 일관성이 약할 수 있습니다.
분산 개체 및 프로토콜 개체와 같은 이러한 확장 중 일부는 특정 컨텍스트(리모트 메서드 호출 또는 프로토콜 구성 등)에서 사용되는 특수한 유형의 "일반" 개체를 가리키는 도메인별 용어입니다.복제 개체 및 라이브 분산 개체와 같은 다른 개체는 한 번에 하나의 위치에 개체가 상주하는 일반적인 경우를 포기하고 여러 위치에 걸쳐 있을 수 있으며, 상태가 약하게 일관될 수 있으며 구성원 자격이 거부될 수 있는 엔티티(복제) 그룹에 개념을 적용한다는 점에서 더 비표준적입니다.변화하다
시멘틱 웹
시맨틱 웹은 본질적으로 분산 객체 프레임워크입니다.시맨틱 웹의 2가지 주요 테크놀로지는 Web Ontology Language(OWL)와 Resource Description Framework(RDF)입니다.RDF는 인터넷을 통해 액세스할 수 있는 기본 객체(이름, 속성, 속성, 관계)를 정의하는 기능을 제공합니다.OWL은 집합 이론에 따라 다중 상속과 같은 추가적인 모델링 기능을 제공하는 보다 풍부한 개체 모델을 추가합니다.
OWL 개체는 인터페이스 정의 언어를 통해 액세스하는 표준 대규모 분산 개체와 다릅니다.인터넷은 끊임없이 발전하고 있고, 한 세트의 인터페이스에 대한 표준화를 달성하기 어렵기 때문에 그러한 접근법은 인터넷에 적합하지 않을 것이다.OWL 개체는 Java 및 C++와 같은 프로그래밍 언어에서 응용 프로그램 도메인 모델을 정의하는 데 사용되는 개체와 비슷한 경향이 있습니다.
그러나 OWL 개체와 기존 개체 지향 프로그래밍 개체 사이에는 중요한 차이가 있습니다.기존 개체는 일반적으로 단일 상속을 통해 정적 계층으로 컴파일되지만 OWL 개체는 동적입니다.OWL 개체는 런타임에 구조를 변경할 수 있으며 새 클래스 또는 다른 클래스의 인스턴스가 될 수 있습니다.
또 다른 중요한 차이점은 모델이 현재 시스템에 없는 정보를 처리하는 방법입니다.프로그래밍 개체와 대부분의 데이터베이스 시스템은 "폐쇄 세계 가정"을 사용합니다.사실이 시스템에 알려지지 않은 경우 그 사실은 거짓으로 간주됩니다.시맨틱 웹 오브젝트는 오픈월드 가정을 사용합니다.스테이트먼트는 false라는 실제 관련 정보가 있는 경우에만 false로 간주됩니다.그렇지 않으면 true도 false도 아닌 미지의 것으로 간주됩니다.
OWL 오브젝트는 사실 KL-ONE이나 Loom과 같은 인공지능 프레임 언어에서 가장 유사한 오브젝트입니다.
다음 표에서는 Java 또는 C++ 등의 객체 지향 프로그래밍 언어에서 사용되는 기존 객체를 시멘틱 웹 [10][11]개체와 대조합니다.
OOP 오브젝트 | 시맨틱 웹 오브젝트 |
---|---|
클래스는 인스턴스의 유형으로 간주됩니다. | 클래스는 개인의 집합으로 간주됩니다. |
인스턴스는 런타임에 유형을 변경할 수 없습니다. | 클래스 멤버십은 런타임에 변경될 수 있습니다. |
클래스 목록은 컴파일 시 완전히 인식되며 그 이후에는 변경할 수 없습니다. | 클래스는 런타임에 만들고 변경할 수 있습니다. |
컴파일러는 빌드 시 사용됩니다.컴파일 시 오류는 문제를 나타냅니다. | 이유자를 사용하여 런타임 또는 빌드 시 분류 및 일관성 검사를 수행할 수 있습니다. |
클래스는 필수 함수와 방법을 통해 많은 의미와 행동을 인코딩합니다. | 클래스는 OWL 문장에서 의미를 명확히 합니다.필수 코드를 첨부할 수 없습니다. |
인스턴스는 실행 중인 프로그램 외부에서 쉽게 주소 지정할 수 없는 범위 내에서 익명입니다. | 이름 있는 모든 RDF 및 OWL 리소스에는 참조할 수 있는 고유한 URI가 있습니다. |
폐쇄적 세계: 진술이 사실임을 증명하기에 충분한 정보가 없다면, 그것은 거짓으로 간주됩니다. | 열린 세계: 진술이 사실임을 증명하기에 충분한 정보가 없다면, 그것은 진실일 수도 있고 [12]거짓일 수도 있다. |
「 」를 참조해 주세요.
레퍼런스
- ^ Oppel, Andy (2005). SQL Demystified. McGraw Hill. p. 7. ISBN 0-07-226224-9.
- ^ Gabriel, Richard; Linda G. DeMichie (1987). "The Common Lisp Object System: An Overview" (PDF). Lucid Inc. Technical Report. Lecture Notes in Computer Science. 276: 151. Bibcode:1987LNCS..276..151D. doi:10.1007/3-540-47891-4_15. ISBN 978-3-540-18353-2.
- ^ Wegner, Peter (December 1987). Meyrowitz, Norman (ed.). "Dimensions of Object-Based Language Design". OOPSLA'87 Conference Proceedings. 22 (12): 168–182. doi:10.1145/38807.38823.
- ^ Barbey, S; M. Kempe; A. Strohmeier (1993). "Object-Oriented Programming with Ada 9X". Draft Technical Report. Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory. Retrieved 15 December 2013.
Ada 83 itself is generally not considered to be object-oriented; rather, according to the terminology of Wegner [Weg 87], it is said to be object-based, since it provides only a restricted form of inheritance and it lacks polymorphism.
- ^ Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard (1992). Object Oriented Software Engineering. Addison-Wesley ACM Press. ISBN 0-201-54435-0.
- ^ "What is an Object?". oracle.com. Oracle Corporation. Retrieved 13 December 2013.
- ^ Martin, Robert C. "Design Principles and Design Patterns" (PDF). Archived from the original (PDF) on September 6, 2015. Retrieved 28 April 2017.
- ^ Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 399–403. ISBN 0-471-15325-7.
- ^ 오스트로프스키, 버먼, 돌레브, D, 앤, J. (2008)."실시간 분산 객체를 사용한 프로그래밍", 제22회 객체 지향 프로그래밍에 관한 유럽회의의 속행, 2008년 7월 7일-11일, J. Vitek, Ed., 컴퓨터 과학 강의 노트, vol.142, Springer-Ver-lagidel, berlin, 463.heberg, Berlin, Berlin.
- ^ Berners-Lee, Tim; James Hendler; Ora Lassila (May 17, 2001). "The Semantic Web A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities". Scientific American. 284: 34–43. doi:10.1038/scientificamerican0501-34. Archived from the original on April 24, 2013.
- ^ Knublauch, Holger; Oberle, Daniel; Tetlow, Phil; Wallace, Evan (2006-03-09). "A Semantic Web Primer for Object-Oriented Software Developers". W3C. Retrieved 2008-07-30.
- ^ 표에서 발췌한 표: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/
외부 링크
- 오브젝트란?Java 튜토리얼에서