[객체 지향 프로그래밍 입문 - 인프런] 다형성과 추상화

김성혁·2021년 2월 6일
0
post-thumbnail

다형성(Polymorphism)

  • 여러(poly) 모습(morph)을 갖는 것
  • 객체 지향에서는 한 객체가 여러 타입을 갖는 것
    • 한 객체가 여러 타입의 기능을 제공
    • 타입 상속으로 다형성 구현 - 하위 타입은 상위 타입도 됨

추상화(Abstraction)

  • 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미 있는 표현으로 정의하는 과정
  • 두 가지 방식의 추상화(특정한 성질을 뽑아내는 방식, 공통 성질을 뽑아내는 방식(일반화))
    • DB의 USER 테이블 : 아이디, 이름, 이메일(특정한 성질)
    • Money 클래스 : 통화, 금액(특정한 성질)
    • 프린터 : HP MXXX, 삼성 SL-M2XX(공통 성질)
    • GPU : 지포스, 라데온(공통 성질)

타입 추상화

  • 여러 구현 클래스를 대표하는 상위 타입 도출
    • 흔히 인터페이스 타입으로 추상화
    • 추상화 타입과 구현은 타입 상속으로 해결

추상 타입 사용

  • 추상 타입을 이용한 프로그래밍
  • 추상 타입은 구현을 감춤
    • 기능의 구현이 아닌 의도를 더 잘 드러냄

추상 타입 사용에 따른 이점 : 유연함

추상화는 의존 대상이 변경하는 시점에

추상화 -> 추상 타입 증가 -> 복잡도 증가

  • 아직 존재하지 않는 기능에 대한 이른 추상화는 주의 : 잘못된 추상화 가능성, 복잡도만 증가
  • 실제 변경 및 확장이 발생할 때 추상화 시도

추상화를 잘 하려면?

구현을 한 이유가 무엇 때문인지 생각해야 함.

0개의 댓글