2026.05.10. 19:25
1. 캡슐화
데이터와 그 데이터에 작용하는 메서드를 하나로 묶음.
정보 숨기기 : 개체 안에 있는 데이터를 외부로부터 보호
2. 상속
이미 존재하는 개체를 기반으로 확장된 개체를 만드는 방법
확장된 개체
기존 개체에 속한 데이터와 동작을 모두 물려받음.
여기에 다른 데이터나 동작을 추가할 수 있음.
실용적 용도 : 코드 중복을 막음
사람에게는 점진적 학습이 가장 효율적
3. 다형성
같은 지시를 내렸는데 다른 종류의 개체가 동작을 달리하는 것
어떤 함수 구현이 실행될지는 실행 중에 결정: late binding
일반적인 함수 호출은 이른 바인딩(early binding) : 컴파일 중에 결정
다형성의 혜택을 받으려면 상속 관계가 필요
부모 개체에서 함수 시그내처를 선언
자식 개체에서 그 함수를 다르게 구현(오버라이딩)
참고 : 다른 형태의 다형성
애드혹 다형성 : 함수 오버로딩, 연산자 오버로딩 - 함수명은 같은데 매개변수 목록이 다름.
매개변수 다형성 : 제네릭, C++의 템플릿
4. 추상화
개체 사용 시 그 안에 정확히 어떤 데이터가 있는지 알 필요 없음.
개체 안에 있는 데이터에 직접 접근 불가
캡슐화는 데이터 추상화를 이루는 방법 중 하나
다형성을 통한 추상화
추상클래스, 인터페이스를 사용한 추상화
5. 연관
어떤 개체가 제공하는 기능을 다른 개체가 이용하는 관계
상속은 자식개체가 부모 개체의 모든 것을 내포
연관은 한 개체가 다른 개체를 참조
세부적으로 다시 집합과 컴포지션으로 나누기도 함.
6. 컴포지션
합성, 조합, 조립, 구성 등 다양한 번역어가 존재.
여러 개의 부품을 조립해서 새 개체를 만드는 방법
집합과의 차이
부품 그 자체로는 존재 의의가 없음
조립품이 소멸할 때 부품도 같이 소멸(즉, 부품은 조립품의 수명을 따름)
7. 집합
여러 개체를 모아 다른 개체를 만들지만 별도로 존재 가능.
ex) A대학에 등록한 학생들
컴포지션과 차이
각 개체들이 개별적으로 살아남을 수 있음.