
개발 공부를 시작하면 한 번쯤은 반드시 듣게 되는 개념이 바로 객체지향 프로그래밍(Object Oriented Programming, OOP)이다. 처음에는 클래스(Class), 객체(Object), 상속(Inheritance) 같은 용어들이 굉장히 어렵고 추상적으로 느껴질 수 있다. 나 역시 처음 Java를 공부할 때는 문법 자체보다 객체지향 개념이 훨씬 어렵게 느껴졌던 기억이 있다. 그런데 실무 프로젝트를 경험하면서 점점 느끼게 된 건, 객체지향은 단순 이론이 아니라 “프로젝트를 유지보수하기 쉽게 만드는 사고방식”에 가깝다는 점이었다. 오늘은 객체지향 프로그래밍이 무엇인지, 그리고 실무에서 왜 중요하게 느껴지는지 경험 기준으로 쉽게 정리해보려고 한다.
💻 처음에는 객체지향이 왜 필요한지 잘 몰랐다
처음 프로그래밍을 공부할 때는 대부분:
- 변수
- 조건문
- 반복문
같은 기본 문법부터 배우게 된다.
이 단계에서는 프로그램 규모가 작기 때문에 객체지향이 없어도 큰 문제가 없다. 실제로 처음 Java를 공부할 때도 “그냥 코드 동작만 하면 되는 거 아닌가?”라는 생각을 많이 했었다.
그런데 프로젝트 규모가 커지기 시작하면 상황이 완전히 달라진다.
예를 들어:
- 회원 관리
- 주문 처리
- 결제 기능
- 게시판 기능
같은 것들이 하나의 파일 안에 계속 추가되면 코드가 굉장히 복잡해진다.
실제로 운영 프로젝트를 하다 보면:
- 기능 수정
- 요구사항 변경
- 버그 수정
이 계속 반복되는데, 코드 구조가 정리되어 있지 않으면 수정 자체가 굉장히 어려워진다.
그때부터 객체지향 구조가 왜 필요한지 조금씩 이해되기 시작했다.
🔑 객체지향은 “역할 분리”에 가까웠다
실무를 경험하면서 가장 크게 느낀 객체지향의 핵심은:
👉 역할 분리
였다.
예를 들어 회원 기능이 있다고 하면:
- 회원 정보 처리
- 로그인 처리
- 데이터 저장
같은 역할을 각각 나누어 관리하는 구조에 가깝다.
Spring Boot에서도:
- Controller
- Service
- Repository
구조를 사용하는 이유가 결국 이런 역할 분리 때문이다.
실제로 프로젝트를 운영하다 보면:
- 화면 수정
- DB 수정
- 비즈니스 로직 수정
이 각각 다른 타이밍에 발생한다.
만약 모든 코드가 한곳에 섞여 있으면 수정할 때마다 영향도가 커진다.
예전에 제조 운영 프로젝트를 진행할 때도 특정 기능 수정이 다른 기능 오류로 이어지는 경우를 여러 번 경험했다. 대부분 구조가 복잡하게 얽혀 있는 경우였다.
반대로 역할이 잘 나뉘어 있는 구조는 수정과 유지보수가 훨씬 안정적이었다.
📊 실무에서는 유지보수성이 정말 중요했다
처음 공부할 때는 객체지향을 단순히:
- 클래스 만들기
- 상속 사용하기
정도로 생각했다.
그런데 실무에서는:
👉 “몇 년 동안 유지 가능한 구조인가?”
가 훨씬 중요했다.
특히 제조·운영 프로젝트는 시스템 수명이 굉장히 길다.
한번 구축된 시스템이 5년 이상 운영되는 경우도 많다.
이런 환경에서는:
- 코드 가독성
- 유지보수성
- 확장성
이 굉장히 중요해진다.
예를 들어 신규 기능이 추가될 때:
- 기존 코드를 최소 수정하면서
- 새로운 기능만 확장 가능하게
구조를 만드는 것이 중요했다.
객체지향 구조가 잘 잡혀 있으면 이런 부분이 훨씬 수월해진다.
실제로 운영 프로젝트에서는:
👉 “처음 만드는 속도”
보다
👉 “나중에 수정 가능한 구조”
가 훨씬 중요하다는 걸 많이 느꼈다.
💡 객체지향을 이해하고 나서 코드 보는 시각이 달라졌다
처음에는 객체지향이 굉장히 어렵게 느껴졌다. 하지만 프로젝트를 경험할수록 점점:
👉 “코드를 어떻게 나눌 것인가”
에 대한 사고방식이라는 걸 이해하게 되었다.
특히 최근 Spring Boot나 MSA 구조에서도:
- 역할 분리
- 책임 분리
- 느슨한 결합
같은 객체지향 개념이 굉장히 중요하게 사용된다.
실제로 실무에서는 단순히 동작하는 코드보다:
- 수정하기 쉬운 코드
- 이해하기 쉬운 코드
- 확장 가능한 코드
를 더 좋은 코드로 보는 경우가 많다.
객체지향은 결국 이런 구조를 만들기 위한 기본적인 사고방식에 가까웠다.
🔥 마무리
객체지향 프로그래밍은 단순히 클래스와 상속을 사용하는 기술이 아니라, 프로젝트를 유지보수하기 쉽고 확장 가능하게 만들기 위한 개발 방식에 가까웠다.
실무를 경험하면서 느낀 건 결국 중요한 건 “동작하는 코드”보다 “오래 유지할 수 있는 구조”였고, 객체지향은 그런 구조를 만들기 위한 중요한 기본기 중 하나라는 점이었다.