์ธํŒŒ

You Can Become A

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

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

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

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

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
Java

โ˜• ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ(OOP) ํด๋ž˜์Šค ๋ฌธ๋ฒ• - ํ•œ๋ฐฉ ๊ฐ€์ด๋“œ

ํด๋ž˜์Šค(class) ๊ตฌ์„ฑ ์ž๋ฐ”์—์„œ ํด๋ž˜์Šค(class)๋ž€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ํ‹€ ๋˜๋Š” ์„ค๊ณ„๋„์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์„ค๊ณ„๋„๋ฅผ ๊ฐ€์ง€๊ณ , ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์–ด๋‚˜๊ฐ„๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•„๋“œ(field)์™€ ๊ฐ์ฒด์˜ ํ•จ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์†Œ๋“œ(method)๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ํด๋ž˜์Šค, ๊ฐ์ฒด, ์ธ์Šคํ„ด์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋‹ค ๋ณด๋ฉด ์ •๋ง ๋งŽ์€ ์šฉ์–ด๋“ค์ด ๋‚˜์˜จ๋‹ค. ํŠนํžˆ ํด๋ž˜์Šค๋‚˜, ๊ฐ์ฒด, ์ธ์Šคํ„ด์Šค ๋ถ€๋ถ„์€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ๊ตฌ๋ถ„์ด ๋˜์–ด ์žˆ์–ด ๋งŽ์ด ํ˜ผ๋™ํ•˜๋Š” ํŽธ์ด๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฉ์–ด๋ฅผ ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™•์‹คํžˆ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž. ํด๋ž˜์Šค : ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ํ…œํ”Œ๋ฆฟ(์„ค๊ณ„๋„) ๊ฐ์ฒด : ํด๋ž˜์Šค(ํ…œํ”Œ๋ฆฟ)๊ณผ n..

category_image
์ธํŒŒ_
2022.10.10
2