카테고리 없음

객체 지향 설계

jjonse 2022. 5. 26. 15:57

(1) 객체 지향

 

1. 객체 지향이란

- 객체 지향은 실세계의 개체를  속성과 메소드가 결합한 형태의 객체로 표현하는 기법이다.

 

2. 객체 지향 구성요소

구성요소 설명
클래스 특정 객체 내에 있는 변수와 메소드를 담는 틀
객체 식별 가능한 대상(클래스에 정의된 대로 메모리에 할당)
메소드 클래스로부터 생성된 객체를 사용하는 방법
메시지 객체 간 상호 작용을 하기 위한 수단
인스턴스 클래스를 통해 만든 실제의 실형 객체
속성 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의

 

3. 객체 지향 기법

  • 캡슐화 : 서로 연관된 데이터와 함수를 함께 묶어 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
  • 상속성 : 물려받아 사용
  • 다형성 : 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • 추상화 : 추상 클래스를 설정
  • 정보 은닉 : 코드 내부 데이터와 메소드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
  • 관계성 : 두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법

 

4. 객체 지향 방법론 종류

종류 만든이 설명
OOSE 야콥슨 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용
OMT 럼바우 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
객체 모델링 -> 동적 모델링 -> 기능 모델링
OOD  부치 다이어그램 중심으로 개발하는 방법론

 

(2) 디자인 패턴

1. 디자인 패턴이란

- 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 스이는 설계 방법을 정리한 패턴

 

2. 디자인 패턴 구성요소

  • 패턴의 이름 : 디자인 패턴을 부를 때 사용하는 이름과 유형
  • 문제 및 배경 : 디자인 패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미
  • 솔루션 : 디자인 패턴을 이루는 요소들
  • 사례 : 디자인 패턴의 간단한 적용 사례
  • 결과 : 디자인 패턴을 사용하면 얻게 되는이점이나 영향
  • 샘플 코드 : 디자인 패턴이 적용된 원시 코드

 

3. 디자인 패턴 종류

 

▶ 생성 패턴

Builder : 복잡한 인스턴스를 조립하여 만드는 구조

Prototype : 원형을 만들어 놓고 필요한 부분만 수정하는 패턴

Factory Method : 상위 클래스에서 인터페이스 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식

Abstract Factory : 인터페이스를 제공하는 패턴

Singleton : 전역 변수를 생성하지 않고 객체를 하나만 생성하여 어디서든지 참조할 수 있도록 하는 패턴

 

 

▶ 구조 패턴

Bridge : 기능의 클래스 계층과 구현의 클래스 계층을 연결한 후에 구현부에서 추상 계층을 분리하여 확장

Decorator : 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴

Facade : 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 구조파악을 쉽게하는 패턴

Flyweight : 다수의 객체로 생성될 경우 본질적인 요소를 클래스 화하여 공유하는 디자인 패턴

Proxy : 실제 객체에 대한 대리 겍체로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 하는 패턴

Composite : 객체들의 관계를 트리 구조로 구성하여 부분-전쳬 게층을 표현하는 패턴

Adapter : 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴

 

 

▶ 행위 패턴

Mediator : 중재자를 두고, 중재자에게 모든 것을 요구하게 해주는 디자인 패턴

Interpreter : 여러 형태의 구문을 해석할 수 있게 만드는 디자인 패턴

Iterator : 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴

Template Method : 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행하는 패턴

Obeserver : 일대 다의 의존성을 가지며 느슨하게 결합하는 디자인 패턴

State : 객체 상태를 캡슐화하여 클래스화하는 디자인 패턴

Visitor : 해당 클래스의 메소드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴

Command : 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴

Strategy : 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴

Memento : 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴

Chain of Responsibility : 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴