Post

소프트웨어 설계 - 객체지향설계

#객체지향설계 ★★★★★

#객체 지향 (Object Oriented)

속성과 메서드가 결합한 형태의 객체로 표현하는 기법

#객체 지향 구성요소

@클객 메 메인속

■ 클래스

  • 변수와 메서드를 정의하는 일종의 틀
  • 데이터를 추상화하는 단위
  • 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성 표현

■ 객체

  • 물리적,추상적으로 자신과 다른 것을 식별한 대상
  • 객체마다 각각의 상태와 식별성을 가짐

■ 메서드

  • 생성된 객체를 사용하는 방법
  • 객체의 구체적인 연산 (함수, 프로시저)

■ 메세지

  • 상호 작용을 하기 위한 수단
  • 객체에게 어떤 행위를 하도록 지시하는 방법

■ 인스턴스

  • 클래스를 통해 만든 실제의 실형 객체
  • 클래스에 속한 각각의 객체
  • 실제 메모리에 할당

■ 속성

  • 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의

#객체 지향 기법

@캡상다추정관

■ 캡슐화 (Encapsulation)

  • 외부와 경계를 만들고, 필요한 인스턴스만을 밖으로 드러내는 기법
  • 결합도가 낮아지고, 재사용이 용이
  • 인터페이스가 단순화 됨
  • 정보 은닉과 관계가 깊음
  • 오류의 파급 효과가 적음

■ 상속성 (Inheritance)

  • 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법

■ 다형성 (Polymorphism)

  • 상속받은 여러개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질
  • 오버로딩(Overloading): 같은 이름의 메서드를 여러개 가지는 기법
1
2
3
void fn(int a);
void fn(char a);
void fn(init a, int b);
  • 오버라이딩(Overriding): 상위 클래스의 메소드를 하위클래스에서 재정의할 수 있는 기법
1
2
3
4
5
6
class A {
  void fn(int a);
}
class B : public A {
  void fn(int a);
}

■ 추상화 (Abstraction)

  • 공통 성질을 추충하여 추상 클래스를 설정
  • 종류: 과정/ 자료/ 제어 추상화

■ 정보 은닉 (Information Hiding)

  • 코드 내부 데이터와 메서드를 숨기고, 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
  • 요구 사항 등 변화에 따른 수정이 가능
  • 독립성을 유지하는데 도움을 줌

■ 관계성 (Relationship)

  • 두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법
  • 연관화: is-member-of 관계
  • 집단화: is part of 관계, part-whole 관계
  • 분류화: is-instance-of 관계
  • 일반화: is-a 관계
  • 특수화: is-a 관계 (상속받으며 나름대로 수정해 고유한 특성을 갖는 관계)

#객체 지향 설계 원칙 (SOLID)

■ 단일 책임의 원칙 (Single Responsibility)

  • 하나의 클래스는 하나의 목적을 위해 생성,
  • 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어야 한다는 원칙

■ 개방 폐쇄 원칙 (Open Close Principle)

  • 컴포넌트, 클래스, 모듈, 함수는 확장에는 열려있고, 변경에는 닫혀 있어야 한다는 원칙

■ 리스코프 치환의 원칙 (Liskov Substitution Principle)

  • 상속받은 하위 클래스는 어디서나 상위 클래스로 교체할 수 있어야 한다는 원칙

■ 인터페이스 분리의 원칙 (Interface Segregation Principle)

  • 자신이 사용하지 않는 인터페이스는 구현하지 말아야한다는 원칙

■ 의존성 역전의 원칙 (Dependency Inversion Principle)

  • 의존성 관계를 맺을 때 변화하기 쉬운 것보다는 변화가 없는 것에 의존 관계를 맺어야한다는 원칙

#객체 지향 분석 (OOA; Object Oriented Analysis)

  • 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 속성과 연산, 관계 등으로 나누어 분석하는 기법
  • 데이터와 행위를 묶어 객체를 정의하고 추상화 시킴
  • 동적 모델링 기법이 사용될 수 있음
  • 상향식 방식

#객체 지향 방법론 종류

■ 야콥슨 (Jacobson)

  • OOSE (Object Oriented Software Engineering)
  • 유스케이스에 의한 접근 방법
  • 기능적 요구사항 중심의 시스템

■ 럼바우 (Rambaugh)

  • OMT (Object Modeling Technology)
  • 그래픽 표기법을 이용해 구성요소를 모델링하는 방법론
  • @객동기
구분설명
객체 모델링● 정보 모델링
● 시스템에서 요구하는 객체를 찾고 객체 간의 관계를 정의
● 가장 중요하며 선행되어 진행
● 객체 다이어그램 활용
동적 모델링● 시간의 흐름을 따라 객체들 사이의 동적인 행위를 표현
● 상태 다이어그램 활용
기능 모델링● 자료 흐름 중심으로 처리과정을 표현
● 자료 흐름도를 활용

■ 부치 (Booch)

  • OOD (Object Oriented Design)
  • 다이어그램 중심으로 개발하는 방법론
  • 분석과 설계의 분리가 불가능

■ 코드-요든 (Coad-Yourdon)

  • E-R 다이어 그램 사용하여 객체의 행위를 모델링
  • 객체/구조 식별, 주체/속성/관계/서비스 정의 등의 과정으로 구성

■ 워프-브록(Wirfs-Brock)

  • 분석과 설계 간의 구분이 없고, 고객의 명세서를 평가하여 실제 작업까지 연속적으로 수행하는 분석 기법
This post is licensed under CC BY 4.0 by the author.