OOP(Object Oriented Programming)는 객체 지향 프로그램을 말한다. 우리가 제일 잘 아는 객체 지향 프로그램은 대표적으로 JAVA가 있다. 객체 지향 프로그램은 다음과 같은 4가지 특징을 가진다.
캡슐화 - 데이터나 여러 기능들을 하나로 묶어 두는 것
추상화 - 기능을 단순화 시켜서 보여주는 것
상속성 - 부모의 것을 자식이 물려 받는 것
다형성 - 하나의 기능으로 다양한 형태를 갖는 것
특징들을 가장 단순하게 나타냈다. 이 것만 본다면 이게 이해하지 못하는게 당연하다. 지금 부터 더 세세하게 설명 할 것이다.
먼저 객체 지향 프로그램은 '클래스'와 '인스턴스'를 가진다. 이 두 가지는 가장 간단하게 말하면
조금은 이해가 되었을까 싶다. 붕어빵 틀이 있으면 붕어빵 하나를 매우 간편하게 만들 수 있다. 그리고 붕어빵을 대량 생산도 가능하다. 바로 이런 특징이 우리가 객체 지향 프로그램을 사용하는 이유다. 객체를 만들 때 마다 하나하나 코드를 작성 할 필요 없이 하나의 틀을 만들어 두고 거기에 맞춰서 여러가지 객체를 만드는 것이 가능하다.
class Car {
constructor(name, number, gas){
this.name = name;
this.number = number;
this.gas = gas;
}
driving(){
return `${this.name}이 운행을 시작합니다.`
}
const Car1 = new Car('Benz','1234','20.5');
const Car2 = new Car('BMW','5678','10.5');
const Car3 = new Car('Audi','9012','10');
.
.
.
이 처럼 일일이 Car1의 객체를 하나하나 써 줄 필요 없이 간단하게 Car100까지 만들 수 있다. 여기서 this.name, this.nuber (객체를 생성했을 때 키값이 되는 것들)등은 속성이라 하고 클래스 안에 있는 함수는 메소드가 된다. 이 처럼 클래스 안에 여러 속성들과 메소드가 들어가게 되는데 이를 '캡슐화'라고 한다.
또한,
new Car('Benz','1234','20.5');
driving();
우리는 위 두 줄이 가진 로직은 알지 못하지만 차를 생성하고 운행시킬 수 있다. 이 처럼 로직을 보지 않고 원하는 기능을 할 수 있게 하는 것이 '추상화'이다.
그리고 이런 특징들을 다른 클래스에서 사용 가능하게 하는 것이 '상속성' 이다.
다형성의 개념이 조금 복잡한데 간단하게 말하자면 기능은 하나지만 객체에 따라서 결과가 다양하게 나오는 것이라고 생각하면 된다. 지금은 이정도만 이해하고 넘어가도 향후 공부를 통해 더욱 확실하게 이해할 수 있을 것이다.
javascript는 '프로토타입 기반 언어'이다. 프로토 타입은 클래스를 만들 때 사용하는 원형 객체를 의미한다. 이 프로토타입을 사용하는 이유는 모든 객체들이 속성이나 메소드를 상속 받기 위해서 사용된다.