[정처기 - SW설계 A] 3. 애플리케이션 설계 (A단계)

0_0·2023년 5월 4일
0

정보처리기사

목록 보기
3/10

[ 1과목 ] 소프트웨어 설계

    1. 애플리케이션 설계 A단계
      023 객체지향(Object-Oriented)
      024 객체지향 분석 및 설계
      025 모듈
      026 공통 모듈
      027 코드
      028 디자인 패턴

1-3-023 객체지향 (Object-Oriented)


객체지향의 개요

  • 객체지향
    : 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때 객체들을 조립해서 작성할 수 있는 기법.
    • 특징
      • 복잡한 구조를 단계적, 계층적으로 표현.
      • 멀티미디어 데이터 및 병렬 처리를 지원.
      • 소프트웨어의 재사용 및 확장이 용이
        -> 고품질 소프트웨어의 빠른 개발 가능 + 쉬운 유지보수
      • 현실 세계를 모형화
        -> 사용자가 개발자의 이해 쉬움.
    • 소프트웨어 위기의 해결책으로 사용
      • 위기 원인 : 구조적 기법의 문제점
        • 개발 공정에만 집중. -> 유지보수 고려X
        • 개발 시작 후 추가 요구사항에 대응 어려움.
        • 재사용이 어려움.
    • 주요 구성 요소와 개념
      : 객체(Object), 클래스(Class), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 연관성(Relationship)
  • 구조적 기법
    : 분할된 소작업을 수행하는 모듈 작성 후, 모아서 큰 작업을 수행하는 프로그램으로 작성.
    • 문제점
      • 개발 공정에만 집중. -> 유지보수 고려X
      • 개발 시작 후 추가 요구사항에 대응 어려움.
      • 재사용이 어려움.

객체 (Object)

  • 객체 (Object)
    : 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈.
    • 특성
      • 독립적으로 식별 가능한 이름 소유.
      • 상태(Stata)를 가짐. 상태는 시간에 따라 변화.
      • 객체와 객체는 상호 연관성에 의한 관계 형성.
      • 행위의 특징 가능. 행위=메시지(Message)의 집합. 메시지=객체가 반응 가능.
      • 일정한 기억장소 소유.
    • 메소드
      : 다른 객체로부터 메시지를 받았을 때, 정해진 기능을 수행.
  • 구조적 기법과 객체지향 기법 비교
    • 구조적 기법
      : 프로그램 = 데이터 + 함수
    • 객체지향 기법
      : 프로그램 = 객체 + 객체 (객체 = 데이터 + 함수)

클래스 (Class)

  • 클래스 (Class)
    : 공통된 속성과 연산(행위)를 갖는 객체의 집합.
    • 데이터를 추상화하는 단위 (객체지향 프로그램)
    • 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀.
    • 인스턴스 (Instance)
      : 동일 클래스에 속한 각각의 객체.
      • 공통된 속성과 행위를 소유.
      • 속성에 대한 정보가 서로 다름.
      • 인스턴스화 (Instanctiation)
        : 클래스로부터 새로운 객체를 생성하는 것.
    • 종류 예시
      • 최상위 클래스
        : 상위 클래스를 갖지 않는 클래스.
      • 슈퍼 클래스 (Super Class)
        : 특정 클래스의 상위(부모) 클래스.
      • 서브 클래스 (Sub Class)
        : 특정 클래스의 하위(자식) 클래스.

캡슐화 (Encapsulation)

  • 캡슐화 (Encapsulation)
    : 데이터(속성)와 해당 데이터를 처리하는 함수를 하나로 묶는 것.
    • 특징
      • 세부 내용 은폐 (정보 은닉)
      • 외부 모듈 변경으로 인한 파급 효과가 적음.
      • 재사용이 용이.
      • 인터페이스가 단순.
      • 객체 간의 결합도가 낮아짐.

상속 (Inheritance)

  • 상속 (Inheritance)
    : 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것.
    • 재정의 없이 바로 자신의 속성으로 사용 가능.
      .+ 새로운 속성과 연산 추가 가능. (하위 클래스)
    • 재사용을 높임.
    • 다중 상속 (Multiple Inheritance)
      : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것.
      • 상속 순서 추적이 어려움.

다형성 (Polymorphism)

  • 다형성 (Polymorphism)
    : 하나의 메시지에 대해 각각의 객체(클래스)가 고유한 방법(특성)으로 여러 가지 형태의 응답 가능한 것.
    • 객체(클래스)들은 동일한 메소드명을 사용 -> 같은 의미의 여러 형태의 응답.
    • 예시
      : '+' 연산자는 숫자 클래스에서 덧셈, 문자 클래스에서 문자열의 연결 기능으로 사용.

연관성 (Relationship)

  • 연관성 (Relationship)
    : 두 개 이상의 객체(클래스)들이 상호 참조하는 관계.
    • 종류






1-3-024 객체지향 분석 및 설계


객체지향 분석의 개념

  • 객체지향 분석 (OOA; Object Oriented Analysis)
    : 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성, 연산, 관계 등을 정의하여 모델링하는 작업.

0개의 댓글