클래스
- 특정 인트턴스(객체)를 생성하기 위해 변수, 매소드를 정의하고 있는 청사진과 같은 역할을 함
- ES5에서는 함수 정의하듯 정의하고
- ES6에서는 class 문법과 생성자(constructor)을 사용해 클래스 생성
++ 생성자는 반환값이 존재하지 않음
인스턴스
- new를 사용해 생성자 함수를 실행하고 클래스의 틀(청사진, 설계)를 바탕으로 한 새로운 객체를 생성함
this
- 클래스 내부에 사용하는 this는 인스턴스를 가르키며 인스턴스 객체에 해당하는 변수에 값을 할당한다는 의미
메서드
- ES5 prototype(원형 객체)을 사용해 메서드 추가
- ES6 class 내부에 메서드명(){} 와 같은 형태로 정의
- 함수가 실행 될때, 해당 스코프마다 생성되는 고유의 연산 범위 (실행 context)
ES5 방식의 클래스-인스턴스 예시
function Car(brand, name, color){
this.brand = brand;
this.name = name;
this.color =color;
}
Car.prototype.drive = function(){
console.log(this.name + '운전 시작~!')
}
let avante = new Car('Audi','A3','black');
avante.color;
avante.drive();
ES6 방식의 클래스-인스턴스 예시
class Car {
constructor(brand, name, color){
this.brand = brand;
this.name = name;
this. color = color;
}
drive(){
console.log(this.name + ' 이/가 운전을 시작합니다');
}
}
let avante = new Car('Audi','A8','gray');
avante.color;
avante.drive();
: 프로그램을 만들기 위해 필요한 데이터 및 기능을 통합 관리를 위해 객체를 생성하고 객체들의 역할을 구분한 후 객체 간의 상호작용을 통해 설계하는 것을 말함
++ 추가로 javascript는 객체 지향 언어는 아니지만 객체 지향 패턴 작성 가능
캡슐화
- 객체 내부에서 데이터와 매소드를 느슨하게 결합하는 것으로 객체의 기능 및 역할을 주는 방법
- 은닉화의 효과가 있어 데이터 변경에 의한 오류 상황 영향을 줄여주는 효과
- 캡슐화가 이루어진 객체는 재사용이 가능 (재사용성)
추상화
- 사용자의 인터페이스에 주요한 기능만들 노출해 변수상황을 줄이고 주요한 부분에 집중할 수 있도록 한다는 방법 (단순화)
상속성
- 부모 클라스에 정의된 특징(매소드,변수)들을 이어받아 클래스를 생성하고 추적인 특징을 부여해 활용하는 방법 (재사용성)
다형성
[javascript에 해당 사항 없음]
private 키워드
- 캡슐화와 정보보호를 위해 클래스 내부에서만 사용접근이 가능하도록 접근을 제어하는 키워드
- 협업들의 활동에서 변경되는것을 막을 수 있지만 활용성이 낮아짐
inteface 키워드
<이어서 작성할 예정>