다형성(Polymorphism)
- 여러(poly) 모습(morph)을 갖는 것
- 객체 지향에서는 한 객체가 여러 타입을 갖는 것
- 한 객체가 여러 타입의 기능을 제공
- 타입 상속으로 다형성 구현 - 하위 타입은 상위 타입도 됨
추상화(Abstraction)
- 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미 있는 표현으로 정의하는 과정
- 두 가지 방식의 추상화(특정한 성질을 뽑아내는 방식, 공통 성질을 뽑아내는 방식(일반화))
- DB의 USER 테이블 : 아이디, 이름, 이메일(특정한 성질)
- Money 클래스 : 통화, 금액(특정한 성질)
- 프린터 : HP MXXX, 삼성 SL-M2XX(공통 성질)
- GPU : 지포스, 라데온(공통 성질)
타입 추상화
- 여러 구현 클래스를 대표하는 상위 타입 도출
- 흔히 인터페이스 타입으로 추상화
- 추상화 타입과 구현은 타입 상속으로 해결
추상 타입 사용
- 추상 타입을 이용한 프로그래밍
- 추상 타입은 구현을 감춤
추상 타입 사용에 따른 이점 : 유연함
추상화는 의존 대상이 변경하는 시점에
추상화 -> 추상 타입 증가 -> 복잡도 증가
- 아직 존재하지 않는 기능에 대한 이른 추상화는 주의 : 잘못된 추상화 가능성, 복잡도만 증가
- 실제 변경 및 확장이 발생할 때 추상화 시도
추상화를 잘 하려면?
구현을 한 이유가 무엇 때문인지 생각해야 함.