์ธํŒŒ

You Can Become A

P

๋Šฆ๊ฒŒ ์‹œ์ž‘ํ•ด๋„ ๋ˆ„๊ตฌ๋“ ์ง€ ๋…ธ๋ ฅํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ ์ˆ˜ ์žˆ์–ด์š” !

OOP

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค
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..

category_image
์ธํŒŒ_
2022.11.11
8
OOP

๐Ÿ’  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” DIP (์˜์กด ์—ญ์ „ ์›์น™)

์˜์กด ์—ญ์ „ ์›์น™ - DIP (Dependency Inversion Principle) DIP ์›์น™์ด๋ž€ ๊ฐ์ฒด์—์„œ ์–ด๋–ค Class๋ฅผ ์ฐธ์กฐํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค๋ฉด, ๊ทธ Class๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ๋Œ€์ƒ์˜ ์ƒ์œ„ ์š”์†Œ(์ถ”์ƒ ํด๋ž˜์Šค or ์ธํ„ฐํŽ˜์ด์Šค)๋กœ ์ฐธ์กฐํ•˜๋ผ๋Š” ์›์น™์ด๋‹ค. ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋Š” ์˜์กด ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๊ฐ์ฒด๋“ค์€ ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ์›์น™์„ ๊ฐ–๊ณ  ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•˜๋Š” ์•ฝ์†์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ์›์น™์ด๋ž€ ์ถ”์ƒ์„ฑ์ด ๋‚ฎ์€ ํด๋ž˜์Šค๋ณด๋‹ค ์ถ”์ƒ์„ฑ์ด ๋†’์€ ํด๋ž˜์Šค์™€ ํ†ต์‹ ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ ์ด๊ฒƒ์ด DIP ์›์น™์ด๋‹ค. ํด๋ž˜์Šค ๊ฐ„ ์˜์กด ๊ด€๊ณ„๋ž€, ํ•œ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ A ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ์—์„œ ๋งค๊ฐœ..

category_image
์ธํŒŒ_
2022.11.11
5
OOP

๐Ÿ’  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” ISP (์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™)

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ - ISP (Interface Segregation Principle) ISP ์›์น™์ด๋ž€ ๋ฒ”์šฉ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค ๋ณด๋‹ค๋Š” ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž)๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” Interface๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉ์— ๋งž๊ฒŒ ๋” ๊ฐ๊ธฐ ๋ถ„๋ฆฌํ•ด์•ผํ•œ๋‹ค๋Š” ์„ค๊ณ„ ์›์น™์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋“ค์„ ๋ฒ”์šฉ์ ์œผ๋กœ ์ด๊ฒƒ์ €๊ฒƒ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด, ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋งˆ์ € ์–ต์ง€๋กœ ๊ตฌํ˜„ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ํด๋ž˜์Šค์—์„œ๋„ ์ˆ˜์ •์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™์ด๋ž€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž˜๊ฒŒ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ, ํด๋ผ์ด์–ธํŠธ์˜ ๋ชฉ์ ๊ณผ ์šฉ๋„์— ์ ํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์•„..

category_image
์ธํŒŒ_
2022.11.10
3
OOP

๐Ÿ’  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” LSP (๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™)

๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ - LSP (Liskov Substitution Principle) ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™์€ 1988๋…„ ๋ฐ”๋ฐ”๋ผ ๋ฆฌ์Šค์ฝ”ํ”„(Barbara Liskov)๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ƒ์† ๊ด€๊ณ„์˜ ํŠน์ง•์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœํ‘œํ•œ ๊ฒƒ์œผ๋กœ, ์„œ๋ธŒ ํƒ€์ž…์€ ์–ธ์ œ๋‚˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์€, ์ž์‹ ํด๋ž˜์Šค๋Š” ์ตœ์†Œํ•œ ์ž์‹ ์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๊ฐ€๋Šฅํ•œ ํ–‰์œ„๋Š” ์ˆ˜ํ–‰์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ฆ‰, ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ„์น˜์— ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ฝ”๋“œ๊ฐ€ ์›๋ž˜ ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด๊ฒƒ์„ ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ์ž์‹ ํด๋ž˜์Šค ์‚ฌ์ด์˜ ํ–‰์œ„๊ฐ€ ์ผ๊ด€์„ฑ์ด ์žˆ๋‹ค๊ณ  ๋งํ•œ๋‹ค. ๋ฌด์Šจ ์‹ฌ์˜คํ•œ ๋…ผ๋ฌธ ๊ฐ™์ด ์„ค๋ช…ํ•˜์˜€๋Š”๋ฐ, ๊ทธ๋ƒฅ ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ..

category_image
์ธํŒŒ_
2022.11.09
3
OOP

๐Ÿ’  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” OCP (๊ฐœ๋ฐฉ ํ์‡„ ์›์น™)

๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ - OCP (Open Closed Principle) ๊ฐœ๋ฐฉ ํ์‡„์˜ ์›์น™(OCP)์ด๋ž€ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ, ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์„ ๋งํ•œ๋‹ค. ๋ณดํ†ต OCP๋ฅผ ํ™•์žฅ์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐœ๋ฐฉ์ (open)์ด๊ณ , ์ˆ˜์ •์— ๋Œ€ํ•ด์„œ๋Š” ํ์‡„์ (closed)์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ •์˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ™•์žฅ์ด๋ž€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋จ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด์„ํ•˜์ž๋ฉด, ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์š”์ฒญ์ด ์˜ค๋ฉด ํด๋ž˜์Šค๋ฅผ ํ™•์žฅ์„ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๋ฉด์„œ, ํ™•์žฅ์— ๋”ฐ๋ฅธ ํด๋ž˜์Šค ์ˆ˜์ •์€ ์ตœ์†Œํ™” ํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์„ค๊ณ„ ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. [ ํ™•์žฅ์— ์—ด๋ ค์žˆ๋‹ค ] - ๋ชจ๋“ˆ์˜ ํ™•์žฅ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. - ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์œ ์—ฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ํฐ ํž˜..

category_image
์ธํŒŒ_
2022.11.08
(0)
OOP

๐Ÿ’  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” SRP (๋‹จ์ผ ์ฑ…์ž„ ์›์น™)

๋‹จ์ผ ์ฑ…์ž„ ์›์น™ - SRP (Single Responsibility Principle) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)๋Š” ๊ฐ์ฒด๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ์›์น™์„ ๋งํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ '์ฑ…์ž„' ์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ํ•˜๋‚˜์˜ '๊ธฐ๋Šฅ ๋‹ด๋‹น'์œผ๋กœ ๋ณด๋ฉด ๋œ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๋‹ด๋‹นํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ง‘์ค‘๋˜์–ด์•ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์‹ค์ƒํ™œ์˜ ๋ฌผ์ฒด๋กœ SRP ์›์น™์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ด๋ณด๋ฉด, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ€์œ„, ์ปคํ„ฐ์นผ, ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋”ฐ๋กœ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜๋Š๋ƒ, ํ•˜๋‚˜์˜ ๋‹ค์šฉ๋„ ๊ณต๊ตฌ๋กœ ํ•ฉ์ณ ๋‹ค์žฌ๋‹ค๋Šฅํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ฅธ ์ฐจ์ด๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์–ด์ฐŒ๋ณด๋ฉด ๋‹ค์šฉ๋„ ๊ณต๊ตฌ๊ฐ€ ๊ณต๊ฐ„์˜ ์ ˆ์•ฝ๋„ ์žˆ์„ํ…Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์„๊ฒƒ ๊ฐ™์ง€๋งŒ, ์‚ฌ์šฉ์ด ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” ์ด๋Š” ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋ชจ์Šต์ด ๋˜์–ด ๋งˆ์ด๋„ˆ์Šค ์ ์ธ ์š”์†Œ๋กœ..

category_image
์ธํŒŒ_
2022.11.07
3
OOP

๐Ÿ’  ์ƒ์†์„ ์ž์ œํ•˜๊ณ  ํ•ฉ์„ฑ(Composition)์„ ์ด์šฉํ•˜์ž

์ƒ์†๊ณผ ํ•ฉ์„ฑ ๊ฐœ๋… ์ •๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ• ๋•Œ ๊ฐ€์žฅ ์‹ ๊ฒฝ ์จ์•ผ ํ•  ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ํ•จ์œผ๋กœ์จ ๋ณ€๊ฒฝ, ํ™•์žฅ์„ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ ๊ด€์ ์—์„œ ์ƒ์†๊ณผ ํ•ฉ์„ฑ์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๊ธฐ๋ฒ•์ด๋‹ค. ์ƒ์†(Inheritance) ํ•ฉ์„ฑ(Composition) ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ์ž์‹ ํด๋ž˜์Šค ์‚ฌ์ด์˜ ์˜์กด์„ฑ์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ•ด๊ฒฐ ๋‘ ๊ฐ์ฒด ์‚ฌ์ด์˜ ์˜์กด์„ฑ์€ ๋Ÿฐํƒ€์ž„์— ํ•ด๊ฒฐ is-a ๊ด€๊ณ„ has-a ๊ด€๊ณ„ ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๊ตฌํ˜„์— ์˜์กด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์Œ. ๊ตฌํ˜„์— ์˜์กดํ•˜์ง€ ์•Š์Œ. ๋‚ด๋ถ€์— ํฌํ•จ๋˜๋Š” ๊ฐ์ฒด์˜ ๊ตฌํ˜„์ด ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กด. ํด๋ž˜์Šค ์‚ฌ์ด์˜ ์ •์ ์ธ ๊ด€๊ณ„ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๋™์ ์ธ ๊ด€๊ณ„ ๋ถ€๋ชจ ํด๋ž˜์Šค ์•ˆ์— ๊ตฌํ˜„๋œ ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋ฌผ๋ ค ๋ฐ›์•„ ์žฌ์‚ฌ์šฉ ํฌํ•จ๋˜๋Š” ๊ฐ์ฒด์˜ ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์žฌ์‚ฌ์šฉ ..

category_image
์ธํŒŒ_
2022.10.24
8
OOP

๐Ÿ’  ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ๋„ & ์‘์ง‘๋„ ์˜๋ฏธ์™€ ๋‹จ๊ณ„ ๐Ÿ’ฏ ์ด์ •๋ฆฌ

์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“ˆ ๋…๋ฆฝ์„ฑ ์ž๊ณ ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๋ฌธ์ œ๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ๋ณต์žกํ•˜๊ณ  ํฐ ๋ฌธ์ œ๋ผ๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ์ชผ๊ฐœ์–ด์„œ ํ•˜๋‚˜์”ฉ ํ’€์–ด๋‚˜๊ฐ€๊ฒŒ ๋  ๊ฒƒ์ธ๋ฐ, ์ด ๋•Œ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ์ชผ๊ฐœ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ๋ชจ๋“ˆํ™”๋ผ๊ณ  ํ•œ๋‹ค. ๋ชจ๋“ˆ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์†Œ์Šค ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. ๋…๋ฆฝ์ ์œผ๋กœ ์ปดํŒŒ์ผ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ ํ˜น์€ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋„ ๋ชจ๋“ˆ์ด ๋œ๋‹ค. ๋ณดํ†ต ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ์ผ์ˆ˜๋ก ๋ชจ๋“ˆ์˜ ๋…๋ฆฝ์„ฑ์ด ๋†’๋‹ค๊ณ  ํ•œ๋‹ค. ์ข‹์€ ๋ชจ๋“ˆํ™”๋Š” ๋ชฉ์ ์— ๋งž๋Š” ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ ๋ชจ๋“ˆ์„ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ์€ ์ฃผ์–ด์ง„ ๊ธฐ๋Šฅ๋งŒ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๊ณ  ์ฝ”๋“œ์˜ ์ดํ•ด/์ˆ˜์ •์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ผ์น˜๋Š” ์˜ํ–ฅ์ด ์ ๊ฒŒ ๋˜๋ฉฐ,..

category_image
์ธํŒŒ_
2022.10.21
7
OOP

๐Ÿ’  OOP ์บก์Šํ™” & ์ •๋ณด ์€๋‹‰ ๊ฐœ๋… ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ

์บก์Šํ™” (Encapsulation) ์บก์Šํ™”๋ž€ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๋“ค์„ ์บก์Š๋กœ ๊ฐ์‹ธ์„œ ์•ˆ๋ณด์ด๊ฒŒ ํ•˜๋Š” ์ •๋ณด ์€๋‹‰ ๊ฐœ๋…์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋จน๋Š” ์•Œ์•ฝ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋œ๋‹ค. ์•Œ์•ฝ์˜ ์‹ค์ œ ์•ฝ ๋‚ด์šฉ์€ ๊ฐ€๋ฃจ์•ฝ์ด์ง€๋งŒ, ์ด๊ฒƒ์„ ์บก์Š๋กœ ๊ฐ์‹ธ๋ฉด์„œ ๋ง›์„ ์€๋‹‰ํ•˜์—ฌ ์‚ฌ๋žŒ์ด ๋จน๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜์˜€์œผ๋ฉฐ, ๋˜ํ•œ ๋ณต์žกํ•œ ์žฌ๋ฃŒ๋“ค์˜ ๋ฐฐํ•ฉ์„ ์บก์Š๋กœ ํฌ์žฅํ•˜์—ฌ ๋‹ค๋ฃจ๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜์˜€๋‹ค. ์ด์ฒ˜๋Ÿผ ์บก์Šํ™”๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ(Field)๊ณผ ํ–‰์œ„(Method)๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ , ์™ธ๋ถ€๋กœ ๋ถ€ํ„ฐ ๋‚ด๋ถ€๋ฅผ ๊ฐ์‹ธ ์ˆจ๊ฒจ ์€๋‹‰ํ•œ๋‹ค. ๋˜ํ•œ ์™ธ๋ถ€์˜ ์ž˜๋ชป๋œ ์ ‘๊ทผ์œผ๋กœ ๊ฐ’์ด ๋ณ€ํ•˜๋Š” ์˜๋„์น˜ ์•Š๋Š” ๋™์ž‘์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ณดํ˜ธ ํšจ๊ณผ๋„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ protected , default , private์˜ ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. class Time { private ..

category_image
์ธํŒŒ_
2022.10.20
3
OOP

๐Ÿ’  ์ž๋ฐ”์˜ ๋‹คํ˜•์„ฑ(Polymorphism) ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ

๋‹คํ˜•์„ฑ (Polymorphism) ๋‹คํ˜•์„ฑ(ๅคšๅฝขๆ€ง) ์ด๋ž€, ๊ทธ ์ž์ฒด์˜ ์˜๋ฏธ๋ฅผ ํ‘œ์ค€ ๊ตญ์–ด์‚ฌ์ „์—์„œ ์ฐพ์•„๋ณด๋ฉด, '๊ฐ™์€ ์ข…์˜ ์ƒ๋ฌผ์ด๋ฉด์„œ๋„ ์–ด๋–ค ํ˜•ํƒœ๋‚˜ ํ˜•์งˆ์ด ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ' ์ด๋ผ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ์ด๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€์ž…ํ•ด๋ณด๋ฉด, ๋‹คํ˜•์„ฑ(polymorphism)์ด๋ž€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ž…ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ ์ž์† ํด๋ž˜์Šค์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜, ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ๋งค์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์—์„  ๋Œ€ํ‘œ์ ์œผ๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ์—…์บ์ŠคํŒ…, ๋‹ค์šด์บ์ŠคํŒ…, ์ธํ„ฐํŽ˜์ด์Šค, ์ถ”์ƒ๋ฉ”์†Œ๋“œ, ์ถ”์ƒํด๋ž˜์Šค ๋ฐฉ๋ฒ•์ด ๋ชจ๋‘ ๋‹คํ˜•์„ฑ์— ์†ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ฆ‰, ๋‹คํ˜•์„ฑ์€ ํด๋ž˜์Šค๊ฐ€ ์ƒ์† ๊ด€๊ณ„์— ์žˆ์„๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ๋‹ค์ฑ„๋กœ์šด ์„ฑ์งˆ ์ธ ๊ฒƒ์ด..

category_image
์ธํŒŒ_
2022.10.19
(0)
OOP

๐Ÿ’  ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋…๊ณผ ์ถ”์ƒํ™” ์™„๋ฒฝ ์ดํ•ดํ•˜๊ธฐ

๊ฐ์ฒด ์ง€ํ–ฅ(OOP) ๊ฐœ๋…๊ณผ ํŠน์ง• ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ž€, ๋งŽ์€ ๊ฐ์ฒด(Objcet)๋“ค์ด ๋ชจ์—ฌ์„œ ์ƒํ˜ธ ํ˜‘๋ ฅํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์ผ์ปซ๋Š”๋‹ค. ์ข€๋” ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ์„ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ, ์ถ”ํ›„์— ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ ˆ๊ณ  ๋ธ”๋Ÿญ ์กฐ๋ฆฝํ•˜๋“ฏ์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์—…์—์„œ ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋งŽ์ด ์•Œ๋ ค์ง„ Java์–ธ์–ด๋ฅผ ํฌํ•จํ•˜์—ฌ Ruby Python, C++, Objectivc-C, C#, Kotlin ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ์ฒด์ง€ํ–ฅ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ์–ธ์–ด์ด๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ์ „๋žต์€ ๊ผญ ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด(Java, kotlin ๋“ฑ)์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ..

category_image
์ธํŒŒ_
2022.10.18
7