๊ตญ๋น์ง์ 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๋ฅผ ํด์ํ ์ ์๊ธฐ์ ์๋ตํด์ ์๊ฐ์ฝ๋๋ก ์์ฑํด๋ ์ ์๋๋๋ค. (ํ์ -์ถ๋ก ๊ธฐ๋ฒ)
๋๊ธ