본문 바로가기
소프트웨어

[소프트웨어] 객체 지향의 개요, 객체지향 방법론의 종류

by 정공자씨 2024. 1. 15.

 


객체지향의 개요   


  • 객체(object) 개념을 사용하여 실세계를 표현 및 모델링하며
  • 객체와 객체들이 모여 프로그램을 구성

 

1. 객체란?

 

1) 객체
  • 속성과 이를 처리하기 위한 동작(연산, 메소드)을 결합시킨 실체
  • 행위에 대한 특징을 나타내며
  • 객체는 식별성을 갖음
  • 각 객체를 구분하기 위한 이름을 가짐
    • 각 학생을 구분하기 위하여 : 학생의 이름, 학과, 연락처 등
  • 객체와 객체는 상호 연관성에 의한 관계가 형성
    • 학생과 성적 과의 관계

2) 속성(attribute)
  • 객체가 갖고 있는 특성이나 값을 의미
  • ‘명사’ 표시

3)메소드(method, 함수, 서비스, 동작)
  • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의
  • ‘동사’ 표시

4) 클래스(class)
  • 공통된 속성의 객체들을 하나의 집합으로 묶은 단위
  • 객체의 일반적인 타입을 의미

5) 인스턴스(instance)
  • 하나의 클래스에 속하는 구체적인 객체를 의미하며,
  • 클래스로부터 새로운 객체를 생성하는 것을 ‘인스턴스화’라고 함
    • 새로운 객체를 생성하여(인스턴스화) 속성과 메서드를 사용할 수 있음

 

 

 

2. 객체 지향의 특징

주체성
  • 다른 객체들과 식별할 수 있는 속성
다형성
  • 하나의 메시지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미
  • 하나의 메시지를 가지고, 클래스가 어떻게 처리하느냐에 따라서 기능을 여러가지를 가질 수 있음
분류성
  • 동일 속성과 행위를 갖는 객체들을 하나의 클래스로 분류하는 속성
상속성(Inheritance)
  • 이미 정의된 상위 클래스의 메소드를 비롯한 모든 속성하위 클래스가 물려받을 수 있는 것
  • 상속받은 속성을 재사용할 수 있음
추상화(abstraction) 
  • 불필요한 부분을 생략하고
  • 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화시키는 것으로
  • 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념
캡슐화(Encapsulation)
  • 데이터 데이터를 조작하는 연산들을 함께 묶어 하나의 모듈내에서 결합되도록 하는 것으로
  • 객체의 자료가 변조되는 것을 막으며
  • 그 객체의 사용자들에게 내부적인 구현의 세부적인 내용들을 은폐시키는 것
    • 객체를 사용하고 싶다면, 객체를 생성한 인스턴스화가 필요
  • 인터페이스가 단순화
  • 소프트웨어의 재사용성이 높아짐
  • 변경 발생 시, 오류의 파급 효과가 적음
정보은폐(information hiding=정보은닉)
  • 캡슐화된 정보를 외부에 감추는 것
  • 외부에서는 해당 정보를 확인 할 수 없음
  • 허가된 사용자만 정보를 볼 수 있음

 

 

 

 


객체지향 방법론의 종류


객체지향 분석 기법(3가지)

① 럼바우(Rumbaugh)객체 지향 분석기법
      -  객체 모델링 - 동적 모델링 -  기능 모델링
② 코드(Coad)와 요오돈(yourdon)기법
④ Booch 기법

 

 

1. 럼바우(Rumbaugh)객체 지향 분석기법 ★

[ 개요 ]

객체모델링 기법(OMT)이라고 하며 그래픽 표기법을 이용하여 모든 소프트웨어 구성 요소들의 객체를 모델링


[ 분석절차 ]

객체모델링 - 동적 모델링 -  기능 모델링 (      )

 

 

1) 객체모델링(Object Modeling) = 정보 모델링 

 

[ 의미 ] 

  • 현실세계 영역으로부터 시스템에서 요구되는 객체와 클래스를 찾아, 그들간의 연관성, 집단화, 일반화 중심으로 규명하여
  • 사용되는 도식화 그림은 ‘E-R 다이어그램을 나타냄

 

[ 모델링 순서 ]

  1. ① 객체와 클래스를 식별
  2. ② 클래스에 대한 자료사전을 작성
  3. ③ 클래스간의 관계를 정의한다.
  4. ④ 객체 속성 및 연결관계를 정의한다.
  5. ⑤ 클래스를 계층화하고 모듈로 정의한다
  6. ⑥ 생성된 모형을 반복 검증

 


 

 

2) 동적모델링(Dynamic Modeling)

 

[ 의미 ] 

  • 시간의 흐름에 따라 변하는 객체들 사이의 제어 흐름, 상호 작용, 연산 순서 등의 동적인 행위를
  • 상태 다이어그램(상태도)’으로 나타냄

 

[ 모델링 순서 ]

  1. ① 사건의 상호작용 순서에 대한 시나리오 작성
  2. ② 사건 시나리오 역할과 시간에 따라 표기한 후 사건 추적도를 작성
  3. ③ 사건 추적도를 사건 발생자의 관계로 설명하는 사건 흐름도를 작성
  4. ④ 사건과 상태를 연결시킨 상태도 작성

 


 

 

3) 기능 모델링(Function Modeling)

 

[ 의미 ] 

  • 다수 프로세스 간의 데이터 흐름을 중심으로 처리 과정을
  • 데이터 흐름도(DFD, 자료 흐름도)로 나타냄

 

[ 모델링 순서 ]

  1. ① 외부와 시스템간의 입출력 자료를 정의
  2. ② 자료흐름도를 상세화한다.
  3. ③ 프로세스 기능에 대한 정의를 기능 명세서로 작성
  4. ④ 제약조건을 파악
  5. ⑤ 최적화 기준을 명세화

 

<참고>
데이터 흐름도


[ 의미 ]
- 시간이 경과함에 따라 자료가 흐르는 관점에 맞게 처리되는 작업 절차를 그린 자료의 흐름도
- 분석 단계에서 사용

[ 특징 ]
- 시스템에 대한 정보 흐름이 표현됨
- 세분화가 필요함
- 제어의 흐름보다 데이터의 흐름을 중요시함

[ 데이터 흐름도의 기호 ]
- 데이터 입,출력에 대한 흐름

 

 

 

 

 

2. 코드(Coad)와 요오돈(yourdon)기법

  • 분석 기법
    • E-R다이어그램을 사용하여 개체(ENTITY)의 활동들을 데이터 모델링하는데 초점을 둠
  • 설계 기법
    • 분석 사항을 하향식 방법으로 설계에 접근하여 프로토타입으로 개발하는 객체지향 설계기법으로
    • 문제영역요소, 사람과 상호작용요소, 작업관리 요소, 데이터 관리 요소로 구성

 

 

 

3. Booch 기법

  • 1991년 Booch에 의해 발표된 객체지향 설계 기법
  • 설계단계에 중점을 두어 클래스 및 객체의 식별과 관계를 강조
[ 설계 단계에 중점 ]

  정적 모델링

  • 논리적 관점을 표현하는 클래스도 및 객체도, 물리적 관점을 표현하는 모듈구조도 및 프로세스 구조도로 구성
  동적 모델링
  • 실세계의 사건 발생에 의해 동작되어야 할 일들을 표현
  • '상태도'와 '타이밍도'가 있다.
  • 데이터흐름도를 사용해서 객체를 분해하고 객체들 간의 인터페이스를 찾아 ADA 프로그램으로 변환시키는 기법
  • 설계를 위한 문서화 기법을 강조한 기법으로, 분석단계와 구현의 세부 사항에 취약 Booch 기법