7/11/2017

SW 개발방법론 - 객체지향 기법

* 객체지향 기법
1. 재사용성과 객체 표현 기법, 객체지향의 개요
  가. 객체지향(Object Oriented Programming)의 정의
    - 실세계 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의
      객체(Object)로 표현하는 개념
    - 구현대상을 하나의 객체로 보고, 그 객체를 객체와 객체들 간의 관계로 모델링하는
      방법
  나. 객체지향의 등장배경
    - 소프트웨어 위기(낮은 생산성) 해결을 위한 대안으로 필요성 증대
    - 컴퓨팅 환경에 대한 보다 많은 기능(Functionality), 단순성, 사용편의성에
      대한 사용자 요구 증대

  나. 객체지향의 등장배경
구 분내 용
개발
측면
- 저품질, 고위험 요소의 전통적인 개발 방법론 문제점 극복
- 소프트웨어 위기를 해결하기 위한 재사용성, 확장성 증대 필요
사용자
측면
- 컴퓨팅 환경의 보다 많은 기능, 단순성, 사용편의성 등 사용자들의
  욕구 증대

2. 객체지향의 개념도 및 구성요소
  가. 객체지향의 개념도
    - 클래스(Class) 간의 관계(Relation)를 이용하여 메시지를 주고 받는 것으로
      상호작용 수행
      
  나. 객체지향의 구성요소
    1) 클래스(Class)
      - 같은 종류의 집단에 속하는 속성(Attribute)과 행위(Behavior)를 정의한 집합
      - 객체지향 프로그램의 기본적인 사용자 정의 데이터형(User Defined Date Type)
      - 누구라도 사용할 수 있고, 다른 클래스 또는 외부 요소와 독립적으로 설계
클래스객체(인스턴스)
제품 설계도제품
TV 설계도TV
붕어빵 기계붕어빵
    2) 객체(Object)
      - 클래스의 인스턴스(실제로 메모리상에 할당된 것)
      - 자신 고유의 데이터(attribute)를 가지며 클래스에서 정의한 행위(behavior)를 수행
      - 객체의 행위는 클래스에 기술된 행위에 대한 정의를 공유함으로써 메모리를
        경제적으로 사용
       
    3) 속성(Attribute) : 객체의 데이터
    4) 메소드(Method)
      - 객체의 행위(함수, 기능)
      - 클래스로부터 생성된 객체를 사용하는 방법
    5) 메시지(Message) : 객체(Object) 간의 통신

3. 객체지향의 주요성질
  가. 캡슐화 : Encapsulation
    1) 정의 : 서로 관련성이 많은 데이터와 이를 참조하는 기능을 하나로 묶어 처리하는
      객체지향의 특성
    2) 개념도
   
    3) 특징
      - Readability 향상으로 유지보수 용이
      - 재사용성이 높은 소프트웨어 개발
      - 객체간에 인터페이스(메시지)를 이용하여 종속성 최소화
  나. 추상화 : Abstraction
    1) 정의 : 현실 세계의 물체에서 공통 성질을 추출하여 간결하고 명확한 모델
       (수퍼클래스)로 표현하는 개념
    2) 추상화의 종류
      - 기능추상화 : 클래스 내 메소드를 정의. obj.getName()
      - 자료추상화 : 객체 클래스 자체를 데이터 타입으로 사용. String, Class
      - 제어추상화 : 제어행위에 대한 개념화, 명령 및 이벤트. if, for, while
    3) 개념도
      
    4) 특징 : 복잡한 프로그램을 간단하게 분석의 초점을 명확히 함

  다. 다형성 : Polymorphism
    1) 정의 : 하나의 클래스 내에 동일한 이름의 메소드가 존재하거나, 하위 클래스에서
       상위 클래스에 있는 같은 이름의 메소드를 재정의할 수 있는 기법
    2) 개념도
        
    3) 다형성의 종류
      - Overloading : 동일한 클래스 내에서 같은 이름(매개변수의 수와 타입이 다름)의
        메소드를 정의할 수 있는 성질(수평적 다형성)
      - Overriding : 상위 클래스의 같은 이름(매개변수의 수와 타입이 같음)의
        메소드를 재정의할 수 있는 성질(수직적 다형성)
    4) 특징 : 동일한 메소드 명으로 상이한 기능을 구현하여 하나의 메시지가 객체에
       따라 다르게 응답가능

  라. 정보은닉 : Information Hiding
    1) 정의 : 캡슐화된 클래스 내부의 항목을 다른 객체로부터 은닉하고, 
        접근 제한을 단계를 두어 메시지 전달에 의해 다른 클래스 내의 자료를 
        접근하는 개념. 낮은 결합도
    2) 개념도
      

  마. 상속성 : Inheritance
    1) 정의 : 상위클래스의 속성과 메소드를 하위클래스에서 재정의없이 물려받아
       사용할 수 있는 개념
    2) 개념도
      

    3) 상속성의 종류
      - 단일 : 부모와 자식 클래스 간의 1대1 관계로 상속받는 유형
      - 다중 : 하나의 클래스가 하나이상의 클래스로부터 1대N 관계로 상속받는 유형
      - 복합 : 같은 조부모 클래스로부터 상속받은 두 부모클래스로 부터 상속받는 유형

4. 객체지향과 CBD방법론 비교
구분객체지향CBD
주요관점객체중심컴포넌트중심
개발모형점진적, 반복적점진적, 반복적
장점- 경험없는 프로젝트에 용이
- 재사용성 증대
- 객체를 중심으로 개발하여
의사소통에 유리
- 컴포넌트 조립으로
개발생산성 향상
- 독자적인 컴포넌트 제품계열을
구성하여 기출축적 가능
단점- 대규모 프로젝트 적용 어려움
- 성숙한 객체 기술자 필요
- 상속으로 재사용성이 떨어지는
역효과 발생
- 생산성 향상 플랫폼과
기반 아키텍처에 제약
- 조직에 따라 적용
- 가능한 컴포넌트 기술 수준이 다름
- 업종별 특성을 지닌 컴포넌트 부족

"끝"

댓글 없음: