You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
์์
๐ ์์์ ์์ ํ๊ณ ํฉ์ฑ(Composition)์ ์ด์ฉํ์
์์๊ณผ ํฉ์ฑ ๊ฐ๋ ์ ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๊ฐ์ฅ ์ ๊ฒฝ ์จ์ผ ํ ๊ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ฌ์ฌ์ฉ ํจ์ผ๋ก์จ ๋ณ๊ฒฝ, ํ์ฅ์ ์ฉ์ดํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ ๊ด์ ์์ ์์๊ณผ ํฉ์ฑ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฝ๋ ์ฌ์ฌ์ฉ ๊ธฐ๋ฒ์ด๋ค. ์์(Inheritance) ํฉ์ฑ(Composition) ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฌ์ด์ ์์กด์ฑ์ ์ปดํ์ผ ํ์์ ํด๊ฒฐ ๋ ๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ์ ๋ฐํ์์ ํด๊ฒฐ is-a ๊ด๊ณ has-a ๊ด๊ณ ๋ถ๋ชจํด๋์ค์ ๊ตฌํ์ ์์กด ๊ฒฐํฉ๋๊ฐ ๋์. ๊ตฌํ์ ์์กดํ์ง ์์. ๋ด๋ถ์ ํฌํจ๋๋ ๊ฐ์ฒด์ ๊ตฌํ์ด ์๋ ์ธํฐํ์ด์ค์ ์์กด. ํด๋์ค ์ฌ์ด์ ์ ์ ์ธ ๊ด๊ณ ๊ฐ์ฒด ์ฌ์ด์ ๋์ ์ธ ๊ด๊ณ ๋ถ๋ชจ ํด๋์ค ์์ ๊ตฌํ๋ ์ฝ๋ ์์ฒด๋ฅผ ๋ฌผ๋ ค ๋ฐ์ ์ฌ์ฌ์ฉ ํฌํจ๋๋ ๊ฐ์ฒด์ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฌ์ฉ ..
๐ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ๊ณผ ์ถ์ํ ์๋ฒฝ ์ดํดํ๊ธฐ
๊ฐ์ฒด ์งํฅ(OOP) ๊ฐ๋ ๊ณผ ํน์ง ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ด๋, ๋ง์ ๊ฐ์ฒด(Objcet)๋ค์ด ๋ชจ์ฌ์ ์ํธ ํ๋ ฅํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ๋ฐฉ๋ฒ์ ์ผ์ปซ๋๋ค. ์ข๋ ์ฝ๊ฒ ๋งํ๋ฉด, ํ๋ก๊ทธ๋จ์ ๋ฌถ์ ๋จ์๋ก ์๊ฒ ์ชผ๊ฐ์, ์ถํ์ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ ํธํ๊ฒ ๋ง๋ค์ด ๋์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ด์ฒ๋ผ ๋ ๊ณ ๋ธ๋ญ ์กฐ๋ฆฝํ๋ฏ์ด ์ปดํฌ๋ํธ๋ฅผ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ธฐ ๋๋ฌธ์, ํ์ ์์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ํ์ ์ผ๋ก ๋ง์ด ์๋ ค์ง Java์ธ์ด๋ฅผ ํฌํจํ์ฌ Ruby Python, C++, Objectivc-C, C#, Kotlin ๋ฑ์ด ๋ชจ๋ ๊ฐ์ฒด์งํฅ ์์๋ฅผ ๊ฐ์ง ์ธ์ด์ด๋ค. ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์ ๋ต์ ๊ผญ ๋ฐ๋์ ๊ฐ์ฒด ์งํฅ ์ธ์ด(Java, kotlin ๋ฑ)์์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ..
โ ์ถ์ ํด๋์ค(Abstract) ์ฉ๋ ์๋ฒฝ ์ดํดํ๊ธฐ
์ถ์ ํด๋์ค ์ ์ถ์ํ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ ๊น์ง ์ฌ์ฉํด์๋ ์ผ๋ฐ์ ์ธ ํด๋์ค๋ ๊ตฌ์ฒด์ (concrete)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ธ์คํด์คํ ํ์ฌ ์ง์ ๋ค๋ฃจ๋ ํด๋์ค์ด๋ค. ๊ทธ ๋ฐ๋๋ก ์ถ์ ํด๋์ค๋ ๊ตฌ์ฒด์ ์ด์ง ์์ ์ถ์์ ์ธ(abstract) ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ํด๋์ค์ด๋ค. ๊ทธ๋์ ์ถ์ ํด๋์ค๋ ์ผ๋ฐ ํด๋์ค์ ๋ฌ๋ฆฌ ์ธ์คํด์ค ํ๊ฐ ๋ถ๊ฐ๋ฅํ ํด๋์ค์ด๋ฉฐ, ์ถ์ ํด๋์ค๋ฅผ ์ ์ธ ํ ๋๋ abstract ํค์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ์ฐจ์ด์ ์ด ์๋ค๊ณ ๋งํ๊ณค ํ๋ค. ํ์ง๋ง ์ฐฉ๊ฐํ์ง ๋ง์์ผ ํ ๊ฒ์ด, ์ถ์ํด๋์ค์ ๋ฌธ๋ฒ์ ์ธ ํน์ง์ด๋ ๊ฐ์ฒด ์์ฑ์ด ๋๊ณ ์๋๊ณ ์ด๋ฐ ํน์ง๋ค์ ์ค์ํ๊ฒ ์๋๋ค. ์ถ์ ํด๋์ค๊ฐ ๋ฌด์์ด๊ณ ์ ์ฌ์ฉํ๋์ง ๋ณธ์ง์ ์ธ ๊ฐ๋ ๋ถํฐ ์์์ผ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ถ์ ํด๋์ค ์ฉ๋๋ฅผ ์ดํดํ ์ ์๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ ๋..