1. 객체 지향이란?
소프트웨어 설계에서 '객체 지향'은 단순한 프로그래밍 패러다임 그 이상입니다. 현실 세계의 사물이나 개념을 객체(Object) 로 표현하고, 이들 간의 관계와 메시지를 통해 문제를 해결합니다.
객체는 상태(데이터) 와 행위(기능) 를 함께 가지고 있는 독립적인 단위입니다.
2. 객체 지향의 4가지 핵심 특징
특징설명
추상화 (Abstraction) | 공통된 속성과 기능을 식별해 클래스로 정의 |
캡슐화 (Encapsulation) | 객체의 내부 구현을 숨기고 필요한 인터페이스만 공개 |
상속 (Inheritance) | 기존 클래스를 재사용해 새로운 클래스를 생성 |
다형성 (Polymorphism) | 동일한 메시지에 대해 객체에 따라 다른 동작 수행 |
3. 실생활과 코드로 이해하는 다형성
- 운전자는 자동차 내부 구조를 몰라도 운전할 수 있습니다.
- 자동차가 소나타든 테슬라든 운전자는 동일한 조작(운전 인터페이스)만 수행하면 됩니다.
- 이것이 바로 “역할과 구현의 분리”, 즉 다형성의 핵심입니다.
Car car = new Sonata();
car.drive();
car = new Tesla();
car.drive(); // 클라이언트는 drive()만 알면 됨
- 이 구조 덕분에 클라이언트는 구현체가 변경되어도 영향을 받지 않음
- 변화에 유연한 코드, 테스트하기 쉬운 구조가 바로 여기서 출발합니다.
4. 구현보다 중요한 것: 역할(인터페이스)
객체 지향에서 가장 중요한 건 ‘무엇을 할 것인가?’를 정의하는 인터페이스입니다. 구현체는 바뀔 수 있지만, 인터페이스는 시스템의 약속이기 때문에 쉽게 바뀌지 않습니다.
“구현보다 역할이 먼저다.”
객체 간의 협력을 인터페이스로 설계하면, 구현이 바뀌더라도 시스템 전체에 영향을 주지 않고 변경할 수 있습니다. 이것이 바로 객체 지향이 추구하는 변경에 강한 구조입니다.
5. 결론
객체 지향의 핵심은 코드의 구조를 유연하고 견고하게 만드는 데 있습니다. 이 특징들은 단순히 개념으로 끝나는 것이 아니라, 우리가 매일 작성하는 코드의 품질과 유지보수성에 직접적인 영향을 줍니다.
'Spring' 카테고리의 다른 글
[Spring 완전 정복 시리즈] 6편 - 예제 만들기: 역할과 구현 분리의 시작 (1) | 2025.07.26 |
---|---|
[Spring 완전 정복 시리즈] 5편 - 객체 지향 설계와 스프링: DI가 왜 중요한가? (0) | 2025.07.23 |
[Spring 완전 정복 시리즈] 4편 - 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2025.07.23 |
[Spring 완전 정복 시리즈] 2편 - 스프링이란? (0) | 2025.07.23 |
[Spring 완전 정복 시리즈] 1편 - 스프링의 탄생 (2) | 2025.07.23 |