①일반-특정 구조는 분류 구조라고 하며, '또는' 관계 또는 '이다' 관계라고도 할 수 있습니다.
②전체-부분 구조는 집합 구조라고 하며, 이들 사이의 관계는 와 관계 또는 a는 관계라고 할 수 있습니다.
(3) 객체
객체는 가장 단순한 정수부터 복잡한 항공기까지 연구하고자 하는 모든 것을 말합니다. 구체적인 사물뿐만 아니라 추상적인 규칙, 계획 또는 사건도 나타낼 수 있습니다.
(4) 객체의 상태와 동작
객체에는 상태가 있으며, 객체는 데이터 값으로 상태를 설명합니다.
객체에는 또한 객체의 상태를 변경하는 연산이 있으며, 객체와 그 연산은 객체의 동작입니다.
개체는 데이터와 연산의 조합을 가능하게 하여 데이터와 연산을 하나의 객체 안에 캡슐화합니다.
(5) 메시지와 메서드
객체 간의 통신 구조를 메시지라고 합니다. 객체의 연산에서 객체에 메시지를 보낼 때 메시지에는 수신 객체가 어떤 연산을 수행할 것이라는 정보가 포함되어 있습니다. 보내는 메시지에는 최소한 메시지를 받는 객체의 이름과 객체에 보내는 메시지의 이름(즉, 객체 이름과 메서드 이름)이 포함되어야 합니다. 일반적으로 메시지를 알고 있는 객체에 알려진 변수 이름이나 모든 객체에 알려진 전역 변수 이름이 될 수 있는 매개 변수를 설명할 필요가 있습니다.
특징
(1) 객체 고유성
각 객체에는 해당 객체를 찾을 수 있는 고유한 식별자가 있습니다. 개체의 수명 주기 동안 로고는 변경되지 않으며 다른 개체는 동일한 로고를 가질 수 없습니다.
(2) 분류
분류는 일관된 데이터 구조(속성)와 동작(연산)을 가진 객체를 클래스로 추상화하는 것입니다. 클래스는 애플리케이션과 관련된 중요한 속성을 반영하고 그렇지 않은 속성은 무시하는 추상화입니다. 모든 클래스 구분은 주관적이지만 특정 애플리케이션과 관련이 있어야 합니다.
(3) 상속
상속은 하위 클래스가 부모 클래스의 데이터 구조와 메서드를 자동으로 공유하는 메커니즘으로, 클래스 간의 관계입니다. 클래스를 정의하고 구현할 때 기존 클래스를 기반으로 기존 클래스가 정의한 내용을 자신의 것으로 가져와서 새로운 내용을 추가할 수 있습니다.
상속은 객체 지향 프로그래밍 언어를 다른 언어와 구별하는 가장 중요한 기능으로, 다른 언어에서는 사용할 수 없습니다.
클래스 계층 구조에서 하위 클래스는 단일 상속이라고 하는 하나의 부모 클래스의 데이터 구조와 메서드만 상속합니다.
클래스 계층 구조에서 하위 클래스는 둘 이상의 부모 클래스로부터 데이터 구조와 메서드를 상속하는데, 이를 다중 상속이라고 합니다.
소프트웨어 개발에서 클래스 상속은 생성된 소프트웨어를 개방적이고 확장 가능하게 만들며 정보를 구성하고 분류하는 효과적인 방법입니다. 객체와 클래스의 생성을 단순화하고 코드의 재현성을 높입니다.
상속을 사용하면 클래스 사양의 계층 구조가 제공됩니다. 클래스 상속 관계를 통해 공통 기능을 공유하여 소프트웨어의 재사용성을 높일 수 있습니다.
(4)다형성
다형성이란 동일한 연산이나 함수, 절차가 여러 유형의 객체에 작용하여 서로 다른 결과를 얻을 수 있다는 것을 의미합니다. 서로 다른 객체는 동일한 메시지를 다른 결과로 받습니다. 이 현상을 다형성이라고 합니다.
다형성을 사용하면 각 객체가 동일한 메시지에 대해 고유한 방식으로 응답할 수 있습니다.
다형성은 소프트웨어의 유연성과 재사용성을 향상시킵니다.
요소
(1) 추상화
추상화는 엔티티의 본질과 고유 속성을 강조하는 것입니다. 시스템 개발에서 추상화는 구현 방법을 결정하기 전에 객체의 의미와 동작을 파악하는 것을 말합니다. 추상화를 사용하면 일부 세부 사항을 미리 고려하지 않아도 됩니다.
클래스는 객체의 데이터(즉, 상태)와 동작에 대한 추상화를 구현합니다.
(2) 캡슐화(정보 숨김)
캡슐화는 소프트웨어 컴포넌트의 우수한 모듈성을 보장하기 위한 기초입니다.
객체 지향 클래스는 잘 포장된 모듈입니다. 클래스 정의는 설명(사용자에게 보이는 외부 인터페이스)과 구현(사용자에게 보이지 않는 내부 구현)을 명시적으로 분리하고, 내부 구현은 특별히 정의된 범위에 따라 보호 기능을 제공합니다.
객체는 캡슐화의 가장 기본적인 단위입니다. 캡슐화는 프로그램 상호 의존성으로 인한 변경의 영향을 방지합니다. 객체 지향 패키징은 기존 언어 패키징보다 더 명확하고 강력합니다.
(3)* * * * 즐거움
객체 지향 기술은 다양한 수준에서 * * * * 즐거움을 증진합니다:
(1) 같은 클래스에서 * * * * 즐거움.
동일한 클래스의 객체는 동일한 데이터 구조를 가집니다. 이러한 객체들은 구조적 및 행동적 특성 측면에서 * * * 공유 관계를 가집니다.
② 동일한 애플리케이션에서의 즐거움.
동일한 애플리케이션의 클래스 계층 구조에서 상속 관계를 가진 유사한 서브클래스 간에 데이터 구조와 동작이 상속되어 모든 유사한 서브클래스가 * * * 동일한 구조와 동작을 누릴 수 있습니다. 코드의 즐거움을 위해 상속을 사용하는 것도 객체지향의 주요 장점 중 하나입니다.
3) 다양한 애플리케이션에서의 즐거움.
객체 지향은 동일한 애플리케이션 내에서 정보를 공유할 수 있을 뿐만 아니라 향후 목표를 위해 재사용할 수 있도록 설계를 준비합니다. 클래스 라이브러리의 메커니즘과 구조를 통해 서로 다른 애플리케이션에서 정보를 공유할 수 있습니다.
(4) 프로그램 구조보다는 객체 구조에 중점을 둡니다.
개발 방법
객체 지향 개발 방법에 대한 연구는 점점 더 성숙해지고 있으며, 많은 객체 지향 제품들이 세상에 등장하고 있습니다. 객체지향 개발 방법에는 Coad 방법, Booch 방법, OMT 방법 등이 있습니다.
(1)부흐 방법
부흐는 먼저 객체 지향 소프트웨어 개발 방법의 기본적인 문제점을 설명하면서 객체 지향 개발은 전통적인 기능 분해와는 근본적으로 다른 설계 방법이라고 지적했습니다. 기능적 분해는 문제 공간을 변형해야만 얻을 수 있는 반면, 객체 지향 소프트웨어 분해는 객관적인 문제에 대한 이해에 더 가깝습니다.
(2) Coad 방법
코아드 방법은 1989년 코아드와 유든이 제안한 객체 지향 개발 방법입니다. 이 방법의 가장 큰 장점은 다년간의 대규모 시스템 개발 경험과 객체 지향 개념의 유기적인 결합을 통해 객체, 구조, 속성 및 연산을 식별하는 일련의 체계적인 원칙을 제안한다는 것입니다. 이 방법은 요구사항 관점에서 클래스와 클래스 계층을 더욱 명확하게 식별합니다. Coad 방법에서는 클래스 및 클래스 계층 구조라는 용어를 사용하지 않지만, 실제로 분류 구조, 속성 및 데이터 캡슐화에서 형성된 엔티티는 객체입니다. 객체는 클래스의 인스턴스입니다. 어떤 객체는 살아 있고 어떤 객체는 죽어 있습니다. 실생활에서 엔티티는 사람, 풍선, 컴퓨터 등과 같은 객체입니다. 예를 들어 이 자동차, 이 사람, 이 집, 이 테이블, 이 식물, 이 수표, 이 매킨토시 등이 있습니다. 요약하면 모든 것이 객체입니다. 객체 지향 프로그래밍에서 객체는 시스템의 기본 운영 주체이자 코드와 데이터의 집합입니다. [2] 애플리케이션 도메인에서 의미가 있고 해결해야 할 문제와 관련이 있는 모든 것이 객체가 될 수 있으며, 구체적인 물리적 실체의 추상화, 인공적인 개념 또는