[JS] OOP란?

ds-k.fe·2021년 2월 26일
0

JavaScript

목록 보기
7/14

언어의 구분

절차적 언어

  • 순차적인 명령의 조합으로 코드를 짜는 언어
  • 초기의 프로그래밍 언어(C, Fortran)

객체 지향 언어

  • Class 라고 부르는 데이터 모델의 청사진을 사용해 코드 작성

  • 대부분의 현대의 프로그래밍 언어(Java, C++, C#)

    → JavaScript: 객체 지향으로 작성 가능

OOP란

  • 프로그램 설계 철학

  • 모든 것은 '객체'로 그룹화된다.

    → 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.

  • 그룹된 객체 내에는 '데이터(속성)'와 '기능(메소드)'이 존재한다.

Class & instance

  • 객체를 생성하기 위한 아이디어나 청사진

  • 세부 사항(속성)이 들어가지 않은 청사진

    → 세부 사항을 넣으면 객체(instance)

  • 생성자(constructor)를 통해 세부 사항(속성)을 넣어준다.

    → 함수에 인자를 넣는 것과 같이 속성을 넣을 수 있다.

Properties & Methods

ex) 자동차

class Car{
	//Properties
	constructor(color, price, speed){
		this.color = color;
		this.price = price;
		this.speed = speed;
	}
	//Methods
	Start();
	Backward();
	Forward();
	Stop()
}

OOP Basic Concepts

Encapsulation(캡슐화)

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉화 : 디테일한 구현이나 데이터는 숨기고, 동작은 노출
  • 느슨한 결합(Loose Coupling)

Abstraction(추상화)

  • 내부 구현은 복잡하지만, 노출되는 부분은 단순하게 만드는 개념
  • 추상화를 통해 인터페이스가 단순해진다.
  • 클래스 정의 시, 메소드와 속성만 정의한 것을 인터페이스라고 부른다.

Inheritance(상속)

  • 부모 클래스(기본 클래스)의 특징을, 자식 클래스(파생 클래스)가 상속받는다.
  • ex) Human → Student / Vehicle → Car

Polymorphism(다형성)

  • 다양한 형태를 가질 수 있다.
  • 같은 이름을 가진 메소드라도 조금씩 다르게 작동한다.

0개의 댓글