티스토리 뷰
OOP Basic concept
- 캡슐화
데이터(속성)의 기능(메소드)을 하나의 객체로 묶는것
데이터(속성)와 기능(메소드)을 함께 묶다보니, 자연스럽게 이과정에서 은닉화가 된다. => 외부에 메소드만을 노출 => 유지보수가 쉽다.
은닉화 : 내부데이터나 구현이 외부로 누출되지않는것을 의미.
- 추상화
실제 노출되는것은 단순하게 만드는개념.
즉 데이터는 절차지향으로 구현하며, 노출되는 메소드는 단순화
인터페이스 :클래스 정의 시, 메소드와 속성만 정의한 것
- 상속
부모클래스의 특징을 자식 클래스가 물려받는것
- 다양화
같은이름을 가진 메소드라도 조금씩 다르게 작동하는것
Class 와 Instance
class : 하나의 모델이 되는 청사진을 의미한다.
instance : 그 청사진을 바탕으로 한 객체
constructor란 instance가 초기화될때 실행하는 생성자 함수다.
constructor 내부에는 속성과 메소드가 존재한다.
class Car{
counstructor(brand,name,color){// 생성자의 인자를 받는 것의 유무는 개발자의 의도에 따라 달라진다.
this.brand = brand
this.name = name
this.color = color
}
}
this. 여기서 this가 의미하는것은?
우선 instance에 대하여 공부해보자.
instance 는 'new' 키워드를 통하여 만들어 낼 수 있다.
let avante = new Car ('hyundai','avante','black')
let mini = new Car ('bmw','mini','red')
위 constructor에 명시된 this => avante, mini 가 된다.
즉 this는 인스턴스의 객체를 의미한다.
속성과 메소드
메소드는 " 객체에 딸린 함수! " 생성자 함수화 함께 constructor안에 묶어서 정의한다.
자동차로 생각해보자면, 위 코드에서 속성을 지정한것과 같이 자동차의 속성은 브랜드, 이름, 색깔, 연료 상태 등등이 될수있다.
그렇다면 메소드는? 속력설정, 운전 등이 메소드가 될 수 있다.
class Car{
counstructor(brand,name,color){
this.brand = brand
this.name = name
this.color = color
} // 속성들
refuel() // 메소드1
drive() // 메소드2
}
'Javascript > [JS&Node] 객체 지향' 카테고리의 다른 글
[javascript]객체지향 프로그래밍과 함수형프로그래밍 (0) | 2022.05.28 |
---|---|
JSON이란?? (0) | 2021.11.21 |
class를 복사하는 extends/super (0) | 2021.11.21 |
Object 생성기계인 constructor (0) | 2021.11.20 |
Prototype 프로토타입 : 상속....상속...상속!! (0) | 2021.11.08 |