Javascript

다시 시작하는 자바스크립트 - 클래스 퀴즈2

min' 2023. 3. 15. 00:54
728x90
반응형

 

헷갈리는 것들만 따로 정리할 예정.

deep dive 책을 함께 공부함.

 

 

 

- 퀴즈 2

 

1. 정직원과 파트타임직원을 나타낼 수 있는 클래스를 만들어 보자
2. 직원들의 정보 : 이름, 부서이름, 한 달 근무 시간
3. 매달 직원들의 정보를 이용해서 한 달 월급을 계산할 수 있다
4. 정직원은 시간당 10000원
5. 파트타임 직원은 시간당 8000원

 

[ 기존에 작성한 코드 ]

class Employee {
  constructor(name, department, workTime, pay) {
    this.name = name;
    this.department = department;
    this.workTime = workTime;
    this.pay = pay;
  }

  culculator = () => {
    return this.pay * this.workTime;
  };
}

class Unofficial extends Employee { }
const unofficial = new Unofficial("김나나", "마케팅부", 249, 8000);
console.log(unofficial);
const salary = unofficial.culculator();
console.log(salary);

class Official extends Employee { }
const official = new Official("유미미", "인사팀", 249, 10000);
console.log(official);
const salary2 = official.culculator();
console.log(salary2);

 

잘 했으나, 외부에서 숫자를 입력받지 않는 것이 좋다고 하여 코드를 수정함.

자식 클래스들에 시급을 고정시켜두기로 하였음.

 

class Employee {
  constructor(name, department, workTime, pay) {
    this.name = name;
    this.department = department;
    this.workTime = workTime;
    this.pay = pay;
  }

  culculator = () => {
    return this.pay * this.workTime;
  };
}

class Unofficial extends Employee {
  static #PAY = 8000; // 인스턴스 레벨에서 접근 불가능 + 접근 제어자 : static으로 작성해야 주급을 고정시킬 수 있음.
  constructor(name, department, workTime) { // 부모 클래스에서 쓸 것들을 가져옴.
    super(name, department, workTime, Unofficial.PAY);
    // 클래스가 상속하고 있는 부모 클래스의 것들. 기존의 pay 자리에 가격을 고정시켜둔 Offical.Pay를 넣어줌.
  }
}

const unofficial = new Unofficial("김나나", "마케팅부", 249);
console.log(unofficial);
const salary = unofficial.culculator();
console.log(salary);

class Official extends Employee {
  static #PAY = 10000;
  // 인스턴스 레벨에서 접근 불가능 + 접근 제어자 : static으로 작성해야 주급을 고정시킬 수 있음.
  constructor(name, department, workTime) { // 부모 클래스에서 쓸 것들을 가져옴.
    super(name, department, workTime, Official.PAY);
    // 클래스가 상속하고 있는 부모 클래스의 것들. 기존의 pay 자리에 가격을 고정시켜둔 Offical.Pay를 넣어줌.
  }
}

const official = new Official("유미미", "인사팀", 249);
console.log(official);
const salary2 = official.culculator();
console.log(salary2);

 

728x90
반응형