๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+60] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ7 (์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…, ์ œ๋„ค๋ฆญ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 12. 15.

 

 

๊ตญ๋น„์ง€์› D+60

-  ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ7 -

 


 

์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…

• ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Generic Programming)์ด๋ž€?

- ์ž๋ฃŒํ˜•์ด๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ์žฌํ™œ์šฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค.

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

 

- ๋น„๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์„ฑํ–ฅ์„ ๊ฐ€์ง€๋ฉฐ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ด๋‚˜ ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋ฒ—์–ด๋‚˜ "๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„" ํ•˜๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

- ์ผ๋ฐ˜ํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. (Object๊ฐ€ ๋ฌด์—‡์ด๋ƒ์— ๋”ฐ๋ผ์„œ Class๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ฒ ๋‹ค)

- ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์‹œ์ ์— ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

• ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ „

๋งŒ์•ฝ ๋‚ด๊ฐ€ ๋ฐ•์Šค ๊ฐ์ฒด ์•ˆ์— ๊ณผ์ผ์„ ๋„ฃ์–ด์„œ ์ถœ๋ ฅํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฐ•์Šค๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค์Œ์— ๊ทธ์•ˆ obj์— ์˜ค๋ Œ์ง€๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋‹ด์•„์„œ ๋ฐ•์Šค์•ˆ ์„ ํ™•์ธํ•ด๋ณด๋ฉด orange๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋‚ด๊ฐ€ ๋งŒ์•ฝ์— ์‹ค์ˆ˜๋กœ ๋ฐ•์Šค๊ฐ์ฒด์™€ ์‚ฌ๊ณผ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฐ•์Šค์•ˆ์— ์žˆ๋Š” obj๋ฅผ Apple์„ ๋ถˆ๋Ÿฌ์˜ค๋ ค๊ณ  ํ•œ๋‹ค๋ฉด obj๋ฅผ ๊บผ๋‚ด์˜ค๊ธฐ ์œ„ํ•ด Objectํ˜•์„ ์บ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ํ˜•๋ณ€ํ™˜์„ ํ•ด์ค„ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์‚ฌ์‹ค์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ด์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ปดํŒŒ์ผ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋˜์ง€ ์•Š์•„์„œ ์ž ์žฌ์  ์˜ค๋ฅ˜๊ฐ€ ๋‚ดํฌ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ „ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ 

- ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ณ ์ •์œผ๋กœ ์ธํ•ด ๊ฐ•์ œํ˜•๋ณ€ํ™˜์ด๋‚˜ ์ƒ์†๊ตฌ์กฐ๋กœ ์ธํ•œ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค.

- ์ž๋ฃŒํ˜•์„ ์ •์˜ํ•œ ๋’ค ๋กœ์ง์„ ์„ธ์šฐ๋Š”์›๋ฆฌ๋กœ ๋…๋ฆฝ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ๋‚ฎ๋‹ค.

 

• ์ œ๋„ค๋ฆญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ œ๋„ค๋ฆญ์€ ๊ธฐ์กด์— ํ˜•๋ณ€ํ™˜์„ ํ•ด์ฃผ์—ˆ๋˜๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ <>๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ํƒ€์ž…์ด ๋“ค์–ด๊ฐˆ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟํƒ€์ž…์„ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‚ด๊ฐ€ ๋”ฐ๋กœ Apple๋ฐ•์Šค์™€ Orange๋ฐ•์Šค๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ค„ ํ•„์š”์—†์ด Box ํ•˜๋‚˜๋งŒ์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ, ๋ฐ์ดํ„ฐํƒ€์ž…์„ ์„ ์–ธํ•œ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์— ๋Œ€ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋Ÿฐํƒ€์ž„์— ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด ๋งŒ๋“ค์–ด ์ค€๋‹ค.

 

ํƒ€์ž…์˜ ๋ช…๋ช…๊ทœ์น™์˜ ๊ด€๋ก€ (Recommand)

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

E : Element
K : Key
N : Number
T : Type
V : Value

 

์ œ๋„ค๋ฆญ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

• ๋‹ค์ค‘ ์ธ์ž (๋‹ค์ค‘ ํ…œํ”Œ๋ฆฟ)

- ํ…œํ”Œ๋ฆฟ์š”์†Œ๋Š” ํ•˜๋‚˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

- ๋‹จ, ๋‹ค์ค‘ ํ…œํ”Œ๋ฆฟ์„ ๊ณผ๋‹ค ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ๋ฆฌํ„ฐ๋นŒ๋ฆฌํ‹ฐ๊ฐ€ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์œ ์ง€๋ณด์ˆ˜์™€๋„ ์—ฐ๊ด€์ด ์žˆ์–ด ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์ด์ ์ด ์žˆ์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

• ํƒ€์ž… ์ธ์ž์˜ ์ƒ๋žต

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•  ๋•Œ์— ์›๋ž˜๋Š” r-value, l-value ๋ชจ๋‘ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค˜์•ผํ•˜์ง€๋งŒ ์‹ ํ˜•์—์„œ๋Š” l-value์—๋งŒ ์ž‘์„ฑํ•ด๋„ ์ด๋ฅผ ์ฐธ์กฐํ•ด r-value๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ƒ๋žตํ•ด์„œ ์Šˆ๊ฐ€์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋„ ์ž˜ ์ž‘๋™๋œ๋‹ค. (ํƒ€์ž…-์ถ”๋ก  ๊ธฐ๋ฒ•)

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€