본문 바로가기

개념정리

8/7[TIL]객체 지향

* 객체 지향 프로그래밍 

하나의 모델이 되는 청사진을 만들고(class) Ex) Car

그 청사진을 바탕으로 한 객체(instance) Ex) Avante, mini를 만드는 프로그래밍 패턴

 

- 클래스는 함수로 정의될 수 있다.

"ES5"와 "ES6"에서 쓰는 방법이 약간 다르다.

함수를 정의할 때 첫 문자는 대문자를 쓰는 것이 좋다고 한다.

 

[ES5]

1
2
3
4
5
function Car(brand, name, color) {
 
// 인스턴스가 만들어 질 때 실행되는 코드
 
}
cs

[ES6]

1
2
3
4
5
6
7
8
9
class Car {
 
  constructor(brand , name, color) {
 
//인스턴스가 만들어 질 때 실행되는 코드
 
  }
 
}
cs

 

- new 키워드를 통해 클래스의 인스턴스를 만들어낼 수도 있다.

1
let avante = new Car('hyundai','avante','black');
cs

(avante 즉, 인스턴스는 Car라는 클래스의 고유한 속성과 메소드를 가진다.)

 

-속성과 메소드(클래스에 속성과 메소드를 정의하고, 인스턴스에서 이용한다.)

그렇기 때문에 현실 세계를 기반으로 프로그래밍 모델을 만들 때에 유용하다고 한다.

 

- 아래는 클래스 속성의 예시이다.

[ES5]

1
2
3
4
5
6
function Car(brand, name, color) {
  this.brand = brand ;
  this.name = name;
  this.color = color;
}
 
cs

위의 그림의 Car는 class이고 this 객체는 sonata라고 보면 될 것 같다.

위 그림이 constructor (생성자) 함수가 된다.

1
2
3
4
5
6
7
Car.prototype.drive = function() {
  console.log(this.name + '가 운전을 시작합니다');
}
 
let sonata = new Car('hyundai''sonata','white');
sonata.color; // 'white'
sonata.drive(); // 'sonata가 운전을 시작합니다' 
cs

위 그림의  Car.prototype 객체에 속성이나 메소드를 정의할 수 있다.

그리고 sonata가 instance가 된다.

 

[ES6]

1
2
3
4
5
6
7
class Car {
  constructor(brand, name, color) {
    this.brand = brand ;
    this.name = name;
    this.color = color;
  }
}
cs

 

- 아래는 클래스 메소드의 정의 예시이다.

[ES5]

1
2
3
4
5
6
7
function Car(brand, name, color) { }
Car.prototype.refuel = function () {
   // 연료 공급 구현 코드 //
}
Car.prototype.drive = function () {
   // 운전 구현 코드//
}
cs

[ES6]

1
2
3
4
5
6
7
class Car {
  construtor(brand, name, color) { }
  refuel() {
  }
  drive() {
  }
}
cs

[ES5]와 [ES6]의 케이스를 놓고 보면 내가 편한 건 [ES6] 것 같다.

 

인스턴스에서는 아래와 같이 사용할 수 있다. 

 

1
2
3
4
let sonata = new Car('hyundai''sonata''white');
sonata.color ;  //'white'
sonata.drive(); // 소나타가 운전을 시작합니다
 
cs

prototype : 모델의 청사진을 만들 때 쓰는 원형 객체라고 한다. 우리가 모르는 소스 코드를 찾을 때 자주 방문하는 MDN에 좌측을 보면 메소드들이 쭉 나열돼있는 가운데 ex) Array.prototype.indexOf()처럼 들어가 있는 경우인데 코드의 조상님으로 보면 된다고 한다.

constructor: 인스턴스가 초기화될 때 실행되는 생성자 함수이다.

this : 함수가 실행될 때 해당 scope마다 생성되는 고유한 실행 context new 키워드로 인스턴스를 실행했을 때에는 해당 인스턴스가 바로 this의 값이 된다고 한다.

 

 

 

 

 

 

'개념정리' 카테고리의 다른 글

개발자로의 커리어 전환 2주일...  (1) 2020.08.10
8/7[TIL]매개변수  (0) 2020.08.07
8/6일 [TIL] 테스트 코드  (0) 2020.08.06
8/5일 [TIL]  (0) 2020.08.05
8/3~8/4일  (1) 2020.08.04