객체 : 데이터 영역
여기를 참고하도록 하자.
객체지향 프로그래밍(Object-Oriented Programming)은 현대 프로그래밍 패러다임 중 가장 주류가 된 프로그래밍 패러다임이다. 이름에서 알 수 있듯 객체지향 프로그래밍은 객체를 중심으로 프로그램을 구성하는 방법이다. 이번 강의를 통해서 절차지향 프로그래밍은 어떤 한계가 있고, 그걸 극복하기 위해 객체지향 프로그래밍에서는 어떤 방식을 사용했는지 그리고 객체지향적으로 설계는 어떻게 하는지에 대해서 알아보도록 하자.
우리는 그동안 C언어를 이용해 게임을 만들어보며, 절차지향 프로그래밍을 경험해봤다. 즉, 여러가지 함수를 만들고 그 함수를 호출하며 프로그램을 만들었다. 하지만 절차지향 프로그래밍은 프로그램이 커질 수록 아래와 같은 불편함이 있다.
1. 데이터와 데이터를 다루는 함수가 분리되어 있다.
어떤 타입을 설계할 때, 그 타입을 다루는 함수를 작성할 때마다 첫 번째 인자로 어떤 데이터를 다룰 것인지 주소값을 받아야 했다. 이는 쓸데없이 함수가 길어지게 하는 요인이 되며, 함수 내부에서도 포인터로 데이터를 다뤄야 하는 불편함이 있다.
2. 함수의 이름을 항상 다르게 작성해야 한다.
C언어에서 함수의 이름은 전역 이름공간을 사용하기 때문에 모든 함수마다 이름을 다르게 지어줘야 했다.
3. 프로그램을 확장하기 불편하다.
항상 어떤 함수가 필요한지 명확하게 호출해야 했기 때문에 프로그램에 수정 사항이 생기면 변경 사항이 많아졌다. 그래서 이를 최대한 줄이기 위해 함수 포인터를 사용하거나 같은 카테고리의 타입에서 특정 타입이 무엇인지 가려내기 위해 추가적인 데이터가 필요했다.
그래서 프로그래밍의 선구자들은 이러한 불편함을 줄이기 위해 여러 컴퓨터 과학자들은 고민하기 시작했고, 그로 인해 나오게 된 것이 객체지향 프로그래밍이다.