객체지향 프로그래밍(Object Orienred Programming)은 하나의 모델을 만들고, 그 모델을 바탕으로 객체를 만드는 프로그래밍 패턴이다.
JS에서는 이미 객체라는 개념이 존재, 따라서 용어 구분이 필요함
(JS에서 쓰이는 데이터타입 객체와 객체 지향프로그래밍의 객체는 다른 것!)
객체지향이 무조건 좋은건 아님
하나의 프로그래밍 방법론일 뿐!
만약, 메모리 관리가 중요하다면?-> 메모리 적게 쓰는 절차지향
사람들과의 협업이 필요하다면?-> 코드 이해가 쉬운 객체지향
- 클래스 : 모델, 인스턴트 객체를 만드는 주물틀같은 역할
- 인스턴트 : 모델을 바탕으로 만든 객체(instance object)
- 캡슐화 : 코드의 데이터 은닉
- 추상화 : 단순한 이름으로 정의, 클래스 사용시 필요치 않은 메서드 노출x
- 상속 : 부모 클래스 특징을 자식 클래스가 물려받음
- 다형성 : 동일한 메서드도 객체에 따라 다르게 작동 (if문 그만...)
- 캡슐화 : 이해안감..
- 다형성 예시 : 자식클래스에서 오버라이드 가능
function Car(brand,name,color){
// 인스턴스가 만들어질때 실행되는 코드
this.brand=brand; // brand 속성을 정의
this.name=name; //name 속성을 정의
this.color=color; // color 속성을 정의
} Car.prototype.drive = function(){ // class의 drive 메소드 정의
// drive 메소드를 구현하는 코드
console.log(this.name+' 가 운전을 시작합니다.')
}
let avante= new Car('hyundai','avante','black')
class Car{
constructor(rand,name,color){
// 인스턴스가 만들어질 때 실행되는 코드
this.brand=brand; // brand 속성을 정의
this.name=name; // name 속성을 정의
this.color=color; // color 속성을 정의
} drive(){ // class의 drive 메소드 정의
// drive 메소드를 구현하는 코드
console.log(this.name+' 가 운전을 시작합니다.')
}
}
let avante= new Car('hyundai','avante','black')