객체 지향 설계

Object-oriented design

객체 지향 설계(OOD)는 소프트웨어 문제를 해결하기 위해 객체 상호 작용 시스템을 계획하는 프로세스입니다.이것은 소프트웨어 설계에 대한 하나의 접근법입니다.

개요

오브젝트에는 엔티티를 나타내기 위해 그룹화된 캡슐화된 데이터와 프로시저가 포함됩니다.'객체 인터페이스'는 객체와 상호 작용하는 방법을 정의합니다.오브젝트 지향 프로그램은 이들 오브젝트의 상호작용에 의해 기술된다.객체 지향 설계는 객체 지향 분석 에 식별되고 문서화된 문제를 해결하기 위해 객체와 객체의 상호작용을 정의하는 학문입니다.

다음은 오브젝트 지향 설계의 클래스 기반 서브셋에 대한 설명입니다.이 서브셋에는 오브젝트 프로토타입 기반의 접근법이 포함되지 않습니다.이 접근법에는 일반적으로 클래스를 인스턴스화하는 것이 아니라 다른 (프로토타입) 오브젝트를 복제하는 방법이 포함되어 있지 않습니다.객체 지향 설계는 객체 지향 분해 프로세스를 포함하는 설계 방법이며, 설계 중인 시스템의 상태 및 동적 모델뿐만 아니라 논리적 및 물리적 모델을 모두 묘사하기 위한 표기법입니다.

객체 지향 설계 토픽

객체 지향 설계를 위한 입력(소스)

객체 지향 설계의 입력은 객체 지향 분석의 출력에 의해 제공됩니다.출력 아티팩트를 객체 지향 설계의 입력으로 사용하기 위해 완전히 개발할 필요는 없습니다.분석과 설계는 동시에 수행될 수 있으며, 실제로 한 활동의 결과는 반복 프로세스를 통해 짧은 피드백 사이클로 다른 작업을 수행할 수 있습니다.분석과 설계를 모두 증분적으로 수행할 수 있으며, 아티팩트를 한 번에 완전히 개발하는 것이 아니라 지속적으로 키울 수 있습니다.

객체 지향 설계의 일반적인 입력 아티팩트는 다음과 같습니다.

  • 개념 모델:객체 지향 분석의 결과로서 문제 영역의 개념을 포착합니다.개념 모델은 동시성 또는 데이터 스토리지와 같은 구현 세부 사항으로부터 독립되도록 명시적으로 선택됩니다.
  • 사용 사례:시스템이 유용한 작업을 수행하도록 유도하는 일련의 이벤트에 대한 설명입니다.각 사용 사례는 시스템이 특정 비즈니스 목표 또는 기능을 달성하기 위해 어떻게 행동자라고 불리는 사용자와 상호 작용해야 하는지를 전달하는 하나 이상의 시나리오를 제공합니다.유스케이스 액터는 최종 사용자 또는 기타 시스템일 수 있습니다.대부분의 경우 사용 사례는 사용 사례 다이어그램에 자세히 설명되어 있습니다.유스케이스 다이어그램은 행위자(사용자 또는 다른 시스템)와 그들이 수행하는 프로세스를 식별하기 위해 사용됩니다.
  • 시스템 시퀀스 다이어그램:시스템 시퀀스 다이어그램(SSD)은 사용 사례의 특정 시나리오에 대해 외부 행위자가 생성하는 이벤트, 그 순서 및 가능한 시스템 간 이벤트를 보여주는 그림입니다.
  • 사용자 인터페이스 매뉴얼(해당하는 경우):최종 제품의 사용자 인터페이스의 모양과 느낌을 보여 주는 문서입니다.이것이 꼭 필요한 것은 아니지만, 최종 제품을 시각화하는 데 도움이 되고, 따라서 디자이너에게 도움이 됩니다.
  • 관계형 데이터 모델(해당하는 경우):데이터 모델은 데이터가 표현되고 사용되는 방법을 설명하는 추상 모델입니다.객체 데이터베이스를 사용하지 않는 경우 객체-관계 매핑을 위해 선택한 전략이 OO 설계 프로세스의 결과이기 때문에 일반적으로 관계 데이터 모델을 설계 전에 생성해야 한다.그러나 관계형 데이터 모델과 객체 지향 설계 아티팩트를 동시에 개발할 수 있으며 아티팩트의 성장은 다른 아티팩트의 정교화를 촉진할 수 있습니다.

객체 지향 개념

객체 지향 설계의 5가지 기본 개념은 프로그래밍 언어에 내장된 구현 수준의 기능입니다.이러한 기능은 보통 다음과 같은 이름으로 불립니다.

  • 오브젝트/클래스: 데이터에 작용하는 메서드 또는 함수와의 긴밀한 결합 또는 연관성.이것을 클래스 또는 오브젝트라고 부릅니다(개체는 클래스를 기반으로 작성됩니다).각 개체는 별도의 기능을 수행합니다.그것은 그 속성, 그것이 무엇이고 무엇을 할 수 있는지에 따라 정의된다.오브젝트는 클래스의 일부가 될 수 있습니다.클래스는 유사한 오브젝트 세트입니다.
  • 정보 숨기기:오브젝트의 일부 컴포넌트를 외부 엔티티로부터 보호하는 기능.이는 language 키워드에 의해 실현되며 변수를 개인으로 선언하거나 소유 클래스에 대해 보호할 수 있습니다.
  • 상속:클래스가 다른 클래스의 기능을 확장하거나 재정의하는 기능.이른바 서브클래스에는 슈퍼클래스에서 파생된(상속된) 섹션 전체가 있으며, 그 후 자체 함수 및 데이터 세트가 있습니다.
  • 인터페이스(개체 지향 프로그래밍):메서드의 구현을 연기하는 기능.기능 또는 메서드의 시그니처를 실장하지 않고 정의하는 기능.
  • 다형성(구체적으로는 서브타이핑):개체하위 개체로 바꾸는 기능.개체 변수의 기능. 개체뿐만 아니라 모든 하위 개체도 포함할 수 있습니다.

개념 설계

  • 오브젝트 마더 정의, 개념도에서 클래스 다이어그램 작성:보통 엔티티를 클래스에 매핑합니다.
  • 애트리뷰트 식별
  • 설계 패턴 사용(해당하는 경우):디자인 패턴은 완성된 디자인이 아니라 일반적인 문제에 대한 해결책에 대한 설명입니다.[1]설계 패턴을 사용하는 주된 장점은 여러 애플리케이션에서 재사용할 수 있다는 것입니다.또한 다양한 상황 및/또는 응용 프로그램에서 사용할 수 있는 문제를 해결하는 방법에 대한 템플릿으로 생각할 수도 있습니다.객체 지향 설계 패턴은 일반적으로 관련된 최종 응용 프로그램 클래스 또는 객체를 지정하지 않고 클래스 또는 객체 간의 관계와 상호작용을 보여줍니다.
  • 응용 프로그램 프레임워크를 정의합니다(해당하는 경우).응용 프로그램 프레임워크는 일반적으로 특정 운영 체제에 대한 응용 프로그램의 표준 구조를 구현하는 데 사용되는 라이브러리 또는 클래스의 집합입니다.많은 양의 재사용 가능한 코드를 프레임워크에 번들함으로써 개발자는 개발되는 각 새로운 애플리케이션에 대해 많은 양의 표준 코드를 재작성해야 하는 작업을 줄일 수 있기 때문에 많은 시간을 절약할 수 있습니다.
  • 영속적인 오브젝트/데이터 식별(해당하는 경우):응용 프로그램의 단일 런타임보다 오래 지속되는 개체를 식별합니다.관계형 데이터베이스를 사용하는 경우 객체 관계 매핑을 설계합니다.
  • 원격 개체를 식별하고 정의합니다(해당하는 경우).

객체 지향 설계의 출력(제공물)

  • 시퀀스 다이어그램:시스템 시퀀스 다이어그램을 확장하여 시스템 이벤트를 처리하는 특정 개체를 추가합니다.
시퀀스 다이어그램은 병렬 수직선, 동시에 존재하는 다른 프로세스 또는 오브젝트, 그리고 수평 화살표로서 이들 간에 교환되는 메시지를 발생하는 순서대로 보여줍니다.
  • 클래스 다이어그램:클래스 다이어그램은 시스템의 클래스, 속성 및 클래스 간의 관계를 표시하여 시스템의 구조를 설명하는 정적 구조 UML 다이어그램의 일종입니다.시퀀스 다이어그램의 개발을 통해 식별된 메시지와 클래스는 시스템의 글로벌 클래스 다이어그램 자동 생성에 대한 입력으로 사용될 수 있습니다.

일부 설계 원칙 및 전략

  • 종속성 주입:기본 개념은 객체가 다른 객체의 인스턴스를 갖는 것에 의존할 경우 필요한 객체가 종속 객체에 "주입"된다는 것입니다. 예를 들어 데이터베이스 연결을 내부적으로 생성하는 대신 데이터베이스 연결을 생성자에게 전달하는 것입니다.
  • 비순환 종속성 원칙:패키지 또는 컴포넌트의 의존관계 그래프(세밀도는 한 개발자의 작업 범위에 따라 다름)에는 사이클이 없어야 합니다.이를 지향성 [2]비순환 그래프라고도 합니다.예를 들어 패키지 C는 패키지 A에 의존하는 패키지 B에 의존합니다.패키지 A도 패키지 C에 의존하면 사이클이 발생합니다.
  • 복합 재사용 원칙:상속보다 [1]개체의 다형 구성을 선호합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. 1995. ISBN 0-201-63361-2.
  2. ^ "What Is Object-Oriented Design?". Object Mentor. Archived from the original on 2007-06-30. Retrieved 2007-07-03.

외부 링크