10. 애플리케이션 설계 B - TOTOLII/study GitHub Wiki

객체지향

  • 객체 : 데이터와 그 데이터에 관련되는 동작을 모두 포함한 개념.

  • 객체지향 : 현실세계의 객체를 속성과 메소드가 결합된 형태의 객체로 표현하는 개념이다.

  • 객체 지향의 구성요소

    • 객체 : 데이터 + 연산
    • 메소드 : 객체의 구체적인 연산을 정의한 것
    • 클래스 : 유사한 객체들을 모아 공통된 특성을 표현한 것.
      클래스로 부터 생성된 새로운 객체를 인스턴스라고 한다.
    • 메시지 : 객체들 간의 상호작용이 일어나기 위해서 메세지가 필요하며
      메세지를 통항 객체의 동작이 수행된다.
  • 객체 지향기법

    • 캡슐화 : 감춰 놓았다고 생각해보면 됨 (정보은닉)
    • 상속 : 부모로 부터 물려받는 것이다.
    • 추상화 : 단순화
    • 다형성 : 고유한 방법으로 응답할 수 있는 것.
  • 모듈화
    모듈이란 소프트웨어를 각 기능별로 분할하는 것으로,
    소프트웨어 구조를 이루는 기본 단위이다.
    모듈의 특성은 독립성, 응집성, 결합성으로 총 3가지가 있는데,
    결합성이란 모듈과 모듈 사이의 관련성으로 낮으면 낮을 수록 좋다.
    응집성이란 모듈 안에 있는 명령어들 사이의 관련성으로 높으면 높을 수록 좋다.
    독립성은 전체적으로 높아야 하며 결합도와 응집도에 의해 측정된다.

  • 결합도
    한 모듈과 다른 모듈간의 상호의존도를 측정하는 것으로
    독립적인 모듈이 되기 위해서는 결합도가 약해야 한다.

  • 결합도 종류

    1. 내용 결합도
      하나의 모듈이 다른 모듈의 내용을 참조 하는 것.
      하나의 모듈에서 내용을 바꾸면 다른 모듈에도 영향을 주는 것.

    2. 공통 결합도
      여러 모듈이 공통의 자료영역을 사용할 경우
      따라서 자료영역을 조금만 변경해도 영향을 받는다.

    3. 외부 결합도
      외부로 선언한 데이터를 다른 모듈에서 참조 하는 것.

    4. 제어 결합도
      다른 모듈에 제어요소가 전달 될 때 사용됨.

    5. 스탬프 결합도
      배열이나 자료구조 혹은 레코드가 전달 될때의 결합도

    6. 데이터 결합도
      모듈과 모듈간의 관계가 자료요소로만 이루어진것.

    위의 순서대로 결합도가 강하다.(순서가 매우 중요함 '내공외제스데'로 암기할 것.)

  • 응집도
    한 모듈 내에 있는 구성 요소들이 서로 관련되어 있는 정도를 의미하며,
    관련성을 측정 하는 것으로 응집도가 높도록 설계되어야 한다.

  • 응집도의 종류

    1. 기능적 응집도
      모듈 내부의 모든 기능요소들이 단일 문제와 연관된 것이다.

    2. 순차적 응집도
      모듈 내의 하나의 활동으로 부터 나온 출력 결과가 다음 활동에 입력 데이터로 사용이 되는 경우

    3. 통신적(교환적) 응집도
      동일한 입력 출력을 사용하는데, 서로 다른 기능을 수행하는 구성요소들이 모인 경우.

    4. 절차적 응집도
      모듈 안의 구성요소들이 순차적으로 수행될 경우

    5. 시간적 응집도
      특정 시간에 처리되는 몇개의 기능을 모아서 하나의 모듈로 작성하는 경우

    6. 논리적 응집도
      유사한 성격을 갖거나 특별한 형태로 분류되는 처리 되는 요소들이 하나의 모듈로 작성되는 경우

    7. 우연적 응집도
      서로 관련 없는 요소들을 하나의 모듈로 작성하는 경우

  • 공통 모듈
    전체 프로그램의 기능 중 공통적으로 사용할 수 있는 모듈

  • 공통 모듈 명세 작성 원칙

    1. 정확성
      시스템 구현을 할 때 해당 기능이 필요한가 알수 있도록 정확하게 작성하는 것.

    2. 명확성
      해당 기능을 이용할 때 중의적으로 해석되지 않도록 명확하게 작성하는 것.

    3. 완전성
      시스템 구현을 위한 모든 것을 기술한다.

    4. 일관성
      공통된 기능들이 상호 충돌을 잃으키지 않도록 작성하는 것.

    5. 추적성
      기능에 대한 요구사항의 출처, 관계를 파악하여 작성 하는 것.