실제 세계와 가장 유사한 가상 세계를 컴퓨터 속에 구현하고자 노력 했으며 이러한 노력으로 객체지향 이론이 탄생했다.
객체지향 이론의 기본 개념은 ' 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다. ' 라는 것이다.
객체지향이론은 상속, 캡슐화, 추상화 개념을 중심으로 점차 구체적으로 발전되었다.
<aside> 💡 1. 코드의 재사용성이 높다 → 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. →코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. → 제어자와 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
</aside>
상속, 다형성과 같은 객체지향 개념을 학습할 때 재사용성
유지보수
중복된 코드의 제거
이 세가지 관점에서 보면 보다 쉽게 이해 할 수 있다.
프로그램을 기능적으로 완성한 다음 어떻게 하면 보다 객체지향적으로 코드를 개선할 수 있을지를 고민하여 점차 개선해 나가는 것이 좋다.
<aside> 💡 클래스의 정의 → 클래스란 객체를 정의해 놓은 것, 객체의 설계도 또는 틀 클래스의 용도 → 클래스는 객체를 생성하는데 사용됨
</aside>
객체는 '실제로 존재하는 것'이다. 하지만 객체지향 이론에서는 개념
이나 논리
와 같은 무형적인 것들도 객체로 간주한다.
<aside> 💡 객체의 정의 → 실제로 존재하는 것, 사물 또는 개념 객체의 용도 → 객체가 가지고 있는 기능과 속성에 따라 다름
유형의 객체 → 책상, 의자, 자동차, TV와 같은 사물 무형의 객체 → 수학공식, 프로그램 에러와 같은 논리나 개념
</aside>
실생활을 예로들면, 제품 설계도와 제품의 관계.
TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이고, TV(객체)를 만드는데 사용된다.
클래스는 단지 객체를 생성하는데 사용될 뿐이다. 객체 그 자체는 아니다. 우리가 원하는 기능의 객체를 사용하기 위해서는 먼저 클래스로부터 객체를 생성하는 과정이 선행되야 한다.
우리가 TV를 보기 위해서는, TV라는 객체가 필요한 것이지 TV설계도인 클래스가 필요한게 아니다.