본문 바로가기

Language/JavaScript

[JavaScript] 객체지향 프로그래밍 Class

객체지향 프로그래밍이란|

각 객체들을 조합해서 프로그램을 만드는 방법이다.

 

예를 들어 차 클래스라는 틀에 공통적인 특성의 객체들을 묶을 수 있다.

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

참고 자료 : https://jongminfire.dev/객체지향-프로그래밍이란