Skip to content

[CS] 객체 지향 기법

📌 개요

현실의 개체(Entity)를 하나의 객체(Object)로 만들어 소프트웨어를 개발할 때 객체들을 이용해 프로그램을 작성할 수 있도록 하는 기법

📌 장점

  1. 재 사용성, 확장성 -> 개발 기간 단축, 유지 보수 쉬움
  2. 복잡한 구조를 단계적, 계층적으로 표현
  3. 데이터 병렬 처리

📌 구성요소

1. 객체(Object)

데이터와 데이터를 처리하는 함수를 캡슐화한 소프트웨어 모듈

  • 데이터 : 객체 정보, 속성, 상태 (속성, 상태, 변수, 상수, 자료 구조 라고도 함)
  • 함수
  • 객체가 수행하는 기능, 객체가 갖는 데이터 (속성, 상태)를 처리하는 알고리즘
  • 객체의 상태를 참조, 변경하는 수단이 됨

2. 클래스(Class)

공통된 속성, 연산을 갖는 객체들의 집합

  • Instance : 클래스에 속한 각각의 객체
  • 최상위 class: 상위 클래스를 갖지 않는 class
  • Superclass : 특정 클래스의 상위 class
  • Subclass : 특정 클래스의 하위 class

3. 메시지(Message)

  • 객체들 간 상호작용을 하기 위한 수단
  • 객체 이름, 메소드 이름, 인자로 구성

📌 특징

◾ 캡슐화(Encapsulation)

  • 의미: 데이터와 함수를 하나로 묶음
  • 특징
  • 재사용성 증가, 오류 파급 효과 감소
  • 인터페이스가 단순해짐, 객체 간 결합도가 낮아짐

◾ 정보 은닉(Information hiding)

  • 다른 객체에게 자신의 정보를 숨기고 자신의 연산 만을 통해 접근
  • 다른 객체에게 주는 영향을 감소 시킴

◾ 추상화(Abstraction)

  • 불필요한 부분을 생략하고 중요한 것에만 중점을 두어 모델화

◾ 상속성(Inheritance)

  • 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받음
  • 상위 클래스에 정의된 속성을 재정의 하지 않아도 된다.
  • 새로운 속성과 연산을 추가하여 사용 가능
  • 다중 상속성(Multiple Inheritance) : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 상속

◾ 다형성(Polymorphism)

  • 같은 함수, 기능에 대해 다른 정의를 통해 각 클래스가 다른 행동을 할 수 있게 해줌
  • Overloading : 같은 이름을 가진 함수지만 인자가 달라 각기 다른 인자에 따라 함수를 선택해 수행
  • Overriding : 상위 클래스로부터 상속 받은 함수들을 다르게 구현하여 사용

📌 생명 주기

계획 및 분석 → 설계 → 구현 → 테스트 및 검증

◾ 계획 및 분석 (객체 지향 분석, OOA)

  • 사용자의 요구 사항을 분석하여 클래스, 속성, 연산 등을 정의하여 모델링하는 작업

◾ 설계 (객체 지향 설계, OOD)

  • 분석을 통해 생성한 모델을 설계 모델로 변환하는 작업
  • 설계: 문제 정의 → 요구 명세화 → 객체 연산자 정의 → 객체 인터페이스 결정 → 객체 구현

◾ 구현 (객체 지향 프로그래밍, OOP)

  • 객체라는 단위를 중심으로 프로그램을 개발하는 작업
  • 유지 보수가 쉽고 재사용 가능
  • 확장성 제공

◾ 테스트 및 검증

  • 클래스 테스트 : 캡슐화된 클래스나 객체를 검사하는 과정
  • 통합 테스트 : 객체를 결합해 프로그램을 완성시키는 과정에서의 테스트 → thread 기반 테스트 : 각각의 thread 가 개별적으로 테스트 → 사용 기반 테스트 : 독립 클래스를 테스트한 후, 종속 클래스를 테스트
  • 확인 테스트 : 사용자 요구 사항에 대한 만족 테스트
  • 시스템 테스트 : 모든 요소들이 올바른 기능을 수행하는지 테스트

작성자: 정선미

작성일: 2021-07-11