Jieunny์˜ ๋ธ”๋กœ๊ทธ

S2) Unit 2. [JS] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ณธ๋ฌธ

CodeStates/learning contents

S2) Unit 2. [JS] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Jieunny 2023. 1. 13. 13:37

๐Ÿ“ฃ  ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ ˆ์ฐจ์  ์–ธ์–ด ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด
์ดˆ๊ธฐ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 
C, ํฌํŠธ๋ž€ ๋“ฑ
ํ˜„๋Œ€์˜ ์–ธ์–ด๋“ค
Java, C++, C# ๋“ฑ
- ์ˆœ์ฐจ์ ์ธ ๋ช…๋ น์˜ ์กฐํ•ฉ
(๊ธฐ๊ปํ•ด์•ผ ํ•จ์ˆ˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ „๋ถ€)
- ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ 
   ์ฒญ์‚ฌ์ง„์„ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ ์ž‘์„ฑ
- ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ํ•œ๋ฒˆ์— ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

โœ”๏ธ JS ๋Š” ์—„๋ฐ€ํžˆ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ฐ์ฒด ์ง€ํ–ฅ ํŒจํ„ด์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“ฃ  OOP : ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ ์ฒ ํ•™

1๏ธโƒฃ Encapsulation (์บก์Šํ™”) 

โžฐ ๋ฐ์ดํ„ฐ(์†์„ฑ)์™€ ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ)์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๊ฒƒ (ํ•˜๋‚˜์˜ ๊ฐ์ฒด ์•ˆ์— ๋„ฃ์–ด์„œ ๋ฌถ๋Š” ๊ฒƒ)

โžฐ ์€๋‹‰ : ๊ตฌํ˜„์€ ์ˆจ๊ธฐ๊ณ , ๋™์ž‘์€ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ

โžฐ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ : ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ๋“ค์ด ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š” ๊ฒƒ

     ์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ ˆ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ฝ”๋“œ๊ฐ€ ์ƒ์ง•ํ•˜๋Š” ์‹ค์ œ ๋ชจ์Šต๊ณผ ๋‹ฎ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

๐Ÿ‘ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค.

๐Ÿšจ ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์€๋‹‰ํ•˜๋Š” ๋ฐ ์ค‘์ 

 

2๏ธโƒฃ Abstraction (์ถ”์ƒํ™”)

โžฐ ๋‚ด๋ถ€ ๊ตฌํ˜„์€ ๋ณต์žกํ•œ๋ฐ, ์‹ค์ œ ๋…ธ์ถœ๋˜๋Š” ๋ถ€๋ถ„์€ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ (์ธํ„ฐํŽ˜์ด์Šค ๋‹จ์ˆœํ™”)

โžฐ ์ธํ„ฐํŽ˜์ด์Šค : ํด๋ž˜์Šค ์ •์˜ ์‹œ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ๋งŒ ์ •์˜ํ•œ ๊ฒƒ

๐Ÿ‘ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค๊ณ , ๋‹จ์ˆœํ™”๋œ ์‚ฌ์šฉ์œผ๋กœ ๋ณ€ํ™”์— ๋Œ€ํ•œ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.

๐Ÿšจ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ˆจ๊ธฐ๊ณ , ๋‹จ์ˆœํ•œ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์— ์ค‘์ 

 

3๏ธโƒฃ Inheritance (์ƒ์†)

โžฐ ๋ถ€๋ชจ(๊ธฐ๋ณธ) ํด๋ž˜์Šค์˜ ํŠน์ง•์„ ์ž์‹(ํŒŒ์ƒ) ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ

โžฐ ex) ํ•™์ƒ ํด๋ž˜์Šค๋Š” ์‚ฌ๋žŒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋‹ค, ํ•™์Šต ๋‚ด์šฉ ๋“ฑ๊ณผ ๊ฐ™์€ ์†์„ฑ/ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค.

 

4๏ธโƒฃ Polymorphism (๋‹คํ˜•์„ฑ)

โžฐ ๋˜‘๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ผ ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘ ์กฐ๊ฑด๋ฌธ ๋Œ€์‹  ๊ฐ์ฒด์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ๋‹ฌ๋ฆฌ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

 

๐Ÿ“ฃ  ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์™€ JS ์˜ ์ฐจ์ด์ 

๐Ÿšจ Java, TS ์ฒ˜๋Ÿผ JS ์™€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ

 

1๏ธโƒฃ ์€๋‹‰ํ™”(private)์˜ ํ•œ๊ณ„

โžฐ Java๋‚˜ TS์—๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์“ฐ์ด๋Š” ์†์„ฑ, ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด private ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

2๏ธโƒฃ ์ถ”์ƒํ™”(interface) ๊ธฐ๋Šฅ์˜ ๋ถ€์žฌ

โžฐJava๋‚˜ TS๋Š” ์–ธ์–ด์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ interface๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“์•˜๋‹ค.

// TypeScript ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.

interface ClockInterface {
  currentTime: Date;
  setTime(d: Date): void;
}

class Clock implements ClockInterface {
  currentTime: Date = new Date();
  setTime(d: Date) {
    this.currentTime = d;
  }
  constructor(h: number, m: number) {}
}

โžฐ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์ž…์žฅ์—์„œ ๋…ธ์ถœ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด '์ด ํด๋ž˜์Šค๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ์˜๋„ํ•œ ๋ฐ”๋Œ€๋กœ ์ž‘๋™ํ•  ๊ฒƒ์ด๋‹ค' ๋ผ๋Š” ๊ฒƒ์„ ๋“œ๋Ÿฌ๋‚ธ๋‹ค.