Node.js 심화 (객체지향))

병아리의최후·2022년 12월 26일
0

Node.js

목록 보기
11/13

01. 객체 지향 (Object-Oriented)

1. 객체지향이란?

소프트웨어의 핵심을 객체를 도출하고 각각의 역할을 정의하는 것에 초점을 맞춘다.

크고 복잡한 시스템을 효과적으로 분해하고 구성할 수 있고,
손쉽게 이해하고 효율적으로 다룰 수 있게 도와주는 방법

2. 캡슐화 (Encapsulation)

개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
정보은닉을 목적으로 한다.

Private라는 접근 제한자(Access modifier)를 사용하는데 인스턴스 내부에서만 해당 변수에 접근이 가능하도록 제한하는 문법

여기서 User 클래스의 name, age 멤버 변수는 클래스 외부에서는 어떠한 방법으로도 직접 접근을 할 수 없다.

오로지 setter만 변수를 변경할 수 있고, getter만 변수를 조회할 수 있음.

3. 상속 (Inheritance)

상속이란 이미 정의된 상위 클래스의 특징을 하위 클래스에서 물려받아 코드의 중복을 제거하고 코드 재사용성을 증대.
즉 하나의 클래스가 가진 특징(함수, 변수 및 데이터)을 다른 클래스가 그대로 물려 받는 것

4. 추상화 (Abstraction)

객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언하는 것을 추상화라고 한다.
즉, 불필요한 부분을 생략하고 객체 속성 중 공통적이고 중요한것만 모델화 하는 것.

5. 다형성 (Polymorphism)

다형성이란 객체(클래스)가 연산을 수행하게 될 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성으로 다른 여러 형태로 재구성 되는 것을 말한다.
즉, 동일한 메소드의 이름을 사용하지만 메소드에 대해 클래스마다 다르게 구현되는 개념

6. 의존성 (Dependency)

의존성이란 객체(모듈 및 클래스)들이 협력하는 과정 속에서 해당 객체들이
다른 객체를 의존하게 되는 정도

의존성이라는 말속에는 어떤 객체가 변경될 때 그 객체에 의존하는 다른 객체도
함께 변경될 수 있다는 사실이 내포

7. 결합도 (Coupling)

결합도는 의존성의 정도를 나타내며 다른 모듈에 대해 얼마나 많은 의존성을 가지고 있는지를 나타낸다.

  • 객체 사이의 의존성이 과한 경우를 가리켜 결합도가 높다고 말한다.
  • 객체들이 합리적인 수준으로 의존할 경우에는 결합도가 낮다고 말한다.
  • 두 객체 사이의 결합도가 높으면 높을수록 함께 변경될 확률도 높아지기 때문에 변경하기 어려워진다.
  • 따라서 설계의 목표는 객체 사이결합도를 낮춰 변경이 용이한 설계를 만드는 것이어야 한다.

8. 응집도 (Cohesion)

응집도는 모듈에 포함된 내부 요소들이 각각 연관되어 있는 관계의 정도를 나타낸다.

  • 밀접하게 연관된 작업만을 수행하고 연관성 없는 작업은 다른 객체에 위임하는 객체를 가리켜 응집도가 높다고 말한다.
  • 1개의 메소드가 내부에서 변수를 많이 사용할 수록 해당 메소드클래스응집도가 높아지게 된다.
  • 자신의 데이터를 스스로 처리하는 자율적인 객체를 만들면 결합도를 낮출 수 있을뿐더러 응집도를 높일 수 있다.
  • 객체의 응집도를 높이기 위해서는 객체는 스스로 자신의 데이터를 책임져야 한다.

0개의 댓글

관련 채용 정보