OOP(Object Oriented Programming)

김보성·2021년 2월 26일
0

JavaScript

목록 보기
6/11

객체지향?

객체지향 프로그래밍은 단순히 별개의 함수와 변수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리과정에 대한 모형을 만들어 내는 방식을 고안해놨다. 따라서 데이터와 기능이 별개로 취급되지 않고, 한번에 묶어서 처리할 수 있게 되었다. 그러니까 쉽게 말해서 객체를 만들어서 재사용한다는 말인다.

클래스와 인스턴스

클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진!
인스턴스는 클래스의 사례(instance)임!
클래스는 인스턴스를 만들기위해 생성자 함수(constructor)를 포함함!

클래스에는 속성(property)과 메소드(method)로 구성되어있다.

class Car(){ 
  constructor(color, price, brand) //Car의 속성
  this.color = color;
  this.price = price;
  this.brand = brand;
};

Car.prototype.go = function() { //Car의 method
  console.log('gogogo')
}

Main Concept

1. Encapsulation(캡슐화)

1) 데이터와 기능을 하나의 단위로 묶음.
2) hiding : 구현은 숨기고, 동작은 노출시킴.
3) loose coupling에 유리 : 언제든지 구현을 수정할 수 있음.

2. Inheritance(상속)

부모클래스의 특징을 자식 클래스가 물려받는 것.
예를들어서 Human클래스에서 Student클래스로 상속받는것!

3. Abstraction(추상화)

내부 구현은 복잡하지만, 보여지는 부분은 단순하게 하는 것.
캡슐화와 추상화의 차이점은 캡슐화는 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메소드 등을 노출시키지 않고, 기능 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있습니다.

4. Polymorphism(다형성)

다양한 형태로 만들 수 있음을 의미함.
만약에 다형성이 없다면 부모클래스에서 하나하나 특징을 넣어 주는 번거로움이 있음.

OOP의 장점

캡슐화와 추상화, 상속은 코드를 복잡하지 않게 만들고, 재사용성을 높임.
다형성으로 인해 동일한 메소드에 대해 객체의 특성에 맞게 달리 작성하는 것이 가능해짐

결론

객체 지향은 사람이 세계를 보고 이해하는 방법을 흉내낸 방법론이다.라고 배웠다. 나는 레고를 쌓는 것 같다라는 생각이 든다. 장고를 사용할 때 몇번 사용했던 거 같은데 다시 사용할 려고 하니 어색하다. javascript는 좀 다른 거 같다. 어찌되었건 많이 사용을 해봐야 이해 할 수 있을 거 같다.

profile
Boseong

0개의 댓글