JavaScript | pre course 23-Class

ํƒœํ˜„ยท2021๋…„ 3์›” 26์ผ
0
post-thumbnail

๐Ÿ™‹ ๋ชฉํ‘œ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ์ฑ„์šฐ์ž.

1. Class


๐Ÿ™Œ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ด๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€, ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ์ฒด๋“ค๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ๊ฐ์ฒด๋“ค ๊ฐ„ ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉ ํ•˜๋„๋ก ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋Š” ์•„๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์žˆ์–ด์„œ Class, ๊ฐ์ฒด, ๊ฐ์ฒด์ง€ํ–ฅ์€ ํ•ญ์ƒ ์ค‘์š”ํ•œ ์ฃผ์ œ์ด๋‹ค. ์ด๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

'๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์ด๋ผ๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ { num: 1} ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๊ฐ์ฒด๋Š” ์˜์–ด๋กœ Object, ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์‚ฌ๋ฌผ์„ ๋œปํ•œ๋‹ค.

ํ•˜์ง€๋งŒ Class๋Š” ๊ฒฐ๊ตญ { num: 1} ์™€ ๊ฐ™์ด ์ƒ๊ธด ๊ฐ์ฒด๋ฅผ ์ž˜ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ‹€์€ ๋งž๋‹ค. ํ…œํ”Œ๋ฆฟ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ ๊ฐ์ฒด๋Š” ํŠน์ • ๋กœ์ง์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํ–‰๋™(method)๊ณผ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)๋ฅผ ๊ฐ€์ง„๋‹ค.

์›ํ•˜๋Š” ๊ตฌ์กฐ์˜ ๊ฐ์ฒด ํ‹€์„ ์งœ๊ณ , ๋น„์Šทํ•œ ๋ชจ์–‘์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ฐ์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ์ฒด๋ฅผ ๋งค๋ฒˆ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์ง€๋งŒ, ๊ทœ๋ชจ๊ฐ€ ์ปค์ง„๋‹ค๋ฉด Class๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ž˜ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž!

2. ์ƒ์„ฑ์ž(Constructor)


๊ฐ์ฒด์˜ ์„ค๊ณ„๋„์ธ ํด๋ž˜์Šค๋Š” ๋ฌธ๋ฒ•์ด ๋น„์Šทํ•˜๋‹ค.

๋‘˜์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” constructor๋ผ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ด๋‹ค.

const morning = new Car('Morning', 2000000);

์ด๋Ÿฐ์‹์œผ๋กœ class๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์„ '์ธ์Šคํ„ด์Šคํ™”'๋ผ๊ณ  ํ•œ๋‹ค.

class๋Š” ์ƒˆ๋กœ์šด instance๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค constructor() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

class Car {
  constructor(name, price) {
    this.name = name;
    this.price = price;
  }
}
  • ํด๋ž˜์Šค ์ด๋ฆ„์€ CamelCase๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ์œ„ ๋ฉ”์†Œ๋“œ๋Š” name, price๋ผ๋Š” 2๊ฐœ์˜ argument(์ธ์ž)๋ฅผ ๋ฐ›๋Š”๋‹ค.
  • ๋ฉ”์†Œ๋“œ์— this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ class์—์„œ this ๋Š” ํ•ด๋‹น instance๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋ฉ”์†Œ๋“œ์—์„œ ๋„˜์–ด์˜ค๋Š” name, price๋ฅผ ์‚ฌ์šฉํ•ด์„œ name, price ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ–ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค ์•ˆ์—์„œ name, price์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ’์ด์ž class๋‚ด์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์–ด๋Š ๊ณณ์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ '๋ฉค๋ฒ„ ๋ณ€์ˆ˜'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” this ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์ ‘๊ทผํ•œ๋‹ค.

2. ์ธ์Šคํ„ด์Šค(Instance)


์ธ์Šคํ„ด์Šค๋Š” class๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด์ด๋‹ค.

์ธ์Šคํ„ด์Šค๋Š” class์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด์ด๋‹ค.

์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋ชจ๋‘ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.

const morning = new Car('Morning', 200000000);
const spaceship = new Car('์šฐ์ฃผ์„ ', 25000000);
console.log(spaceship);
console.log(spaceship.name); 
console.log(spaceship.price); 
console.log(spaceship.applyDiscount(0.5));

3.๋ฉ”์†Œ๋“œ(Methods)


๋ฉ”์†Œ๋“œ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ฐ์ฒด๊ฐ€ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

class์˜ method๋Š” Object(๊ฐ์ฒด)์˜ ๋ฌธ๋ฒ•๊ณผ๋„ ๊ฐ™๋‹ค.

๋‹ค๋งŒ, ๊ฐ์ฒด๋Š” ํ”„๋กœํผํ‹ฐ๋งˆ๋‹ค ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„ํ•ด์ค˜์•ผ ํ–ˆ์ง€๋งŒ, ํด๋ž˜์Šค๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

class Car {
  constructor(name, price) {
    this.name = name;
    this.price = price;
    this.department = "์„ ๋ฆ‰์ง€์ ";
  }
 
  applyDiscount(discount) {  
    return this.price * discount;   
  }
 
  changeDepartment(departmentName) {
    this.department = departmentName;
  }
}

4. Assignment


class ์ƒ์„ฑ์„ ํ•ด ๋ณด์ž.

  • MyMathย ๋ผ๋Š” class๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ
  • constructorย ์—์„œ๋Š” ์ˆซ์ž 2๊ฐœ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ํ”„๋กœํผํ‹ฐ๋กœ ์ €์žฅ
  • ์ด 4๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ดํ•˜๊ธฐ
    • getNumberย : ๋‘ ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ โ†’ ex)ย [1, 2]
    • addย : ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๋ฉ”์„œ๋“œ
    • substractย : ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋นผ๋Š” ๋ฉ”์„œ๋“œ
    • multiplyย : ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๋Š” ๋ฉ”์„œ๋“œ
class MyMath {
    constructor(num1, num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    getNumber() {
        const arr = [];
        arr.push(this.num1);
        arr.push(this.num2);
        return arr;
    }

    add() {
        return this.num1 + this.num2;
    }

    substract() {
        return this.num1 - this.num2;
    }

    multiply() {
        return this.num1 * this.num2;
    }
}
profile
์•ˆ๋…•ํ•˜์„ธ์š”, ์ง€์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€