๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฆฌ๊ณ  ํ•„๋“œ ๋ณธ๋ฌธ

๐Ÿ–Œ๏ธWeb/JavaScript

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฆฌ๊ณ  ํ•„๋“œ

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 4. 15. 15:35
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํด๋ž˜์Šค์™€ ์ธ์Šคํ„ด์Šค ๊ทธ๋ฆฌ๊ณ  ํ•„๋“œ์— ๋Œ€ํ•ด ๋ถ•์–ด๋นต์œผ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค ์•Œ์•„๋ณด์ž.

ํด๋ž˜์Šค(Class)

ํด๋ž˜์Šค๋Š” ๋ถ•์–ด๋นต์„ ๋งŒ๋“œ๋Š” ํ‹€๊ณผ ๊ฐ™๋‹ค.
๋ถ•์–ด๋นต ํ‹€์€ ๋ถ•์–ด๋นต์ด ์–ด๋–ค ๋ชจ์–‘์„ ๊ฐ€์งˆ์ง€,
์–ด๋–ค ์žฌ๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๋“ฑ์„ ์ •์˜ํ•œ๋‹ค.
์ด ํ‹€์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ๋ถ•์–ด๋นต์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • ํ‹€: ๋ถ•์–ด๋นต์˜ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์™€ ํ•„์š”ํ•œ ์žฌ๋ฃŒ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • ์žฌ์‚ฌ์šฉ์„ฑ: ๋™์ผํ•œ ํ‹€์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์บก์Šํ™”: ๋ถ•์–ด๋นต์˜ ๋ชจ์–‘๊ณผ ์žฌ๋ฃŒ๋ฅผ ํ•˜๋‚˜์˜ ํ‹€๋กœ ๋ฌถ์–ด ๋†“๋‹ค.
  • ์ƒ์† ๊ฐ€๋Šฅ: ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

 

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

์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์‹ค์ œ ๋ถ•์–ด๋นต์ด๋‹ค.
๋ถ•์–ด๋นต ํ‹€์— ๋ฐ˜์ฃฝ์„ ๋ถ€์–ด ์‹ค์ œ๋กœ ๊ตฌ์šด ๊ฒฐ๊ณผ๋ฌผ์ด ๋ฐ”๋กœ ์ธ์Šคํ„ด์Šค์ด๋‹ค.
๊ฐ๊ฐ์˜ ๋ถ•์–ด๋นต์€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ,
๋น„๋ก ๊ฐ™์€ ํ‹€๋กœ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ
๊ฐ๊ฐ ๋‹ค๋ฅธ ํŠน์„ฑ(์˜ˆ: ์•™๊ธˆ์˜ ์–‘, ๊ตฌ์šด ์ •๋„)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ๊ตฌ์ฒดํ™”: ๋ถ•์–ด๋นต ํ‹€์—์„œ ์‹ค์ œ๋กœ ๊ตฌ์›Œ์ง„ ๋ถ•์–ด๋นต์ด๋‹ค.
  • ๊ฐœ๋ณ„์„ฑ: ๊ฐ™์€ ํ‹€์—์„œ ๋งŒ๋“ค์–ด์กŒ์–ด๋„ ๊ฐ ๋ถ•์–ด๋นต์€ ๋…๋ฆฝ์ ์ธ ์กด์žฌ์ด๋‹ค.
  • ์ƒํ˜ธ์ž‘์šฉ: ์ธ์Šคํ„ด์Šค๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ ์ธ์Šคํ„ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ

 

ํ•„๋“œ(Field)

ํ•„๋“œ๋Š” ๋ถ•์–ด๋นต์— ์ฑ„์›Œ์ง€๋Š” ์•™๊ธˆ์˜ ์ข…๋ฅ˜๋‚˜ ์–‘๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๋ถ•์–ด๋นต ํด๋ž˜์Šค์—๋Š” ์•™๊ธˆ์˜ ์ข…๋ฅ˜๋‚˜ ์–‘์ด ์–ผ๋งˆ๋‚˜ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”์ง€ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ €์žฅ: ๋ถ•์–ด๋นต์˜ ์•™๊ธˆ ์ข…๋ฅ˜๋‚˜ ์–‘์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • ๊ฐ€๋Šฅ: ๋ถ•์–ด๋นต ํ‹€์—์„œ ํ•„์š”ํ•œ ์•™๊ธˆ์˜ ์–‘์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ ‘๊ทผ ์ œ์–ด: ํ•„๋“œ๋Š” private, public, protected ๋“ฑ์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

[์˜ˆ์‹œ ์ฝ”๋“œ]

class Bungeoppang {
    // ํ•„๋“œ ์ •์˜
    dough = "basic dough"; // ๊ธฐ๋ณธ ๋ฐ˜์ฃฝ

    // ์ƒ์„ฑ์ž
    constructor(filling = "red bean") {
        this.filling = filling; // ์•™๊ธˆ ์ข…๋ฅ˜
    }

    // ๋ฉ”์„œ๋“œ ์ •์˜
    cook() {
        console.log(`A Bungeoppang with ${this.filling} filling and made of ${this.dough} is ready!`);
    }
}

// ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
const classicBungeoppang = new Bungeoppang();
const creamBungeoppang = new Bungeoppang("cream");

// ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
classicBungeoppang.cook(); // ์ถœ๋ ฅ: A Bungeoppang with red bean filling and made of basic dough is ready!
creamBungeoppang.cook(); // ์ถœ๋ ฅ: A Bungeoppang with cream filling and made of basic dough is ready!
๋ฐ˜์‘ํ˜•