[SOLID] ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์น˜ ์›์น™

SOLID๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์‰ฌ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›์น™. ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์‰ฝ๊ณ , ํ™•์žฅํ•˜๊ธฐ ์‰ฌ์šธ ๋•Œ๊นŒ์ง€ ๋ฆฌํŒฉํ„ฐ๋งํ•  ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์นจ์ด๋‹ค. ์ด ์›์น™์€ ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ „๋žต์˜ ์ผ๋ถ€์ด๋‹ค. S(Single responsibilitty principle): ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. O(Open / closed principle): ๊ฐœ๋ฐฉ - ํ์‡„ ์›์น™ ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. L(Liskov substitution principle): ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ ํ•˜์œ„ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. I(Interface segregatio..

ํ•œ ์‚ด๋„ ์ดํ•ดํ•˜๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด VS ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

์ปดํŒŒ์ผ ์–ธ์–ด ์ปดํŒŒ์ผ ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•œ ์–ธ์–ด์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์•„๋‹Œ, ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ปดํŒŒ์ผ๋ง ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํŒŒ์ผ ์–ธ์–ด๋Š” ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ปดํŒŒ์ผ๋œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ํ•œ ๋ฒˆ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋†“์€ ํ›„์—๋Š” ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ, ์ปดํŒŒ์ผ๋ง ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ •์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ปดํŒŒ์ผ ์–ธ์–ด๋กœ๋Š” C, C++, Java๊ฐ€ ์žˆ๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์ผ๋‹จ ์‹คํ–‰์„ ํ•ด๋†“๊ณ , ๋Ÿฐํƒ€์ž„์— ํ•œ ์ค„ ํ•œ ์ค„ ๋ฒˆ์—ญํ•ด ์‹คํ–‰ํ•œ๋‹ค. ์‹คํ–‰ ์ „์— ์ปดํŒŒ์ผํ•˜๋Š” ๊ณผ์ •์ด ์—†์œผ๋ฏ€๋กœ ์ดˆ๋ฐ˜ ์‹คํ–‰ํ•˜๋Š” ์†๋„๋Š” ๋น ..

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ VS ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด๋ž€? ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐœ์ฒด ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€? ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„์ธ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๊ทœ๋ชจ ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 1. ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ณธ์ ์ธ ๋นŒ๋”ฉ ๋ธ”๋ก์œผ๋กœ 2. ๊ฐ ๊ฐ์ฒด๋Š” ์–ด๋–ค ํƒ€์ž…(ํด๋ž˜์Šค)์˜ ์ธ์Šคํ„ด์Šค 3. ํด๋ž˜์Šค๋Š” ์ƒ์†(inheritance)์œผ๋กœ ์—ฐ๊ด€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง• 1. ์บก์Šํ™”(Encapsulation) ๐Ÿ’Š ์„œ๋กœ ๊ด€๋ จ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜๋ฅผ ๊ฐ์ฒด ์•ˆ์— ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ  ์™ธ๋ถ€์—์„œ ๋ณด์ผ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜..

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ •๊ทœํ™”๋ž€?

์ •๊ทœํ™”๋ž€? ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก Relation์„ ๊ด€๋ จ์ด ์žˆ๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Relation์„ ๋ถ„ํ•ดํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค๊ณ„ํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ด์ƒ ํ˜„์ƒ์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž˜๋ชป ์„ค๊ณ„ํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•ด Relation์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ถ€์ž‘์šฉ์„ ์ด์ƒ ํ˜„์ƒ(Anomaly๋ผ๊ณ  ํ•œ๋‹ค. ์ด์ƒ ํ˜„์ƒ์„ ์กฐ๊ธˆ ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๋ฉด, ์„ธ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ๋ฒˆ์งธ๋Š” ์‚ฝ์ž… ์ด์ƒ(Insertion Anomaly)์œผ๋กœ, ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์ด์ƒ ํ˜„์ƒ์ด๋‹ค. ๋‘๋ฒˆ์งธ๋Š” ๊ฐฑ์‹  ์ด์ƒ(Update Anomaly)์œผ๋กœ, ์ค‘๋ณต๋˜๋Š” ํŠœํ”Œ๋“ค ์ค‘์—์„œ ์ผ๋ถ€๋งŒ..

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] Three Schema Architecture (3๋‹จ๊ณ„ ์Šคํ‚ค๋งˆ ์•„ํ‚คํ…์ฒ˜)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด, ANSI/SPARC architecture๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” 'The Three-Schema Architecture'๋ฅผ ๋งˆ์ฃผ์นฉ๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ๊ฐœ๋…์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ ๋Š๊ปด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ๋ดค์„ ๋•Œ๋Š” ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ Three-Schema Architecture์— ๋Œ€ํ•ด ํฐ ๊ทธ๋ฆผ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. Three-Schema Architecture๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด Three Level๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, External Level, Conceptual Level, Internal Level ์ด ์„ธ๊ฐ€์ง€ Level๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € Internal Level์„ ๋ณด๋ฉด, Internal Level์€ ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ(internal sc..

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ