2022-05-22 소프트웨어_분석_및_설계_17

2022. 5. 22. 17:19학부 강의/소프트웨어 분석 및 설계

객체지향 방법론

 

시작

객체지향 언어 시뮬라67에서 출발.

객체지향의 개념은 객체지향 언어의 탄생에서 탄생.


객체지향 4대 방법론

 

  1. 부치 Booch Method
  2. 코드 Coad & 요든 Yourdon Method
  3. 슐레이어 Shlaer & 멜러 Mellor Method
  4. 럼보 Rumbaugh Method (= OMT, Object Modeling Technique)

 


UML (Unified Modeling Language) 등장

 

표기법만이라도 통일하자는 취지로 등장

 

Booch와 OMT가 통합되면서 통합 모델링 언어 UML 등장

 


객체지향 프로세스의 특징

 

  • 반복적 프로세스 (Iterative) : 객체지향 방법론은 소프트웨어 생명주기를 반복하여 적용
    • 폭포수 모형과 달리 객체지향 모델은 요구사항 분석, 설계, 테스트, 평가를 여러 차례 반복한다.

 

  • 솔기 없는 프로세스 (Seamless) : 프로세스를 구성하는 각 단계간 경계선이 불분명

 

솔기는 바느질의 흔적을 뜻한다.

 

  • 상향식 접근 (Buttom Up) : 작은 모듈을 모아 큰 모듈을 만든다.

 

  • 재사용 고려 (Reuse) : 구조적 방법론이 성공적인 소프트웨어 개발 공정에 집중한다면 객체지향 방법론은 재사용성을 고려해 개발

 


객체지향의 핵심 개념

 

객체(Object)

객체 = 객체의 데이터(속성) + 객체의 행위(Operation)

객체의 테이터와 객체의 행위를 포함

 

클래스 (Class)

속성과 행위의 공통점을 가진 객체를 묶어서 추상화한 개념

 

클래스는 객체를 추상화하고 객체는 클래스를 구체화한다.

 

상속 (Inheritance)

 

경찰차, 스포츠카,버스, 택시… 등은 모두 ‘차량’에 속한다. (Bus is a car. Texi is a car, Police car is a car …)

 

차량의 속성과 행위를 ‘상속'받아 모두 저마다의 방식으로 구현했다.

 

객체를 생성할 때마다 반복되는 속성과 행위를 다시 정의할 필요 없이 상속받으므로써 재사용성과 신뢰성을 높일 수 있다.

 

캡슐화와 정보은닉

기계의 부품을 모듈화하면 유지 및 보수에 유리하다.

 

문제가 발생한 특정 모듈만 교체하면 되기 때문이다.

 

소프트웨어도 모듈화를 할 수 있다.

 

객체 단위로 쪼개고 이들간의 불필요한 연결성을 최소화한다.

 

객체의 구현부가 외부에 노출되지 않게 감싼다.

 

이 과정을 캡슐화(Encapsulation)라고 한다.

 

캡슐화를 하면 객체의 속성과 행위에 대한 직접적인 접근을 제한할 수 있다.

 

정보 은닉(Information Hiding)이라고 한다.

 

참고

인터페이스 : 외부에 노출된 부분

구현 : 내부에 숨겨지 부분

 

조합 (Composition)

 

다른 객체를 사용하여 객체를 구성

 

스마트폰은 디스플레이와 카메라 그리고 버튼 등 부품을 조립해서 만든다. (Smartphone has a camera)

 

디스플레이, 카메라, 버튼 객체를 조합하여 스마트폰 객체를 만들었다 이해할 수 있다.

 

조합은 집합과 연관 두가지 유형으로 분류된다.

 

  • 집합 (Aggregation) : 복잡한 객체가 다른 객체들로 구성된다. 집단화라고도 한다.
  • 연관 (Association) : 각각의 분리된 객체들이지만 모여서 어떤 시스템을 구성

집합이 연관의 경우보다 상위 객체와 하위 객체 간의 종속성이 더 강하다.

 

다형성 (Polymorphism)

 

동일한 메시지에 응답하는 메소드라도 각 객체 별로 다른 행위를 할 수 있다.

 

 


객체지향 방법론의 과거, 현재와 미래

 

Simula 67 → Smalltalk → Ada → C++ → Java → Objective-C → DCOM, CORBA

 

  • 분산객체 기술 DCOM, CORBA 등에서 활용
  • 향후 모든 분야에서 근간을 이루는 기술로 발전할 듯

 


객체지향 학습 로드맵

 

 

정적 모델링은 정적인 구조적인 것과 관련 있다.

 

동적인 모델링은 시간의 흐름에 따른 변화, 상호작용과 관련 있다.

 

메시지 : 소프트웨어 객체는 메시지를 통해서 다른 객체와 상호작용한다.