개체지향 7대 개념

2026.05.10. 19:25

1. 캡슐화

데이터와 그 데이터에 작용하는 메서드를 하나로 묶음. 

정보 숨기기 : 개체 안에 있는 데이터를 외부로부터 보호

2. 상속

이미 존재하는 개체를 기반으로 확장된 개체를 만드는 방법

  • 확장된 개체 

    • 기존 개체에 속한 데이터와 동작을 모두 물려받음. 

    • 여기에 다른 데이터나 동작을 추가할 수 있음.

  • 실용적 용도 : 코드 중복을 막음

  • 사람에게는 점진적 학습이 가장 효율적

3. 다형성

같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리하는 것

  • 어떤 함수 구현이 실행될지는 실행 중에 결정: late binding

  • 일반적인 함수 호출은 이른 바인딩(early binding) : 컴파일 중에 결정

  • 다형성의 혜택을 받으려면 상속 관계가 필요

    • 부모 개체에서 함수 시그내처를 선언

    • 자식 개체에서 그 함수를 다르게 구현(오버라이딩)

참고 : 다른 형태의 다형성

  1. 애드혹 다형성 : 함수 오버로딩, 연산자 오버로딩 - 함수명은 같은데 매개변수 목록이 다름.

  2. 매개변수 다형성 : 제네릭, C++의 템플릿

4. 추상화

개체 사용 시 그 안에 정확히 어떤 데이터가 있는지 알 필요 없음.

개체 안에 있는 데이터에 직접 접근 불가

캡슐화는 데이터 추상화를 이루는 방법 중 하나

  • 다형성을 통한 추상화

  • 추상클래스, 인터페이스를 사용한 추상화

5. 연관

어떤 개체가 제공하는 기능을 다른 개체가 이용하는 관계

  • 상속은 자식개체가 부모 개체의 모든 것을 내포 

  • 연관은 한 개체가 다른 개체를 참조

  • 세부적으로 다시 집합과 컴포지션으로 나누기도 함.

6. 컴포지션

합성, 조합, 조립, 구성 등 다양한 번역어가 존재.

여러 개의 부품을 조립해서 새 개체를 만드는 방법

  • 집합과의 차이

    • 부품 그 자체로는 존재 의의가 없음

    • 조립품이 소멸할 때 부품도 같이 소멸(즉, 부품은 조립품의 수명을 따름)

7. 집합

여러 개체를 모아 다른 개체를 만들지만 별도로 존재 가능.

ex) A대학에 등록한 학생들

  • 컴포지션과 차이

    • 각 개체들이 개별적으로 살아남을 수 있음.