객체 지향 프로그래밍이란 컴퓨터 프로그램을 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 구성하고자 하는 컴퓨터 프로그래밍의 한 방법론을 의미합니다.
일반적으로 객체 지향을 설명할 때 ‘실제 세상에 존재하는 객체와 소프트웨어 객체가 대응한다’고 말하곤 합니다. 하지만 이는 그 비유가 객체지향의 특성을 학습하는데 효과적이기 때문이지 객체지향의 목표가 실세계를 모방하는 것을 뜻하는 것은 아닙니다.
객체 지향적인 코드를 작성하기 위해서 우선 다음 두 가지를 신경 써 봅시다. 책임와 협력
객체가 유기적인 협력 내에서 맡고 있는 임무나 역할을 의미합니다. 객체지향 설계는 적절한 객체에게 적절한 책임을 할당하는 것에서 시작합니다.
객체는 자신 스스로 해결하지 못하는 문제와 마주치면 그 문제를 해결할 수 있는 객체에게 도움을 요청합니다. 요청을 받은 객체는 자신에게 주어진 책임을 다해서 문제를 해결한뒤 요청에 응답합니다. 이런 과정은 객체 간의 협력 내에서 보통 연쇄적으로 발생합니다.
어떤 문제가 주어졌다면 그 문제를 해결하기 위해 무엇이 필요한지 분석하는 것은 중요합니다. 문제를 하나의 덩어리로 생각한다면 어떻게 해결할지 막막할 때가 많지만 잘게 나눈 기능들을 하나씩 구현한 뒤 서로 협력하게 만들면 신기하게도 문제가 해결됩니다.