객체지향프로그래밍
- 객체지향 프로그래밍이 등장하기전에는 절차지향 프로그래밍
- 객체지향 프로그래밍의 등장으로 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 고안했고
따라서, 데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리할 수 있게 되었습니다.
- 객체 내에는 데이터(속성) + 기능(메서드)
객체지향 프로그래밍의 주요개념
- 캡슐화
- 데이터와 기능을 하나의 단위로 묶는 것
- 은닉(hiding): 구현은 숨기고, 동작은 노출시킴
- 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음
- 추상화
추상화는 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
- 상속화
상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것입니다.
부모/자식으로 이야기하기도 하지만, 보다 그 특징을 자세하게 설명하는 용어는 "기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다"로 표현하는 것이 적합합니다.
- 다형성
마지막으로 다형성에 대해 다룹니다. Polymorphism이라는 단어의 poly는 "많은", 그리고 morph는 "형태"라는 뜻을 가지고 있습니다. 즉 "다양한 형태"를 가질 수 있다는 말이 되겠죠?
"말하다"라는 동작의 본질은 "입으로 소리를 내다"를 의미합니다. 그러나, 각기 다른 동물들이 "말할 때" 제각각의 소리를 내는 것처럼, 객체 역시 똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있습니다.