코드를 작성하다보면 자신의 코드가 어떻게 구성되어가는지 파악하기 어려울 때가 있다. 코드를 작성하다보면 그 길이가 점점 길어지고 의존관계가 복잡하게 얽히게 되는 경우가 존재하기 때문이다. 이런 상황이 누적된다면 코드 관리가 심히 어렵다.
복잡한 프로젝트를 코딩할때도 단순한 관계를 위지하기 위해서 우리는 OOP (Object Oriented Promramming) , 즉 객체지향 프로그래밍이 필요하다. 나무위키에서는 OOP를 아래처럼 설명한다.
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 '메소드와 변수'를 가지며, 특정 역할을 수행하도록 인간이 정의한, 추상적인 개념이다.
이해가 어려우니 예시를 들어보자. 우리가 자율자동차를 하나 만든다고 가정해보자. 자율자동차를 구성하기 위해서는 사물을 파악하기 위한 카메라, 차선 탐지기, navigating 시스템, 그리고 연료관리 시스템 등이 필요할 것이다. 이렇게 '자율자동차 제작' 이라는 크고 복잡한 과업을 별개의 모듈로 나누게되면, 작업자들은 '동시에' 각각의 작업을 진행할 수 있다. 이렇게 작업 생산성이 향상되며, 빠른 소프트웨어 개발이 가능해진다.

뿐만아니라, 모듈 재사용이라는 이점도 생긴다. 자율자동차를 만들때 제작했었던 카메라, navigating 시스템, 그리고 연료관리 시스템은 모듈화해뒀기 때문에 드론을 만들때도 다시 사용할수 있다. 만약 자율자동차가 객체지향이아닌, 절차지향으로 만들어졌더면 드론을 제작할때도 처음부터 다시 코딩을 했어야 할것이다. 재사용할수 있는 모듈이 없기 때문이다.

정리하자면 OOP는 큰 프로젝트를 좀 더 작은 부분으로 나누어서 각 부분들을 각각의 팀들, 그리고 서로 다른 사람이 담당해서 만들수 있도록 해준다. 추가적으로 각 요소들은 재사용할수있다는 큰 이점도 있다.
'python' 카테고리의 다른 글
[python] session과 cursor (0) | 2024.01.09 |
---|---|
[python] decorator (0) | 2023.12.16 |