Lewis's Tech Keep
[OOP] OOP 특성 본문
- 보통은 4가지 특성
- 문헌에 따라 3가지 또는 7가지로 나누기도 함
중요한 3가지
- 캡슐화 (encapsulation)
: 데이터 & 데이터에 작용하는 메서드를 하나로 묶는 것
: 정보 숨기기 (data hiding): 개체 안에 있는 데이터를 외부로 부터 보호
- 상속 (inheritance)
: 이미 존재하는 개체를 기반으로 확장 -> 진화와 같음 새로운 개체는 상속되는 개체의 모든 것을 이어받는 존재
: 코드 중복을 막는다, 사람은 점진적 개념일 때 가장 효율적이다
- 다형성(polymorphism)
: 같은 지시를 내렸지만 다른 종류의 개체가 동작을 달리하는 것 (overriding)
: 함수 구현이 실행될 지는 실행 중에 결정 된다 = 늦은 바인딩 (late binding) [ early binding 은 컴파일 중에 결정됨 ]
: 다형성은 상속 관계가 필요하다
엄밀하게 말할 때의 다형성
- 애드혹(ad-hoc) 다형성 - 맞춤형 다형성과 같은 느낌
: 함수 오버로딩, 연산자 오버로딩에 해당 됨
- 매개변수 다형성 - 제네릭
: 제네릭 적용할 때
+ 1가지
- (데이터) 추상화 (abstraction)
: 일반화, 개체 속에 있는 실제 데이터나 함수 구현 방법에 종속되지 않겠다.
: (반대의미) 구체화 -> 개체 속에 안 쪽에서 무엇이 일어나는 지 전부 다 알려고 하는 것
- 데이터 추상화
: 개체 사용 시 정확히 어떤 데이터가 있는 지 알 필요 없음
: 개체 안에 있는 데이터 직접 접근 하지 않는다 ( 대신에 함수를 통해 접근 )
: 즉, 캡슐화(encapsulation)는 데이터 추상화를 이루는 방법 중 하나
- 다형성을 통한 추상화
: 추상 클래스(abstract class) or 인터페이스(interface) 를 사용
나머지 3가지
- 연관 (association)
: 상속과 반대적 효과 (상속의 장점 -> 연관의 단점, 연관의 장점 -> 상속의 단점)
: 집합 + 컴포지션 : 연관
- 컴포지션 (composition)
: 조립 부품 하나하나가 의미가 없지만 모으면 개체가 됨
: 조립품이 소멸할 때 부품도 같이 소멸
- 집합 (aggregation)
: 조립하지만 하나하나가 의미가 있어서 따로 봐도 의미가 있지만 모으면 다른 의미의 개체가 됨
: 조립품이 소멸해도 부품이 소멸되지 않는다.
'Java > 개체지향 프로그래밍 with JAVA' 카테고리의 다른 글
06/15 TIL (OOP 필요성) (0) | 2021.06.15 |
---|---|
06/15 TIL (자바 문법 기본) (0) | 2021.06.15 |
[JAVA] 개체 지향 - 생성자 및 접근 제어자 (0) | 2021.05.11 |
[JAVA] 문자열 비교 String 에 관하여 (0) | 2021.05.01 |
[JAVA] 자바 자료형 (0) | 2021.05.01 |