인프런, 객체 지향 프로그래밍 입문 - 3

StarSeeker·2023년 3월 8일
0

다형성

  • 여러(Poly) 모습(morph)을 갖는것
  • 한 객체가 여러 타입을 갖는 것
  • 한 객체가 여러 타입의 기능을 제공한다.

추상화

  • 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미있는 표현으로 정의하는 과정
  • 따라서 추상화는 공통의 성질을 뽑아내는 것! (일반화)

따라서, 여러 구현 클래스가 공통된 기능이 있을때 여러 클래스를 대표하는 상위 타입을 도출할 수 있다.

여러 구현 클래스가 공통된 기능을 가진 하나의 상위타입으로 묶인다.
-> 그 상위타입은 다형성을 갖는다. (여러 하위타입의 모습)
-> 공통된 기능이 추상화된다.

추상화와 다형성은 연결된다!

  • 인터페이스로 주로 구현함. 기능에 대한 의미를 제공하고 구현은 제공하지 않음.

  • 추상 타입은 구현을 감춤.
    기능의 구현이 아닌 의도를 더 잘 드러낸다.

어떤 이점이 있나?

  • 추상타입을 사용하면 콘크리트 클래스들을(기능이 다구현된 클래스) 대표하여 메소드를 호출할수 있고
    그 메소드의 기능이 수정되어도 추상타입을 사용한 코드에는 변화가 없다!

  • 각각의 콘크리트 클래스의 기능을 수정하거나 추상타입을 구현한 새클래스를 추가하면 된다!

  • 결과적으로 사용대상을 쉽게 변경할 수 있다.

하지만,

  • 아직 존재하지 않는 기능에 대한 이른 추상화는 주의해야한다.
    => 잘못된 추상화 가능성이 있고 복잡도만 증가할 가능성이 있다.
  • 실제로 변경 확장이 발생할 때 추상화를 시도하는게 좋다.

추상화를 잘하려면,

  • 구현을 한 이유(어떤 비즈니스 요구사항인지)가 무엇 때문인지 생각해야함!
profile
춤추듯 개발하고 싶은 사람

0개의 댓글