객체지향 프로그래밍은 상태와 행위를 가진 객체에 책임을 나누고, 객체들이 서로 협력하도록 프로그램을 구성하는 방식입니다. 반면 절차 지향 프로그래밍은 처리할 작업을 함수나 프로시저 단위로 나누고, 데이터가 정해진 처리 과정을 따라가도록 구성하는 데 중심을 둡니다.
요구사항이 커지고 복잡해지면서 객체지향의 유지보수 측면에서 한계점이 존재했습니다.
이러한 배경에서 캡슐화, 상속, 다형성, 추상화 특징을 내세운 객체지향 프로그래밍이 주목받기 시작했습니다.
다만 객체지향이 항상 더 좋은 것은 아닙니다. 단순한 계산이나 순차적인 처리에서는 절차 중심의 구성이 더 이해하기 쉬울 수 있고, 불필요하게 객체와 추상화를 늘리면 오히려 복잡해질 수 있습니다. 따라서 두 방식의 우열을 나누기보다는, 복잡한 도메인 규칙과 변경 가능성이 큰 시스템에서는 객체에 적절한 책임을 분배하는 객체지향 설계가 유지보수에 유리하다고 생각합니다.
꼬리 질문
객체지향은 순차적으로 실행하지 않는건가요?
객체지향 프로그래밍이 비순차적이라는 것은 아닙니다.
다만, 실행 흐름의 중심이 절차가 아니라 객체가 상호작용에 기반하는 것입니다.