객체지향 기법

From IT Wiki


구성 요소

객체(Object)

  • 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈
  • 애트리뷰트(Attribute)
    • 객체의 상태를 나타내며, 데이터 또는 속성이라고 함
  • 메서드(Method)
    • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것, 전통적 시스템의 함수(Function)나 프로시저(Procedure)에 해당하는 연산 기능

클래스(Class)

  • 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
  • 어떤 클래스에 속하는 구체적인 객체를 인스턴스(Instance)라고 함
  • 클래스는 인스턴스들이 갖는 변수들과 인스턴스들이 사용할 메서드를 가짐

메시지(Message)

  • 객체들 간의 상호 작용은 메시지를 통해 이루어짐
  • 메시지는 객체에서 객체로 전달됨

객체지향 기법

캡슐화(Encapsulation)

  • 자료 부분과 연산(또는 함수) 부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것
  • 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정
  • 결합도가 낮아진다. 즉, 프로그램 변경에 대한 오류의 파급효과가 적다.
  • 재사용이 용이하다.
  • 인터페이스를 단순화 시킬 수 있다.

정보 은닉(Information Hiding)

  • 객체가 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
  • 정보 은닉의 가장 근본적인 목적은 고려되지 않은 영향(Side Effect)들을 최소화 하는 것

추상화(Abstraction)

  • 주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 것

상속(Inheritance)

  • 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
  • 클래스와 객체를 재사용 가능

연관성(Relation)

  • 클래스간의 연관관계를 정의
  • 객체간의 관계를 세부적으로 정의하여 구현 용이
  • 일반화(Generalization is-a), 상세화(Specialization has-a), 집단화(Aggregation is-part-of) 등

다형성(Polymorphism)

  • 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
  • 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음