javascript의 객체(object)와 OOP의 객체(Instane)는 다르다.
청사진 = 설계도(대체로 동일하게 적용): 자동차가 기능하기 위해 필요한 네 바퀴, 핸들, 좌석, 엔진
클래스는 차를 만드는 자동차 공장 & 설계도에 가깝다.
대문자로 시작하며 일반명사로 만든다.
객체 = 특정한 자동차 모델
인스턴스는 생성된 차 자체에 가까움.
new 키워드를 써서 instance를 만듦: 일반 함수 정의와 조금 다름
constructor: 인스턴스가 초기화될 때 실행하는 생성자 함수. 즉, 자바스크립트 함수는 재사용 가능한 코드를 묶음으로 사용하는 것 외에 객체를 생성하기 위한 방법으로도 사용되는데, 이렇게 객체를 생성하는 역할을 하는 함수를 생성자 함수라고 함. 생성자 함수는 new 키워드를 사용하여 함수를 호출가는데 return문 없어도 새로운 객체를 반환시킴. 반드시 new 키워드를 사용해야 생성자 함수가 작동하고, 사용하지 않으면 일반함수와 동일하게 동작하면서 새로운 객체를 반환하지 않는다. 객체지향프로그래밍에서 보편적인 개념임.
function Car(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
Car.prototype.refuel = function() {
// 연료 공급을 구현하는 코드
}
Car.prototype.drive = function() {
// 운전을 구현하는 코드
}
class Car {
constructor(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
}
4가지. 추상화, 캡슐화, 상속, 다형성
정보은닉, 인터페이스
개발자 A가 작동했던 코드가 개발자 B에 의해서 영향을 받지 않아야함.
인터페이스 -> 이것만 사용해서 클래스를 통제해라.
자동차
자동차 소프트웨어 개발에 필요한 요소만 골라서 추상화한다.
물류 소프트웨어 -> 엔진 시동 걸기