12/01 타입스크립트 학습일지<객체지향의 4대원칙>

박지원·2021년 12월 1일
0

객체지향을 사용하면 중복되는 관련 객체를 재사용할 수 있어서 코드 중복을 줄일 수 있고 연관된 객체들의 역할 분담을 좀 더 확실하게 할 수 있어서 가독성이 높아질 수 있습니다.

객체지향의 4대 원칙

1. 캡슐화

정보 은닉

  • typescript에서는 public, protected, private 를 사용해서 접근을 제한 할 수 있습니다.
  • 접근 제한자 설명 링크
  • 객체 지향에서 캡슐화는 특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶는 것을 말하고 이러한 특징은 데이터를 은닉하고 외부에서 내부 데이터를 변경할 수 없도록 할 수 있습니다.

2. 추상화

공통점을 취하고 차이점을 버리는 일반화를 통해 구현 가능

추상화는 객체의 공통적인 핵심 개념 혹은 기능만 추출해서 모은것입니다.

객체지향에서의 추상화는 어떤 하위클래스들에 존재하는 공통적인 메소드를 인터페이스로 정의하는 것을 의미합니다.

3. 상속성

상속은 상위 개념의 특징을 하위 개념이 물려받는 것을 의미합니다.

extends

  • extends라는 키워드를 통해 class를 상속받을 수 있습니다.
  • 자식 클래스의 constructor는 반드시 super를 호출해서 부모 클래스에서 필요한 데이터를 super를 써서 전달해줘야합니다.

장점

상속의 장점으로는 코드를 재사용할 수 있는 점이 있습니다.

상속이 없었다면 코드를 이렇게 작성해야 했을 것입니다.

단순한 코드이지만 run과 eat은 중복되는 메소드입니다. 이를 상속을 통해 해결할 수 있습니다.

이렇게 되면 중복된 코드가 확 줄어들게 됩니다. 그리고 name이나 run, eat 메서드를 재사용함으로써 하위 클래스는 하위클래스 만의 기능에 집중할 수 있게 되었습니다.

단점

하위 클래스가 상위 클래스에 강하게 결합하게 됩니다. 하위 클래스는 상위 클래스의 메소드나 필드를 사용할 수 있지만, 결합도가 높아지고 응집력이 낮아져서 수동적인 객체가 돼 버립니다. 그래서 변경에 취약하며 상위 클래스의 결함이 하위클래스도 그래도 이어받게 됩니다.

4. 다형성

프로그래밍 언어의 각 요소들 (상수, 변수, 식, 오브젝트, 함수, 메소드등)이 다양한 자료형에 속하는 것이 허가되는 성질.

쉽게 말해 하나의 객체에 여러가지 타입을 대입할 수 있는 것.

클래스 다형성

부모 클래스인 Animal을 Dog가 상속하고 있습니다. 하지만puppy는 Animal 타입으로 결정되었습니다. 이런 경우 실제 동작은 부모 클래스를 기준으로 실행이 됩니다.
그래서 자식클래스의 species 에는 접근할 수 없습니다.
그리고 자식의 play()메서드가 오버라이딩 돼 있습니다. 이처럼 런타임 시에 호출될 메서드가 결정되는 특성을 런타임 다형성이라고 합니다. 대표적으로 덕 타이핑이 있습니다.

인터페이스 다형성

인터페이스도 마찬가지로 부모 클래스의 타입으로 할당되면 구현 클래스에 새롭게 추가된 메소드에 접근할 수 없습니다.

매개변수의 다형성

메소드의 매개변수 타입을 유티온 타입을 사용해서 객체가 다형성을 띄도록 할 수도 있습니다.

출처 및 참고

2개의 댓글

comment-user-thumbnail
2021년 12월 1일
답글 달기
comment-user-thumbnail
2021년 12월 1일
답글 달기