객체 지향 프로그래밍(OOP)이란?
객체 지향 프로그래밍(Object-Oriented Programming)은 현실 세계의 사물을 프로그램에 반영하는 방식으로, 프로그램을 객체 단위로 나누어 각 객체의 역할과 책임, 상호작용을 중심으로 구현하는 프로그래밍 패러다임이다.
즉, 프로그램에서 필요한 요소들을 객체로 파악하고, 이 객체들 간의 협력을 통해 전체 기능을 완성하는 방식이다.
객체 지향 프로그래밍의 특징
객체 지향 프로그래밍은 다음의 4가지 주요 특징을 가지고 있다:
- 추상화 (Abstraction)
- 공통된 속성과 동작을 추출하여 객체의 본질을 표현하는 것
- 불필요한 세부 사항은 감추고 핵심적인 요소에 집중할 수 있음
- 캡슐화 (Encapsulation)
- 데이터와 기능(메서드)을 하나로 묶고, 외부에는 꼭 필요한 정보만 공개
- 객체 내부는 높은 응집도, 외부와는 낮은 결합도를 유지
- 상속 (Inheritance)
- 기존 클래스(부모)의 속성과 기능을 새로운 클래스(자식)가 물려받아 재사용 가능
- 코드의 재사용성과 확장성 향상
- 다형성 (Polymorphism)
- 같은 이름의 메서드가 객체에 따라 다르게 동작하도록 구현
- 예: 오버라이딩, 오버로딩
객체 지향의 장점
- 코드 재사용성
잘 만든 객체는 다양한 상황에서 재활용할 수 있어 생산성이 높아진다. - 유지보수 용이
기능이 객체 단위로 잘 나뉘어 있어 수정이나 확장이 간편하다. - 설계 중심 개발 가능
객체 간의 관계를 명확하게 정의함으로써 구조적인 개발이 가능하다.
객체 지향의 단점
- 성능 이슈
절차지향 방식보다 다소 느릴 수 있다(객체 간 메시지 전달 등으로 인해). - 초기 설계 부담
객체 구조와 책임을 명확히 나누는 데 시간과 노력이 많이 든다.
정리
| 항목 | 설명 |
| 정의 | 객체 단위로 프로그램을 구성하는 개발 방법 |
| 핵심 특징 | 추상화, 캡슐화, 상속, 다형성 |
| 장점 | 코드 재사용, 유지보수 용이, 확장성 |
| 단점 | 느린 성능, 높은 설계 비용 |
객체 지향은 단순한 기술이 아니라 사고방식이다.
복잡한 시스템을 설계할 때 큰 힘을 발휘하므로, 원리를 잘 이해하고 적용하는 것이 중요하다.
'Backend > Java & Spring' 카테고리의 다른 글
| JWT(Json Web Token)란? (0) | 2025.07.05 |
|---|---|
| DI와 객체지향 관점 (1) | 2025.06.26 |
| AOP를 활용했던 경험 (0) | 2025.06.13 |
| Maven과 Gradle의 차이점 (1) | 2025.06.12 |
| 아파치, 톰캣은 각각 멀티 프로세스인가 멀티 쓰레드인가? (0) | 2025.06.11 |