JavaScript #14

날림·2021년 10월 5일

js/node

목록 보기
20/25

객체 지향 프로그래밍의 기본 컨셉

캡슐화

  • 데이터(속성)와 기능(메소드)을 묶는다

  • 느슨하게 결합한다
    순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것
    = 구현을 수정하기 쉽다

  • 은닉화
    내부 데이터나 내부 구현이 외부로 노출되지 않는다

다른 언어에서는 일반적으로 public, protected, private 등 키워드로 구현하지만 JavaScript는 키워드가 없다
= 클로저, 깊은 복사, 함수형 반환 등을 활용


추상화

  • 내부 구현은 복잡한데 외부로 노출되는 부분(인터페이스)은 단순하다

  • 캡슐화와 헷갈릴 수 있다
    = 캡슐화: 코드나 데이터의 은닉
    = 추상화: 필요하지 않은 것은 노출시키지 않고, 단순한 이름으로 정의


상속

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것
    = 정확히는 "기본 클래스(base class)의 특징을 파생 클래스(derive class)가 상속받는다"

ex) 사람 클래스

  • 속성: 이름, 성별, 나이 등
  • 메소드: 먹다, 자다

학생은 기본적으로 사람이면서
추가로 공부하는 내용의 속성, 공부하다 라는 메소드를 가진다

ex) 학생 클래스

  • 속성: 이름, 성별, 나이, 공부하는 내용
  • 메소드: 먹다, 자다, 공부하다

학생 클래스를 처음부터 작성할 필요 없이 사람 클래스에서 기본적인 내용을 가져온 뒤 필요한 내용을 추가하여 만들 수 있다

ex) 학생 클래스

  • 사람 클래스 내용
    + 추가 속성: 공부하는 내용
    + 추가 메소드: 공부하다

다형성

같은 클래스에서 상속받은 클래스라도
속성이나 메소드는 다르게 구현될 수 있다

ex) 동물 클래스가 메소드로 말하다를 가진다 할 때

  • 개 클래스짖다 메소드
  • 고양이 클래스울다 메소드
  • 사람 클래스말하다 메소드

로 각자 다르게 구현된다

  • 이 때 각각의 하위 클래스는 상위 클래스의 메소드 위에 자신의 메소드를 덮어쓰는 메소드 오버라이딩(method overriding)을 수행
profile
항상배우기

0개의 댓글