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