프로그램을 상태(state)와 행위(behavior)로 이루어진 객체라는 기본 단위로 나누고, 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍이다.
저번 글에서 객체에 대해서 읽어보셨다면, 이해가 빠르게 되셨을거라고 믿습니다.
자 그렇다면 이걸 왜 쓸까요?
객체지향 프로그래밍의 특징과 장점을 보신다면 이해할 수 있습니다.
저번 글에서 궁금했던 '클래스를 쓰는 이유'에도 답변이 가능합니다.
데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것
캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급효과가 적다.
캡슐화된 객체들은 재사용이 용이하다.
캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것이다.
불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화 하는 것이다.
이미 정의된 상위 클래스(부모 클래스)의 모든 속성솨 연산을 하위 클래스가 물려받는 것이다. 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있다.
메시지에 의해 개체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미한다. 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.
이러한 특징들이 있습니다. 그럼 이제 장단점을 알아보겠습니다.
상속을 통해서 프로그래밍을 할시, 코드의 재사용률을 상승
클래스를 통해 객체를 활용함으로써, 개발의 생산성 향상
주변 코드에 영향이 적기때문에 유지보수 용이
절차지향언어는 컴퓨터 처리구조와 비슷해서 빠르지만, 객체지향 언어는 상대적으로 실행속도가 느림
클래스, 객체, 상속 등 구조 설계도 해야해서 절차지향언어에 비해 설계시간이 많이 듬
객체지향 프로그래밍의 특징과 장단점을 알아보았습니다.
'클래스를 쓰는 이유'는 이러한 특징과 장점때문에 쓴다고 볼 수 있겠습니다.
Reference