You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
OOP
๐ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น - S.O.L.I.D
๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5์์น S.O.L.I.D ๋ชจ๋ ์ฝ๋์์ LSP๋ฅผ ์งํค๊ธฐ์๋ ์ด๋ ค์. ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ๋ฐ๋ฅด๋ฉด ์์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋์ ํ๋๋ผ๋ ์๋์ ๋ง๊ฒ ์๋๋์ด์ผ ๋๋ค๊ณ ํ์ต๋๋ค. SOLID ์์น์ด๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ์์ ์ง์ผ์ค์ผ ํ 5๊ฐ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ์์น( SRP, OCP, LSP, ISP, DIP )์ ๋งํ๋ค. SRP(Single Responsibility Principle): ๋จ์ผ ์ฑ ์ ์์น OCP(Open Closed Priciple): ๊ฐ๋ฐฉ ํ์ ์์น LSP(Listov Substitution Priciple): ๋ฆฌ์ค์ฝํ ์นํ ์์น ISP(Interface Segregation Principle): ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น DIP(Dependency Inver..
๐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ DIP (์์กด ์ญ์ ์์น)
์์กด ์ญ์ ์์น - DIP (Dependency Inversion Principle) DIP ์์น์ด๋ ๊ฐ์ฒด์์ ์ด๋ค Class๋ฅผ ์ฐธ์กฐํด์ ์ฌ์ฉํด์ผํ๋ ์ํฉ์ด ์๊ธด๋ค๋ฉด, ๊ทธ Class๋ฅผ ์ง์ ์ฐธ์กฐํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๋์์ ์์ ์์(์ถ์ ํด๋์ค or ์ธํฐํ์ด์ค)๋ก ์ฐธ์กฐํ๋ผ๋ ์์น์ด๋ค. ๊ฐ์ฒด๋ค์ด ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ์์กด ๊ด๊ณ๊ฐ ํ์ฑ๋๋๋ฐ, ์ด ๋ ๊ฐ์ฒด๋ค์ ๋๋ฆ๋๋ก์ ์์น์ ๊ฐ๊ณ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ ์ฝ์์ด ์๋ค. ์ฌ๊ธฐ์ ๋๋ฆ๋๋ก์ ์์น์ด๋ ์ถ์์ฑ์ด ๋ฎ์ ํด๋์ค๋ณด๋ค ์ถ์์ฑ์ด ๋์ ํด๋์ค์ ํต์ ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋๋ฐ ์ด๊ฒ์ด DIP ์์น์ด๋ค. ํด๋์ค ๊ฐ ์์กด ๊ด๊ณ๋, ํ ํด๋์ค๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋ ค๊ณ ํ ๋, ๋ค๋ฅธ ํด๋์ค์ ์๋น์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๋ํ์ ์ผ๋ก A ํด๋์ค์ ๋ฉ์๋์์ ๋งค๊ฐ..
๐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ ISP (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น - ISP (Interface Segregation Principle) ISP ์์น์ด๋ ๋ฒ์ฉ์ ์ธ ์ธํฐํ์ด์ค ๋ณด๋ค๋ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์)๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ Interface๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ์๋ฏธ๋ก, ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ์ ๋ง๊ฒ ๋ ๊ฐ๊ธฐ ๋ถ๋ฆฌํด์ผํ๋ค๋ ์ค๊ณ ์์น์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋ง์ฝ ์ธํฐํ์ด์ค์ ์ถ์ ๋ฉ์๋๋ค์ ๋ฒ์ฉ์ ์ผ๋ก ์ด๊ฒ์ ๊ฒ ๊ตฌํํ๋ค๋ฉด, ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ํด๋์ค๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ง์ ์ต์ง๋ก ๊ตฌํ ํด์ผ ํ๋ ์ํฉ์ด ์ฌ ์๋ ์๋ค. ๋ํ ์ฌ์ฉํ์ง๋ ์๋ ์ธํฐํ์ด์ค์ ์ถ์ ๋ฉ์๋๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด ํด๋์ค์์๋ ์์ ์ด ํ์ํ๊ฒ ๋๋ค. ์ฆ, ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ด๋ ์ธํฐํ์ด์ค๋ฅผ ์๊ฒ ๋ถ๋ฆฌํจ์ผ๋ก์จ, ํด๋ผ์ด์ธํธ์ ๋ชฉ์ ๊ณผ ์ฉ๋์ ์ ํฉํ ์ธํฐํ์ด์ค ๋ง์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์..
๐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ LSP (๋ฆฌ์ค์ฝํ ์นํ ์์น)
๋ฆฌ์ค์ฝํ ์นํ ์์น - LSP (Liskov Substitution Principle) ๋ฆฌ์ค์ฝํ ์นํ ์์น์ 1988๋ ๋ฐ๋ฐ๋ผ ๋ฆฌ์ค์ฝํ(Barbara Liskov)๊ฐ ์ฌ๋ฐ๋ฅธ ์์ ๊ด๊ณ์ ํน์ง์ ์ ์ํ๊ธฐ ์ํด ๋ฐํํ ๊ฒ์ผ๋ก, ์๋ธ ํ์ ์ ์ธ์ ๋ ๊ธฐ๋ฐ ํ์ ์ผ๋ก ๊ต์ฒดํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ๋ปํ๋ค. ๊ต์ฒดํ ์ ์๋ค๋ ๋ง์, ์์ ํด๋์ค๋ ์ต์ํ ์์ ์ ๋ถ๋ชจ ํด๋์ค์์ ๊ฐ๋ฅํ ํ์๋ ์ํ์ด ๋ณด์ฅ๋์ด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์ฆ, ๋ถ๋ชจ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ์์น์ ์์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋์ ์ฌ์ฉํ์ ๋ ์ฝ๋๊ฐ ์๋ ์๋๋๋ก ์๋ํด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์ด๊ฒ์ ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฌ์ด์ ํ์๊ฐ ์ผ๊ด์ฑ์ด ์๋ค๊ณ ๋งํ๋ค. ๋ฌด์จ ์ฌ์คํ ๋ ผ๋ฌธ ๊ฐ์ด ์ค๋ช ํ์๋๋ฐ, ๊ทธ๋ฅ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์ ..
๐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ OCP (๊ฐ๋ฐฉ ํ์ ์์น)
๊ฐ๋ฐฉ ํ์ ์์น - OCP (Open Closed Principle) ๊ฐ๋ฐฉ ํ์์ ์์น(OCP)์ด๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์, ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๊ฐ ๋์ด์ผ ํ๋ค๋ ์์น์ ๋งํ๋ค. ๋ณดํต OCP๋ฅผ ํ์ฅ์ ๋ํด์๋ ๊ฐ๋ฐฉ์ (open)์ด๊ณ , ์์ ์ ๋ํด์๋ ํ์์ (closed)์ด์ด์ผ ํ๋ค๋ ์๋ฏธ๋ก ์ ์ํ๋ค. ์ฌ๊ธฐ์ ํ์ฅ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ํด์ํ์๋ฉด, ๊ธฐ๋ฅ ์ถ๊ฐ ์์ฒญ์ด ์ค๋ฉด ํด๋์ค๋ฅผ ํ์ฅ์ ํตํด ์์ฝ๊ฒ ๊ตฌํํ๋ฉด์, ํ์ฅ์ ๋ฐ๋ฅธ ํด๋์ค ์์ ์ ์ต์ํ ํ๋๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํด์ผ ํ๋ ์ค๊ณ ๊ธฐ๋ฒ์ ๋งํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. [ ํ์ฅ์ ์ด๋ ค์๋ค ] - ๋ชจ๋์ ํ์ฅ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ค. - ์๋ก์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ์ ๋ ์ ์ฐํ๊ฒ ์ฝ๋๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํฐ ํ..
๐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ SRP (๋จ์ผ ์ฑ ์ ์์น)
๋จ์ผ ์ฑ ์ ์์น - SRP (Single Responsibility Principle) ๋จ์ผ ์ฑ ์ ์์น(SRP)๋ ๊ฐ์ฒด๋ ๋จ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค๋ ์์น์ ๋งํ๋ค. ์ฌ๊ธฐ์ '์ฑ ์' ์ด๋ผ๋ ์๋ฏธ๋ ํ๋์ '๊ธฐ๋ฅ ๋ด๋น'์ผ๋ก ๋ณด๋ฉด ๋๋ค. ์ฆ, ํ๋์ ํด๋์ค๋ ํ๋์ ๊ธฐ๋ฅ ๋ด๋นํ์ฌ ํ๋์ ์ฑ ์์ ์ํํ๋๋ฐ ์ง์ค๋์ด์ผ ์์ด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์ค์ํ์ ๋ฌผ์ฒด๋ก SRP ์์น์ ์ดํดํ๋ ค๊ณ ํด๋ณด๋ฉด, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ์, ์ปคํฐ์นผ, ๋๋ผ์ด๋ฒ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ์ฌ์ฉํ๋๋, ํ๋์ ๋ค์ฉ๋ ๊ณต๊ตฌ๋ก ํฉ์ณ ๋ค์ฌ๋ค๋ฅํ๊ฒ ์ฌ์ฉํ๋๋์ ๋ฐ๋ฅธ ์ฐจ์ด๋ก ๋ณผ ์ ์๋ค. ์ด์ฐ๋ณด๋ฉด ๋ค์ฉ๋ ๊ณต๊ตฌ๊ฐ ๊ณต๊ฐ์ ์ ์ฝ๋ ์์ํ ๊ณ ์ฌ์ฉํ๊ธฐ ์ข์๊ฒ ๊ฐ์ง๋ง, ์ฌ์ฉ์ด ์๋ ์ฝ๋๋ฅผ ์ค๊ณํ๋ ์ ์ฅ์์๋ ์ด๋ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐํ๋ ๋ชจ์ต์ด ๋์ด ๋ง์ด๋์ค ์ ์ธ ์์๋ก..
๐ ์์์ ์์ ํ๊ณ ํฉ์ฑ(Composition)์ ์ด์ฉํ์
์์๊ณผ ํฉ์ฑ ๊ฐ๋ ์ ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๊ฐ์ฅ ์ ๊ฒฝ ์จ์ผ ํ ๊ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ฌ์ฌ์ฉ ํจ์ผ๋ก์จ ๋ณ๊ฒฝ, ํ์ฅ์ ์ฉ์ดํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ ๊ด์ ์์ ์์๊ณผ ํฉ์ฑ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฝ๋ ์ฌ์ฌ์ฉ ๊ธฐ๋ฒ์ด๋ค. ์์(Inheritance) ํฉ์ฑ(Composition) ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฌ์ด์ ์์กด์ฑ์ ์ปดํ์ผ ํ์์ ํด๊ฒฐ ๋ ๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ์ ๋ฐํ์์ ํด๊ฒฐ is-a ๊ด๊ณ has-a ๊ด๊ณ ๋ถ๋ชจํด๋์ค์ ๊ตฌํ์ ์์กด ๊ฒฐํฉ๋๊ฐ ๋์. ๊ตฌํ์ ์์กดํ์ง ์์. ๋ด๋ถ์ ํฌํจ๋๋ ๊ฐ์ฒด์ ๊ตฌํ์ด ์๋ ์ธํฐํ์ด์ค์ ์์กด. ํด๋์ค ์ฌ์ด์ ์ ์ ์ธ ๊ด๊ณ ๊ฐ์ฒด ์ฌ์ด์ ๋์ ์ธ ๊ด๊ณ ๋ถ๋ชจ ํด๋์ค ์์ ๊ตฌํ๋ ์ฝ๋ ์์ฒด๋ฅผ ๋ฌผ๋ ค ๋ฐ์ ์ฌ์ฌ์ฉ ํฌํจ๋๋ ๊ฐ์ฒด์ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฌ์ฉ ..
๐ ๊ฐ์ฒด์ ๊ฒฐํฉ๋ & ์์ง๋ ์๋ฏธ์ ๋จ๊ณ ๐ฏ ์ด์ ๋ฆฌ
์ํํธ์จ์ด์ ๋ชจ๋ ๋ ๋ฆฝ์ฑ ์๊ณ ๋ก ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ณ ํ๋์ฉ ํด๊ฒฐํด๋๊ฐ๋ ๊ณผ์ ์ ๋งํ๋ค. ๋ง์ฝ ๋ฌธ์ ๊ฐ ๋ณต์กํ๊ณ ํฐ ๋ฌธ์ ๋ผ๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ์ด์ ํ๋์ฉ ํ์ด๋๊ฐ๊ฒ ๋ ๊ฒ์ธ๋ฐ, ์ด ๋ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ๋๊ฐ๋ ๊ฒ์ ๋ชจ๋ํ๋ผ๊ณ ํ๋ค. ๋ชจ๋์ ์ํํธ์จ์ด๋ฅผ ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๋๋์ด์ง ์์ค ๋จ์๋ฅผ ๋งํ๋ค. ๋ ๋ฆฝ์ ์ผ๋ก ์ปดํ์ผ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ํน์ ํ๋์ ํจ์๋ ํด๋์ค๋ ๋ชจ๋์ด ๋๋ค. ๋ณดํต ์ข์ ์ํํธ์จ์ด ์ผ์๋ก ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ด ๋๋ค๊ณ ํ๋ค. ์ข์ ๋ชจ๋ํ๋ ๋ชฉ์ ์ ๋ง๋ ๊ธฐ๋ฅ๋ง์ผ๋ก ๋ชจ๋์ ๋๋๊ฒ ๋๋๋ฐ, ๊ฐ๊ฐ์ ๋ชจ๋์ ์ฃผ์ด์ง ๊ธฐ๋ฅ๋ง์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ณ ์ฝ๋์ ์ดํด/์์ ์ด ์ฉ์ดํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฅผ๋ค์ด ํด๋น ๋ชจ๋์ ์์ ํ๋๋ผ๋ ๋ค๋ฅธ ๋ชจ๋์ ๋ผ์น๋ ์ํฅ์ด ์ ๊ฒ ๋๋ฉฐ,..
๐ OOP ์บก์ํ & ์ ๋ณด ์๋ ๊ฐ๋ ์๋ฒฝ ์ดํดํ๊ธฐ
์บก์ํ (Encapsulation) ์บก์ํ๋ ์ฝ๊ฒ ๋งํ๋ฉด ๋ณ์๋ ๋ฉ์๋๋ค์ ์บก์๋ก ๊ฐ์ธ์ ์๋ณด์ด๊ฒ ํ๋ ์ ๋ณด ์๋ ๊ฐ๋ ์ค ํ๋์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋จน๋ ์์ฝ์ ์๊ฐํด๋ณด๋ฉด ๋๋ค. ์์ฝ์ ์ค์ ์ฝ ๋ด์ฉ์ ๊ฐ๋ฃจ์ฝ์ด์ง๋ง, ์ด๊ฒ์ ์บก์๋ก ๊ฐ์ธ๋ฉด์ ๋ง์ ์๋ํ์ฌ ์ฌ๋์ด ๋จน๊ธฐ ํธํ๊ฒ ํ์์ผ๋ฉฐ, ๋ํ ๋ณต์กํ ์ฌ๋ฃ๋ค์ ๋ฐฐํฉ์ ์บก์๋ก ํฌ์ฅํ์ฌ ๋ค๋ฃจ๊ธฐ ํธํ๊ฒ ํ์๋ค. ์ด์ฒ๋ผ ์บก์ํ๋ ๊ฐ์ฒด์ ์์ฑ(Field)๊ณผ ํ์(Method)๋ฅผ ํ๋๋ก ๋ฌถ๊ณ , ์ธ๋ถ๋ก ๋ถํฐ ๋ด๋ถ๋ฅผ ๊ฐ์ธ ์จ๊ฒจ ์๋ํ๋ค. ๋ํ ์ธ๋ถ์ ์๋ชป๋ ์ ๊ทผ์ผ๋ก ๊ฐ์ด ๋ณํ๋ ์๋์น ์๋ ๋์์ ๋ฐฉ์งํ๋ ๋ณดํธ ํจ๊ณผ๋ ๋๋ฆด ์ ์๋ค. ์๋ฐ์์๋ ๋ํ์ ์ผ๋ก protected , default , private์ ์ ๊ทผ์ ์ด์๋ฅผ ํตํด ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. class Time { private ..
๐ ์๋ฐ์ ๋คํ์ฑ(Polymorphism) ์๋ฒฝ ์ดํดํ๊ธฐ
๋คํ์ฑ (Polymorphism) ๋คํ์ฑ(ๅคๅฝขๆง) ์ด๋, ๊ทธ ์์ฒด์ ์๋ฏธ๋ฅผ ํ์ค ๊ตญ์ด์ฌ์ ์์ ์ฐพ์๋ณด๋ฉด, '๊ฐ์ ์ข ์ ์๋ฌผ์ด๋ฉด์๋ ์ด๋ค ํํ๋ ํ์ง์ด ๋ค์ํ๊ฒ ๋ํ๋๋ ํ์' ์ด๋ผ ์ ์๋์ด ์๋ค. ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ๋์ ํด๋ณด๋ฉด, ๋คํ์ฑ(polymorphism)์ด๋ ๊ฐ์ ์๋ฃํ์ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋์ ํ์ฌ ๋ค์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ผ ์ ์๋ ์ฑ์ง์ ์๋ฏธํ๋ค. ์ด๋ฅผ ํตํด ์กฐ์ ํด๋์ค์ ์ฐธ์กฐ ๋ณ์๋ก ์์ ํด๋์ค์ ์ฐธ์กฐ ๋ณ์๋ฅผ ๋ค๋ฃจ๊ฑฐ๋, ๋์ผํ ์ด๋ฆ์ ๊ฐ์ ์ฌ๋ฌ ํํ์ ๋งค์๋๋ฅผ ๋ง๋ค ์ ์๋ค. ์๋ฐ์์ ๋ํ์ ์ผ๋ก ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ, ์ ์บ์คํ , ๋ค์ด์บ์คํ , ์ธํฐํ์ด์ค, ์ถ์๋ฉ์๋, ์ถ์ํด๋์ค ๋ฐฉ๋ฒ์ด ๋ชจ๋ ๋คํ์ฑ์ ์ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฆ, ๋คํ์ฑ์ ํด๋์ค๊ฐ ์์ ๊ด๊ณ์ ์์๋ ๋ํ๋๋ ๋ค์ฑ๋ก์ด ์ฑ์ง ์ธ ๊ฒ์ด..
๐ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ๊ณผ ์ถ์ํ ์๋ฒฝ ์ดํดํ๊ธฐ
๊ฐ์ฒด ์งํฅ(OOP) ๊ฐ๋ ๊ณผ ํน์ง ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ด๋, ๋ง์ ๊ฐ์ฒด(Objcet)๋ค์ด ๋ชจ์ฌ์ ์ํธ ํ๋ ฅํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ๋ฐฉ๋ฒ์ ์ผ์ปซ๋๋ค. ์ข๋ ์ฝ๊ฒ ๋งํ๋ฉด, ํ๋ก๊ทธ๋จ์ ๋ฌถ์ ๋จ์๋ก ์๊ฒ ์ชผ๊ฐ์, ์ถํ์ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ ํธํ๊ฒ ๋ง๋ค์ด ๋์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ด์ฒ๋ผ ๋ ๊ณ ๋ธ๋ญ ์กฐ๋ฆฝํ๋ฏ์ด ์ปดํฌ๋ํธ๋ฅผ ์ ์ฐํ๊ณ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ธฐ ๋๋ฌธ์, ํ์ ์์ ๋๊ท๋ชจ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ํ์ ์ผ๋ก ๋ง์ด ์๋ ค์ง Java์ธ์ด๋ฅผ ํฌํจํ์ฌ Ruby Python, C++, Objectivc-C, C#, Kotlin ๋ฑ์ด ๋ชจ๋ ๊ฐ์ฒด์งํฅ ์์๋ฅผ ๊ฐ์ง ์ธ์ด์ด๋ค. ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์ ๋ต์ ๊ผญ ๋ฐ๋์ ๊ฐ์ฒด ์งํฅ ์ธ์ด(Java, kotlin ๋ฑ)์์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ..