Contents

객체지향 프로그래밍(OOP)의 4가지 핵심 특징

객체지향 프로그래밍은 프로그램을 단순히 명령어의 나열로 보는 것이 아니라, 여러 개의 독립된 단위인 ‘객체’들의 모임으로 파악하는 시각이다. 이를 지탱하는 4가지 기둥은 다음과 같다.

1. 캡슐화 (Encapsulation)

캡슐화는 데이터(속성)와 그 데이터를 처리하는 함수(메서드)를 하나로 묶는 것을 말한다.

  • 정보 은닉: 객체 내부의 상세한 구현을 외부로부터 숨기고, 필요한 부분만 노출한다.
  • 안정성: 내부 코드가 바뀌어도 외부에는 영향을 주지 않아 유지보수가 쉬워지며, 데이터의 오염을 방지한다.

2. 상속 (Inheritance)

상속은 이미 정의된 상위 클래스(부모)의 특징을 하위 클래스(자식)가 물려받는 것이다.

  • 재사용성: 기존 코드를 수정하지 않고 그대로 가져다 쓰면서, 필요한 기능만 추가하거나 변경할 수 있다.
  • 계층 구조: 클래스 간의 관계를 체계적으로 구축하여 논리적인 설계를 가능하게 한다.

3. 추상화 (Abstraction)

추상화는 복잡한 시스템으로부터 핵심적인 개념이나 기능을 간추려내는 것을 의미한다.

  • 본질에 집중: 객체의 복잡한 내부 동작보다는 “무엇을 하는지(What it does)“에 집중한다.
  • 인터페이스 활용: 사용자에게는 리모컨 버튼(인터페이스)만 제공하고, 내부 회로가 어떻게 돌아가는지는 알 필요 없게 만드는 것과 같습니다.

4. 다형성 (Polymorphism)

다형성은 하나의 객체나 메서드가 여러 가지 형태를 가질 수 있는 능력을 말한다. OOP의 꽃이라고도 불린다.

  • 오버라이딩(Overriding): 부모에게 물려받은 기능을 자식의 입맛에 맞게 재정의하는 것.
  • 오버로딩(Overloading): 같은 이름의 메서드라도 매개변수에 따라 다르게 동작하게 하는 것.
  • 유연성: 하나의 타입으로 여러 종류의 객체를 다룰 수 있어 코드의 유연성이 극대화된다.

요약

객체지향의 4가지 특징은 결국 코드의 재사용성을 높이고, 유지보수를 편하게 하며, 대규모 프로젝트를 효율적으로 관리하기 위해 존재한다.

  1. 캡슐화: 데이터를 보호하고 숨김
  2. 상속: 코드를 물려받아 재사용
  3. 추상화: 복잡한 건 빼고 핵심만 추출
  4. 다형성: 상황에 따라 다양한 형태로 변신