객체지향 프로그래밍이란|
각 객체들을 조합해서 프로그램을 만드는 방법이다.
예를 들어 차 클래스라는 틀에 공통적인 특성의 객체들을 묶을 수 있다.
Class = 차(car)
Object = Benz, Audi, Tesla
객체지향 프로그래밍의 장점
1. 프로그램 설계가 유연하다.
2. 추가 및 수정이 쉬워 유지 보수가 편하다.
3. 큰 규모의 객체나 비슷한 모양의 객체를 계속 찍어내야 할 때 용이하다.
객체지향 프로그래밍의 단점
1. 설계부터 해야하니 개발속도가 느리다.
2. 객체수가 많아지면 실행속도가 느리다.
3. 메모리양이 증가함에 따라 비용이 커진다.
Javascript 사용으로 Class에 객체지향을 반영한 코드
class MyMath {
constructor(a, b) {
this.number1 = a;
this.number2 = b;
}
getNumber() {
return [this.number1, this.number2];
}
add() {
return this.number1 + this.number2;
}
substract() {
return this.number1 - this.number2;
}
multiply() {
return this.number1 * this.number2;
}
}
const number = new MyMath(1, 2000);
console.log(number); //MyMath { number1: 1, number2: 2000}
console.log(number.getNumber()); //[1, 2000]
console.log(number.add()); //2001
console.log(number.substract()); //-1999
console.log(number.multiply()); //2000
- Class를 생성한다.
- 2개의 숫자를 property로 저장한다.
- 4개의 메서드를 구현한다. (숫자를 배열로 반환, 더하기, 빼기, 곱하기)
인스턴스(Instance)는 class에 생성된 객체이다. (ex. Car)
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
this.department = "선릉지점";
this.salesAmount = 0;
}
applyDiscount(discount) {
return this.price * discount;
}
addSales() {
this.salesAmount++;
}
}
const decar = new Car('Decar', 3000);
console.log(decar); //Car {name: 'Decar', price: 3000, department: 선릉지점, salesAmount: 0}
console.log(decar.name); //Decar
console.log(decar.price); //3000
console.log(decar.applyDiscount(0.5)); //1500
class 선언하여 object 생성
class person {
constructor(name,age) {
this.name = name;
this.age = age;
}
speak() {
console.log(`${this.name}: hello!`);
}
}
const jay = new person('jay', 20)
console.log(jay.name) //jay
console.log(jay.age) //20
jay.speak() //jay: hello!
getter와 setters
class user {
constructor(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
get age() {
return this._age;
}
set age(value) {
this._age = value < 0 ? 0 : value;
}
}
const user1 = new user('Y', 'jay', -1);
console.log(user1.age);
age라는 getter를 정의하는 순간 바로 getter를 호출하고 setter를 정의하는 순간 setter를 호출하기 때문에 getter와 setter 안에 쓰이는 변수를 _age로 정의한다.
참고 자료 : https://www.youtube.com/watch?v=_DLhUBWsRtw&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=6
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] 문자열을 배열로 변환, 문자열 자르기 (1) | 2023.07.16 |
---|---|
[JavaScript] 배열의 반복문|map, forEach (w.Arrow function) (0) | 2023.07.15 |
[JavaScript] 만 나이 계산하기 (0) | 2023.07.13 |
[JavaScript] String과 Number의 조합과 변환 (0) | 2023.07.12 |
[JavaScript] 매개변수(parameter)와 인자(argument) (0) | 2023.07.11 |