Spring

[Spring 완전 정복 시리즈] 3편 - 객체 지향 특징: 유연하고 변경에 강한 코드의 시작

dev-nadan 2025. 7. 23. 18:30

1. 객체 지향이란?

소프트웨어 설계에서 '객체 지향'은 단순한 프로그래밍 패러다임 그 이상입니다. 현실 세계의 사물이나 개념을 객체(Object) 로 표현하고, 이들 간의 관계와 메시지를 통해 문제를 해결합니다.

객체는 상태(데이터)행위(기능) 를 함께 가지고 있는 독립적인 단위입니다.


2. 객체 지향의 4가지 핵심 특징

특징설명
추상화 (Abstraction) 공통된 속성과 기능을 식별해 클래스로 정의
캡슐화 (Encapsulation) 객체의 내부 구현을 숨기고 필요한 인터페이스만 공개
상속 (Inheritance) 기존 클래스를 재사용해 새로운 클래스를 생성
다형성 (Polymorphism) 동일한 메시지에 대해 객체에 따라 다른 동작 수행
 

 

3. 실생활과 코드로 이해하는 다형성

  • 운전자는 자동차 내부 구조를 몰라도 운전할 수 있습니다.
  • 자동차가 소나타든 테슬라든 운전자는 동일한 조작(운전 인터페이스)만 수행하면 됩니다.
  • 이것이 바로 “역할과 구현의 분리”, 즉 다형성의 핵심입니다.
Car car = new Sonata();
car.drive();

car = new Tesla();
car.drive(); // 클라이언트는 drive()만 알면 됨
  • 이 구조 덕분에 클라이언트는 구현체가 변경되어도 영향을 받지 않음
  • 변화에 유연한 코드, 테스트하기 쉬운 구조가 바로 여기서 출발합니다.

4. 구현보다 중요한 것: 역할(인터페이스)

객체 지향에서 가장 중요한 건 ‘무엇을 할 것인가?’를 정의하는 인터페이스입니다. 구현체는 바뀔 수 있지만, 인터페이스는 시스템의 약속이기 때문에 쉽게 바뀌지 않습니다.

“구현보다 역할이 먼저다.”

객체 간의 협력을 인터페이스로 설계하면, 구현이 바뀌더라도 시스템 전체에 영향을 주지 않고 변경할 수 있습니다. 이것이 바로 객체 지향이 추구하는 변경에 강한 구조입니다.


5. 결론

객체 지향의 핵심은 코드의 구조를 유연하고 견고하게 만드는 데 있습니다. 이 특징들은 단순히 개념으로 끝나는 것이 아니라, 우리가 매일 작성하는 코드의 품질과 유지보수성에 직접적인 영향을 줍니다.