DevLog

TIL(20210717) - ํด๋ž˜์Šค์™€ ์˜ค๋ธŒ์ ํŠธ์˜ ์ฐจ์ด์ , ํด๋ž˜์Šค ์ •๋ฆฌ ๋ณธ๋ฌธ

๐Ÿค” TIL(Today I Learned)

TIL(20210717) - ํด๋ž˜์Šค์™€ ์˜ค๋ธŒ์ ํŠธ์˜ ์ฐจ์ด์ , ํด๋ž˜์Šค ์ •๋ฆฌ

Seungjae Lee 2021. 7. 17. 21:30

๐ŸŽ  Daily

- JavaScript ํด๋ž˜์Šค(class) ํ•™์Šต

- ํด๋ž˜์Šค(Class)์™€ ์˜ค๋ธŒ์ ํŠธ(Object)์˜ ์ฐจ์ด์  ํ•™์Šต

 

๐Ÿค”  Learned

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

์„œ๋กœ ๊ด€๋ จ ์žˆ๋Š” ๋ฐ์ดํ„ฐ(fields, method)๋ฅผ ํ•œ ๊ณณ์— ๋ฌถ์–ด ๋†“์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งํ•œ๋‹ค.

class Person{
  // fields(์†์„ฑ)
  name; 
  age;
  // method(ํ–‰๋™)
  speak();
}

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด Person์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํด๋ž˜์Šค(Class)๋Š”
name๊ณผ age๋ผ๋Š” property๊ฐ€ ๋“ค์–ด์žˆ๊ณ 
๋ง์„ ํ•˜๋Š” ๊ธฐ๋Šฅ speack()๋ผ๋Š” ์ด๋ฆ„์˜ function์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค(Class) ์•ˆ์—๋Š” name๊ณผ age ๊ฐ™์€ ์†์„ฑ, ์ฆ‰ Fields๊ฐ€ ๋“ค์–ด์žˆ๊ณ 
๊ทธ๋ฆฌ๊ณ  ํ–‰๋™์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” method๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํด๋ž˜์Šค(Class)๋Š” ์กฐ๊ธˆ ๋” ์—ฐ๊ด€์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฌถ์–ด๋†“์€,
Fields์™€ method๊ฐ€ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ฌถ์—ฌ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
๊ฐ„ํ˜น ํด๋ž˜์Šค(Class) ์•ˆ์—๋Š” method๋Š” ๋“ค์–ด์žˆ์ง€ ์•Š๊ณ  data๋งŒ, ์ฆ‰ Fields๋งŒ ๋“ค์–ด์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ๋กœ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ๋งŽ์ด ์“ฐ๊ณ , ์ด๋ฅผ data Class ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

ํด๋ž˜์Šค(Class) ์•ˆ์—์„œ๋„ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณด์ด๋Š” ๋ณ€์ˆ˜์™€, ๋ฐ–์—์„œ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ
์ด๋Ÿฐ ๊ฒƒ๋“ค์„ encapsulation(์บก์Аํ™”)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค(Class)๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†(Inheritance)๊ณผ, ๋‹คํ˜•์„ฑ(Polymorphism)์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ
์ด๋Ÿฐ ๋ชจ๋“  ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์‚ด์•„๊ฐ€๊ณ  ์žˆ๋Š” ์„ธ์ƒ์—๋Š” ์ˆ˜๋งŽ์€ ๋ฌผ์ฒด์™€ ์‚ฌ๋ฌผ์ด ์กด์žฌํ•˜๋Š”๋ฐ
์ด๋ ‡๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋„ ์‚ฌ๋ฌผ๊ณผ ๋ฌผ์ฒด๋“ค์„ class๋กœ, object๋กœ ์ •์˜ํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ์ด
์กฐ๊ธˆ ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋“ค์ด ์กฐ๊ธˆ ๋” ํŽธํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ž€?
ํ’€์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋‚˜ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ฐ์ฒด๋กœ ์ž˜ ์ •์˜ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋Š” ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ‹€์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
์ฒญ์‚ฌ์ง„์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๊ณ  template(ํ…œํ”Œ๋ฆฟ) ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ž์ฒด์—๋Š” data๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š๊ณ  template๋งŒ ์ •์˜ํ•ด ๋†“์Šต๋‹ˆ๋‹ค.
์ด ํด๋ž˜์Šค์—๋Š” ์ด๋Ÿฐ data๋งŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์–ด ๋ผ๊ณ  ์ •์˜๋งŒ ํ•ด๋†“๊ณ  ํ•œ ๋ฒˆ๋งŒ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

์ด ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์‹ค์ œ๋กœ data๋ฅผ ๋„ฃ์–ด์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด Object์ž…๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์ƒˆ๋กœ์šด instance๋ฅผ ์ƒ์„ฑํ•˜๋ฉด Object๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
Object๋Š” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๊ต‰์žฅํžˆ ๋งŽ์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ํด๋ž˜์Šค๋Š” ์ •์˜๋งŒ ํ•ด๋†“์€ ๊ฒƒ์ด๋ผ์„œ
์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์ง€๋งŒ ์‹ค์ œ๋กœ data๋ฅผ ๋„ฃ์œผ๋ฉด Object๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ถ•์–ด๋นต์ด๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํŒฅ์„ ๋„ฃ์œผ๋ฉด ํŒฅ ๋ถ•์–ด๋นต์ด ๋˜๊ณ ,
์Šˆํฌ๋ฆผ์„ ๋„ฃ์œผ๋ฉด ์Šˆํฌ๋ฆผ ๋ถ•์–ด๋นต์ด ๋ฉ๋‹ˆ๋‹ค

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๋ถ•์–ด๋นต ์ž์ฒด๋Š” Object์ด๊ณ .

๋ถ•์–ด๋นต์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ •์˜ํ•œ ๋ถ•์–ด๋นต ํ‹€์€ Class์ž…๋‹ˆ๋‹ค.

 

๐ŸŒˆ  Tomorrow

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๊ฐ•์˜ ์™„๊ฐ•

- ์˜ค๋Š˜ ๊ณ„ํš ์žก์•„๋†“์€ ๊ฒƒ ์ˆ˜ํ–‰

 

'๐Ÿค” TIL(Today I Learned)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TIL(20210720) - ์žฌ๊ท€(recursion)  (0) 2021.07.21
TIL(20210718) - sort() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ๋ฒ•  (0) 2021.07.18
TIL(20210716) - JSON & XML  (0) 2021.07.16
TIL(20210715) - HA1 ๋  (0) 2021.07.15
TIL(20210708) - JSX๊ทœ์น™  (0) 2021.07.08
Comments