49. Node.js 심화주차 - 객체 지향 (항해 24일차)

코이그·2023년 4월 26일

항해99

목록 보기
47/54

객체 지향

기능이 중심이 되는 절차 지향과는 달리 객체가 중심이 되고 "누가 어떤 일을 할 것인가?"가 핵심이 된다.
객체를 도출하고 각각의 역할을 정의하는 것에 초점을 둔다.

캡슐화

객체 내부의 세부사항을 감추는 것. (정보은닉 목적)

Java, C++ 등에서는 클래스의 멤버변수들을 private으로 설정해주면 클래스의 외부에서 해당 변수들에 직접 접근을 하지 못한다. 보통 변수를 불러올 때는 getter, 수정할 때는 setter를 구현해서 사용한다.

JavaScript에는 private 기능이 없지만 클로저로 캡슐화의 구현이 가능하다.
TypeScript에서는 private을 사용할 수 있다.

상속

말 그대로 하위 클래스가 상위 클래스의 특징(변수,함수 등)을 물려받는 것. (중복된 코드의 제거)

클래스 간의 체계화된 구조를 파악할 수 있다.

하위 클래스는 상위 클래스로부터 상속받은 모든 데이터(변수,함수)에 접근이 가능하다.

추상화

객체들의 필요 없는 특성을 제거하고 본질적이고 공통적인 부분만 추출하여 표현하는 것.

인터페이스

클래스의 틀. 인터페이스 내부에서는 직접 구현을 한다기보다 해당 인터페이스를 기반으로 클래스를 정의한다고 할 때 어떤 변수, 어떤 함수가 있어야 하는지 명시해준다. 클래스를 정의할 때 인터페이스의 요구사항은 반드시 정의해야 한다.

다형성

어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 뜻한다.

오버로딩

상위 클래스에 정의된 함수와 같은 이름을 가졌지만 매개변수/반환타입이 다른 함수를 하위 클래스에 정의하는 것.

오버라이딩

상위 클래스에 정의된 함수와 정확히 일치하는(이름, 매개변수, 반환타입) 함수를 하위 클래스에 정의하는 것.
함수를 호출하는 주체(인스턴스)에 따라 누구의 메소드가 호출될 지 결정된다.

profile
COYG🔴⚪

0개의 댓글