์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ/์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„

| 2020 ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (ํ•„๊ธฐ) | 1. ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„

ํ•œ์ฝ”๋”ฉ 2020. 8. 1. 18:14
728x90
728x90
20. ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜

 

์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ณจ๊ฒฉ์ด ๋˜๋Š” ๊ธฐ๋ณธ ๊ตฌ์กฐ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„

- ์‚ฌ์šฉ์ž์˜ ๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๊ณ , ๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ํ•ด๊ฒฐ ๊ณผ์ •

 

๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ : ์‹œ์Šคํ…œ์ด ๊ฐ–์ถฐ์•ผํ•  ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์š”๊ตฌํ•ญ๋ชฉ

๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ : ๊ทธ ์™ธ ํ’ˆ์งˆ์ด๋‚˜ ์ œ์•ฝ์‚ฌํ•ญ์— ๊ด€ํ•œ ๊ฒƒ๋“ค

 

• ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

1. ๋ชจ๋“ˆํ™”(Modularity)

์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์˜ ์ˆ˜์ • ๋ฐ ์žฌ์‚ฌ์šฉ, ์œ ์ง€ ๊ด€๋ฆฌ ๋“ฑ์ด ์šฉ์ดํ•˜๋„๋ก ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋“ˆ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ

- ์žฌ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ

- ๋ชจ๋“ˆ์˜ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ๋‚˜๋ˆ„๋ฉด ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ๋ชจ๋“ˆ๊ฐ„์˜ ํ†ตํ•ฉ ๋น„์šฉ์ด ๋งŽ์ด ๋“ฆ

- ๋ชจ๋“ˆ์˜ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ๋‚˜๋ˆ„๋ฉด ๊ฐœ์ˆ˜๊ฐ€ ์ ์–ด ํ†ตํ•ฉ ๋น„์šฉ์€ ์ ๊ฒŒ ๋“ค์ง€๋งŒ ๋ชจ๋“ˆ ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๋งŽ์ด ๋“ฆ

 

2. ์ถ”์ƒํ™”(Abstraction)

๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ƒ๋žตํ•˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๊ฐ•์กฐํ•ด ๋ชจ๋ธํ™” ํ•˜๋Š” ๊ฒƒ

๋ฌธ์ œ์˜ ์ „์ฒด์ ์ด๊ณ  ํฌ๊ด„์ ์ธ ๊ฐœ๋… ์„ค๊ณ„ ํ›„, ์ฐจ๋ก€๋กœ ์„ธ๋ถ„ํ™”ํ•ด ๊ตฌ์ฒดํ™” ์‹œ์ผœ๋‚˜๊ฐ€๋Š” ๊ฒƒ

- ์ถ”์„ฑํ™”์˜ ์œ ํ˜• : ๊ณผ์ • ์ถ”์ƒํ™”, ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™”, ์ œ์–ด ์ถ”์ƒํ™”

- ๊ณผ์ • ์ถ”์ƒํ™” : ์ž์„ธํ•œ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ์ •์˜ํ•˜์ง€ ์•Š๊ณ , ์ „๋ฐ˜์ ์ธ ํ๋ฆ„๋งŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„

- ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™” : ๋ฐ์ดํ„ฐ์˜ ์„ธ๋ถ€์ ์ธ ์†์„ฑ์ด๋‚˜ ์šฉ๋„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์œผ๋กœ ๋Œ€์ฒด

- ์ œ์–ด ์ถ”์ƒํ™” : ์ด๋ฒคํŠธ ๋ฐœ์ƒ์˜ ์ •ํ™•ํ•œ ์ ˆ์ฐจ๋‚˜ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜์ง€ ์•Š๊ณ , ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์œผ๋กœ ๋Œ€์ฒด

 

3. ๋‹จ๊ณ„์  ๋ถ„ํ•ด(Stepwise Refinement)

Niklaus Wirth์— ์˜ํ•ด ์ œ์•ˆ๋œ ํ•˜ํ–ฅ์‹ ์„ค๊ณ„ ์ „๋žต, ๋ฌธ์ œ๋ฅผ ์ƒ์œ„์˜ ์ค‘์š” ๊ฐœ๋…์œผ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„์˜ ๊ฐœ๋…์œผ๋กœ ๊ตฌ์ฒดํ™”์‹œํ‚ค๋Š” ๋ถ„ํ•  ๊ธฐ๋ฒ•

 

4. ์ •๋ณด ์€๋‹‰(Information Hiding)

ํ•œ ๋ชจ๋“ˆ ๋‚ด๋ถ€์— ํฌํ•จ๋œ ์ ˆ์ฐจ์™€ ์ž๋ฃŒ๋“ค์˜ ์ •๋ณด๊ฐ€ ๊ฐ์ถ”์–ด์ ธ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์ด ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•จ

- ๋ชจ๋“ˆ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์–ด ์ˆ˜์ •, ์‹œํ—˜, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ด

 

 

 ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ํ’ˆ์งˆ ์†์„ฑ

ํ’ˆ์งˆ ํ‰๊ฐ€ ์š”์†Œ๋“ค์„ ์‹œ์Šคํ…œ ์ธก๋ฉด, ๋น„์ฆˆ๋‹ˆ์Šค ์ธก๋ฉด, ์•„ํ‚คํ…์ฒ˜ ์ธก๋ฉด์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ตฌ์ฒดํ™” ์‹œํ‚จ ๊ฒƒ

- ์‹œ์Šคํ…œ ์ธก๋ฉด : ์„ฑ๋Šฅ, ๋ณด์•ˆ, ๊ฐ€์šฉ์„ฑ, ๊ธฐ๋Šฅ์„ฑ, ์‚ฌ์šฉ์„ฑ, ๋ณ€๊ฒฝ ์šฉ์ด์„ฑ, ํ™•์žฅ์„ฑ, ์šฉ์ด์„ฑ, ๋ฐฐ์น˜์„ฑ, ์•ˆ์ •์„ฑ ๋“ฑ

- ๋น„์ฆˆ๋‹ˆ์Šค ์ธก๋ฉด : ์‹œ์žฅ ์ ์‹œ์„ฑ, ๋น„์šฉ๊ณผ ํ˜œํƒ, ์˜ˆ์ƒ ์‹œ์Šคํ…œ ์ˆ˜๋ช…, ๋ชฉํ‘œ ์‹œ์žฅ, ๊ณต๊ฐœ ์ผ์ • ๋“ฑ

- ์•„ํ‚คํ…์ฒ˜ ์ธก๋ฉด : ๊ฐœ๋…์  ๋ฌด๊ฒฐ์„ฑ, ์ •ํ™•์„ฑ, ์™„๊ฒฐ์„ฑ, ๊ตฌ์ถ• ๊ฐ€๋Šฅ์„ฑ, ๋ณ€๊ฒฝ์„ฑ, ์ ์‘์„ฑ, ์ผ์น˜์„ฑ ๋“ฑ

 

 

 ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ์„ค๊ณ„ ๊ณผ์ •

1. ์„ค๊ณ„ ๋ชฉํ‘œ ์„ค์ •

2. ์‹œ์Šคํ…œ ํƒ€์ž… ๊ฒฐ์ •

3. ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์ ์šฉ

๏ผŠ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด : ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ํ•ด๊ฒฐ ๋ฐฉ์‹

4. ์„œ๋ธŒ์‹œ์Šคํ…œ ๊ตฌ์ฒดํ™”

5. ๊ฒ€ํ† 

 

์‹œ์Šคํ…œ ํƒ€์ž…

- ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ : ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ ๋ฐœ์ƒ์‹œ ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ˜์‘

- ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์‹œ์Šคํ…œ : ์™ธ๋ถ€์˜ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๋™์ž‘

- ๋ณ€ํ™˜ํ˜• ์‹œ์Šคํ…œ : ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์‹œ ์ •ํ•ด์ง„ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•ด ๊ฒฐ๊ณผ ์ถœ๋ ฅ

- ๊ฐ์ฒด ์˜์†ํ˜• ์‹œ์Šคํ…œ : DB๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅ, ๊ฒ€์ƒ‰, ๊ฐฑ์‹  ํ•จ

 

 

21. ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

 

์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์‹, ์˜ˆ์ œ

 

 ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ์žฅ์ 

- ์‹œํ–‰์ฐฉ์˜ค ์ถœ์ž„

- ์˜ˆ์ธก ๊ฐ€๋Šฅ

- ์•ˆ์ •์  ๊ฐœ๋ฐœ

 

 ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ์ข…๋ฅ˜

1. ๋ ˆ์ด์–ด ํŒจํ„ด(Layers pattern)

์‹œ์Šคํ…œ ๊ณ„์ธต์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ตฌ์„ฑํ•˜๋Š” ๊ณ ์ „์ ์ธ ๋ฐฉ๋ฒ•

- ๊ฐ๊ฐ์˜ ์„œ๋ธŒ์‹œ์Šคํ…œ๋“ค์ด ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃธ

ex) OSI ์ฐธ์กฐ ๋ชจ๋ธ

 

2. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํŒจํ„ด(Client-Sever Pattern)

ํ•˜๋‚˜์˜ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์™€ ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํŒจํ„ด

- ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€๋น„ํ•ด ํ•ญ์ƒ ๋Œ€๊ธฐ ์ƒํƒœ ์œ ์ง€

- ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•œ ์„œ๋กœ ๋…๋ฆฝ์ 

 

3. ํŒŒ์ดํ”„-ํ•„ํ„ฐ ํŒจํ„ด(Pipe-Filter Pattern)

๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ ˆ์ฐจ์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ํ•„ํ„ฐ ์ปดํฌ๋„ŒํŠธ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ํŒŒ์ดํ”„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํŒจํ„ด

- ์žฌ์‚ฌ์šฉ์„ฑ ์ข‹์Œ, ์ถ”๊ฐ€๊ฐ€ ์‰ฌ์›Œ ํ™•์žฅ ์šฉ์ด

- ํ•„ํ„ฐ ์ปดํฌ๋„ŒํŠธ ์žฌ๋ฐฐ์น˜ ๊ฐ€๋Šฅ

- ๋ณ€ํ™˜, ๋ฒ„ํผ๋ง, ๋™๊ธฐํ™” ๋“ฑ์— ์ฃผ๋กœ ์‚ฌ์šฉ

ex) UNIX์˜ ์‰˜(Shell)

 

4. ๋ชจ๋ธ-๋ทฐ-์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด(MVC : Model-View-Controller Pattern)

์„œ๋ธŒ์‹œ์Šคํ…œ์„ 3๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๋Š” ํŒจํ„ด

- ๋ชจ๋ธ(Model) : ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€

- ๋ทฐ(View) : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด ํ‘œ์‹œ

- ์ปจํŠธ๋กค๋Ÿฌ(Controller) : ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ž…๋ ฅ ์ฒ˜๋ฆฌ

- ๊ฐ ๋ถ€๋ถ„์€ ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Œ, ์˜ํ–ฅ X

- ๋Œ€ํ™”ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ

 

5. ๊ธฐํƒ€ ํŒจํ„ด

๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ํŒจํ„ด : ๋งˆ์Šคํ„ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ ์Šฌ๋ ˆ์ด๋ธŒ ์ปดํฌ๋„ŒํŠธ๋กœ ์ž‘์—… ๋ถ„ํ•  ํ›„, ์Šฌ๋ ˆ์ด๋ธŒ์—๊ฒŒ ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‹ค์‹œ ๋Œ๋ ค๋ฐ›์Œ

๋ธŒ๋กœ์ปค ํŒจํ„ด : ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์„œ๋น„์Šค์™€ ํŠน์„ฑ์„ ์š”์ฒญํ•˜๋ฉด ์š”์ฒญ์— ๋งž๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ์‚ฌ์šฉ์ž๋ฅผ ์—ฐ๊ฒฐํ•ด ์คŒ

ํ”ผ์–ด-ํˆฌ-ํ”ผ์–ด ํŒจํ„ด : ํ”ผ์–ด=ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ, ๊ฐ ํ”ผ์–ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋  ์ˆ˜๋„ ์„œ๋ฒ„๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋Š” ํŒจํ„ด, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋ฐฉ์‹

์ด๋ฒคํŠธ-๋ฒ„์Šค ํŒจํ„ด : ์†Œ์Šค๊ฐ€ ํŠน์ • ์ฑ„๋„์— ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๋ฉด, ํ•ด๋‹น ์ฑ„๋„์„ ๊ตฌ๋…ํ•œ ๋ฆฌ์Šค๋„ˆ๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•จ

๋ธ”๋ž™๋ณด๋“œ ํŒจํ„ด : ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋ธ”๋ž™๋ณด๋“œ์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Œ

์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด : ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์˜ ๊ฐ ๋ผ์ธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๊ณ , ๊ธฐํ˜ธ๋งˆ๋‹ค ํด๋ž˜์Šค๋ฅผ ๊ฐ–๋„๋ก ๊ตฌ์„ฑ

 

22. ๊ฐ์ฒด์ง€ํ–ฅ(Object-Oriented)

 

๊ฐ์ฒด์ง€ํ–ฅ

ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ฐœ์ฒด(Entity)๋ฅผ ๊ธฐ๊ณ„ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด(Object)๋กœ ๋งŒ๋“ค์–ด, ๊ธฐ๊ณ„์ ์ธ ๋ถ€ํ’ˆ๋“ค์„ ์กฐ๋ฆฝํ•ด ์ œํ’ˆ์„ ๋งŒ๋“ค ๋“ฏ์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ์—๋„ ๊ฐ์ฒด๋“ค์„ ์กฐ๋ฆฝํ•ด์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•

- ์†Œํ”„ํŠธ์›จ์–ด์˜ ์žฌ์‚ฌ์šฉ ๋ฐ ํ™•์žฅ ์šฉ์ด, ์œ ์ง€๋ณด์ˆ˜ ์‰ฌ์›€

- ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๋‹จ๊ณ„์  ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„

 

 ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ตฌ์„ฑ์š”์†Œ์™€ ๊ฐœ๋…

1. ๊ฐ์ฒด(Object)

๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฌถ์–ด ๋†“์€ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ

- ๋ฐ์ดํ„ฐ = ์†์„ฑ, ์ƒํƒœ, ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ์ž๋ฃŒ๊ตฌ์กฐ

- ํ•จ์ˆ˜ = ๋ฉ”์†Œ๋“œ, ์„œ๋น„์Šค, ๋™์ž‘, ํ–‰์œ„

- ๋…๋ฆฝ์ ์œผ๋กœ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง

- ๊ฐ์ฒด๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด = ์ƒํƒœ(State)

 

2. ํด๋ž˜์Šค(Class)

๊ณตํ†ต๋œ ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ๊ฐ–๋Š” ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ, ๊ฐ์ฒด์˜ ์ผ๋ฐ˜์ ์ธ ํƒ€์ž…์„ ์˜๋ฏธ

- ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋“ค์ด ๊ฐ–๋Š” ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š” ํ‹€

- ํด๋ž˜์Šค์— ์†ํ•œ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด = ์ธ์Šคํ„ด์Šค(Instance)

- ๋™์ผํ•œ ํด๋ž˜์Šค์— ์†ํ•œ ๊ฐ๊ฐ์˜ ๊ฐœ์ฒด๋“ค์€ ๊ณตํ†ต๋œ ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ๊ฐ–์Œ

 

3. ์บก์Šํ™”(Encapsulation)

๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๊ฒƒ์„ ์˜๋ฏธ

- ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ตœ์†Œํ™”

- ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋น„์šฉ ์ ˆ๊ฐ

- ๊ฐœ๋ฐœ ์†๋„ ํ–ฅ์ƒ

 

4. ์ƒ์†(Inheritance)

์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ

- ๋‹ค์ค‘ ์ƒ์† : ํ•œ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ƒ์œ„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ์ƒ์† ๋ฐ›๋Š” ๊ฒƒ

 

5. ๋‹คํ˜•์„ฑ(Polymorphism)

ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ˜•ํƒœ์˜ ์‘๋‹ต์ด ์žˆ๋Š” ๊ฒƒ

 

23. ๋ชจ๋“ˆ

 

๋ชจ๋“ˆ

๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ๋ถ„๋ฆฌ๋œ ์‹œ์Šคํ…œ์˜ ๊ฐ ๊ธฐ๋Šฅ

- ์„œ๋ธŒ๋ฃจํ‹ด, ์„œ๋ธŒ์‹œ์Šคํ…œ, ์ž‘์—…๋‹จ์œ„ ๋“ฑ๊ณผ ๊ฐ™์€ ์˜๋ฏธ

- ๋‹จ๋…์œผ๋กœ ์ปดํŒŒ์ผ ๊ฐ€๋Šฅ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- ๋ชจ๋“ˆ์˜ ๋…๋ฆฝ์„ฑ์€ ๊ฒฐํ•ฉ๋„์™€ ์‘์ง‘๋„์— ์˜ํ•ด ์ธก์ • ๋จ

- ๋…๋ฆฝ์„ฑ์„ ๋†’์ด๋ ค๋ฉด ๋ชจ๋“ˆ์˜ ๊ฒฐํ•ฉ๋„๋Š” ์•ฝํ•˜๊ฒŒ, ์‘์ง‘๋„๋Š” ๊ฐ•ํ•˜๊ฒŒ, ๋ชจ๋“ˆ์˜ ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•จ

- ๋…๋ฆฝ์„ฑ์ด ๋†’์„ ์ˆ˜๋ก ๋ชจ๋“ˆ ์ˆ˜์ • ์‹œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ , ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

 

 

๊ฒฐํ•ฉ๋„(Coupling)

๋ชจ๋“ˆ ๊ฐ„์— ์ƒํ˜ธ ์˜์กด๋„, ๋‘ ๋ชจ๋“ˆ ์‚ฌ์ด์˜ ์—ฐ๊ด€ ๊ด€๊ณ„

- ๊ฒฐํ•ฉ๋„๊ฐ€ ์•ฝํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋†’๊ณ , ๊ฐ•ํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋‚ฎ์Œ

- ๊ฒฐํ•ฉ๋„๊ฐ€ ๊ฐ•ํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์ด ์–ด๋ ค์›€

- ๊ฒฐํ•ฉ๋„ ๊ฐ•ํ•จ ์ˆœ์„œ : ์ž์Šค์ œ์™ธ๊ณต๋‚ด

์ž๋ฃŒ ๊ฒฐํ•ฉ๋„
(Data Coupling)

๋ชจ๋“ˆ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ž๋ฃŒ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋  ๋•Œ์˜ ๊ฒฐํ•ฉ๋„

- ๋‹ค๋ฅธ ๋ชจ๋“ˆ ํ˜ธ์ถœ ์‹œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ์ธ์ˆ˜๋กœ ํ…Œ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ณ , ํ˜ธ์ถœ ๋ฐ›์€ ๋ชจ๋“ˆ์€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋Œ๋ ค์ฃผ๋Š” ๋ฐฉ์‹ 

์Šคํƒฌํ”„ ๊ฒฐํ•ฉ๋„
(Stamp Coupling)

๋ชจ๋“ˆ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฐฐ์—ด์ด๋‚˜ ๋ ˆ์ฝ”๋“œ ๋“ฑ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ์ „๋‹ฌ๋  ๋•Œ์˜ ๊ฒฐํ•ฉ๋„

์ œ์–ด ๊ฒฐํ•ฉ๋„
(Control Coupling)

์–ด๋–ค ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋…ผ๋ฆฌ์ ์ธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•ด ํ†ต์‹ ํ•˜๊ฑฐ๋‚˜ ์ œ์–ด ์š”์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒฐํ•ฉ๋„

์™ธ๋ถ€ ๊ฒฐํ•ฉ๋„
(External Coupling)

์–ด๋–ค ๋ชจ๋“ˆ์—์„œ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ฐธ์กฐํ•  ๋•Œ์˜ ๊ฒฐํ•ฉ๋„

๊ณตํ†ต ๊ฒฐํ•ฉ๋„
(Common Coupling) 

๊ณต์œ ๋˜๋Š” ๊ณตํ†ต ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ์‚ฌ์šฉํ•  ๋•Œ์˜ ๊ฒฐํ•ฉ๋„ 

๋‚ด์šฉ ๊ฒฐํ•ฉ๋„
(Content Coupling) 

ํ•œ ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ๊ธฐ๋Šฅ ๋ฐ ๊ทธ ๋‚ด๋ถ€ ์ž๋ฃŒ๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ • ํ•  ๋•Œ์˜ ๊ฒฐํ•ฉ๋„

 



์‘์ง‘๋„(Cohesion)

์ •๋ณด ์€๋‹‰ ๊ฐœ๋…์„ ํ™•์žฅํ•œ ๊ฒƒ, ๋ช…๋ น์–ด๋‚˜ ํ˜ธ์ถœ๋ฌธ ๋“ฑ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ์š”์†Œ๋“ค์˜ ์„œ๋กœ ๊ด€๋ จ๋„, ๋ชจ๋“ˆ์ด ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ์ •๋„

- ์‘์ง‘๋„๊ฐ€ ๊ฐ•ํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋†’๊ณ , ์•ฝํ•  ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋‚ฎ๋‹ค

- ์‘์ง‘๋„ ์•ฝํ•จ ์ˆœ์„œ : ์šฐ๋…ผ์‹œ์ ˆ๊ต์ˆœ๊ธฐ

๊ธฐ๋Šฅ์  ์‘์ง‘๋„

(Functional Cohesion)

๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ ์š”์†Œ๋“ค์ด ๋‹จ์ผ ๋ฌธ์ œ์™€ ์—ฐ๊ด€๋˜์–ด ์ˆ˜ํ–‰๋  ๊ฒฝ์šฐ

์ˆœ์ฐจ์  ์‘์ง‘๋„

(Sequential Cohesion)

๋ชจ๋“ˆ ๋‚ด ํ•˜๋‚˜์˜ ํ™œ๋™์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ ๋‹ค์Œ ํ™œ๋™์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

๊ตํ™˜(ํ†ต์‹ )์  ์‘์ง‘๋„

(Communication Cohesion)

๋™์ผํ•œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ๋ชจ์˜€์„ ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

์ ˆ์ฐจ์  ์‘์ง‘๋„

(Procedural Cohesion)

๋ชจ๋“ˆ์ด ๋‹ค์ˆ˜์˜ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ๋•Œ ๋ชจ๋“ˆ ์•ˆ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

์‹œ๊ฐ„์  ์‘์ง‘๋„

(Temporal Cohesion)

ํŠน์ • ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ๋กœ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

๋…ผ๋ฆฌ์  ์‘์ง‘๋„

(Logical Cohesion)

์œ ์‚ฌํ•œ ์„ฑ๊ฒฉ์„ ๊ฐ–๊ฑฐ๋‚˜ ํŠน์ • ํ˜•ํƒœ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์ฒ˜๋ฆฌ ์š”์†Œ๋“ค๋กœ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์ด ํ˜•์„ฑ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

์šฐ์—ฐ์  ์‘์ง‘๋„

(Coincidental Cohesion)

๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ์˜ ์‘์ง‘๋„

 

 

ํŒฌ์ธ(Fan-In) / ํŒฌ์•„์›ƒ(Fan-Out)

- ํŒฌ์ธ : ์ž์‹ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์˜ ์ˆ˜

- ํŒฌ์•„์›ƒ : ์ž์‹ ์ด ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“ˆ์˜ ์ˆ˜

- ํŒฌ์ธ๊ณผ ํŒฌ์•„์›ƒ์„ ๋ถ„์„ํ•ด ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ

- ํŒฌ์ธ์ด ๋†’๋‹ค = ์žฌ์‚ฌ์šฉ ์ธก๋ฉด์—์„œ ์„ค๊ณ„๊ฐ€ ์ž˜๋˜์—ˆ์œผ๋‚˜, ๋‹จ์ผ ์žฅ์• ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ค‘์ ์ ์ธ ๊ด€๋ฆฌ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

- ํŒฌ์•„์›ƒ์ด ๋†’๋‹ค = ๋ถˆํ•„์š”ํ•œ ํ˜ธ์ถœ์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€ํ† ํ•˜๊ณ , ๋‹จ์ˆœํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

- ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„  ํŒฌ์ธ์€ ๋†’๊ฒŒ, ํŒฌ์•„์›ƒ์€  ๋‚ฎ๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•จ

 

B์˜ ํŒฌ์ธ : A (์œ„์— ์žˆ๋Š” ๊ฒƒ)

B์˜ ํŒฌ์•„์›ƒ : E, F (์•„๋ž˜์— ์žˆ๋Š” ๊ฒƒ)

 

 

25. ์ฝ”๋“œ

 

์ฝ”๋“œ

์ปดํ“จํ„ฐ๋ฅผ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ถ„๋ฅ˜, ์กฐํ•ฉ ๋ฐ ์ง‘๊ณ„๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ , ํŠน์ • ์ž๋ฃŒ์˜ ์ถ”์ถœ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ

- ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ž‘์„ฑ, ์ •๋ณด ์ฒ˜๋ฆฌ์˜ ํšจ์œจ๊ณผ ์ฒ˜๋ฆฌ๋œ ์ •๋ณด์˜ ๊ฐ€์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์นจ

 

 ์ฝ”๋“œ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

์‹๋ณ„ ๊ธฐ๋Šฅ, ๋ถ„๋ฅ˜ ๊ธฐ๋Šฅ, ๋ฐฐ์—ด ๊ธฐ๋Šฅ

 

 ์ฝ”๋“œ์˜ ์ข…๋ฅ˜

์ˆœ์ฐจ ์ฝ”๋“œ

(Sequence Code)

์ž๋ฃŒ์˜ ๋ฐœ์ƒ ์ˆœ์„œ, ํฌ๊ธฐ ์ˆœ์„œ ๋“ฑ ์ผ์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ตœ์ดˆ์˜ ์ž๋ฃŒ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ• 

ex) 1, 2, 3, 4 ...

๋ธ”๋ก ์ฝ”๋“œ

(Block Code)

์ฝ”๋“œํ™” ๋Œ€์ƒ ํ•ญ๋ชฉ ์ค‘์—์„œ ๊ณตํ†ต์„ฑ์ด ์žˆ๋Š” ๊ฒƒ๋ผ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ๋ธ”๋ก ๋‚ด์—์„œ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ex) 1001~1100 : ์ด๋ฌด๋ถ€, 1101~1200 : ์˜์—…๋ถ€ 

10์ง„ ์ฝ”๋“œ

(Decimal Code) 

์ฝ”๋“œํ™” ๋Œ€์ƒ ํ•ญ๋ชฉ์„ 0~9๊นŒ์ง€ 10์ง„ ๋ถ„ํ• ํ•˜๊ณ , ๋‹ค์‹œ ๊ทธ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ 10์ง„ ๋ถ„ํ•  ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•„์š”ํ•œ ๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•

ex) 1000: ๊ณตํ•™, 1100 : ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™, 1110 : ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ 

๊ทธ๋ฃน ๋ถ„๋ฅ˜ ์ฝ”๋“œ

(Group Classification Code) 

์ฝ”๋“œํ™” ๋Œ€์ƒ ํ•ญ๋ชฉ์„ ์ผ์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋Œ€๋ถ„๋ฅ˜, ์ค‘๋ถ„๋ฅ˜, ์†Œ๋ถ„๋ฅ˜ ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ๊ทธ๋ฃน ์•ˆ์—์„œ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ex) 1-01-001 : ๋ณธ์‚ฌ-์ด๋ฌด๋ถ€-์ธ์‚ฌ๊ณ„, 2-01-001 : ์ง€์‚ฌ-์ด๋ฌด๋ถ€-์ธ์‚ฌ๊ณ„

์—ฐ์ƒ ์ฝ”๋“œ

(Mnemonic Code) 

์ฝ”๋“œํ™” ๋Œ€์ƒ ํ•ญ๋ชฉ์˜ ๋ช…์นญ์ด๋‚˜ ์•ฝํ˜ธ์™€ ๊ด€๊ณ„์žˆ๋Š” ์ˆซ์ž๋‚˜ ๋ฌธ์ž, ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

ex) TV-40 : 40์ธ์น˜ TV 

ํ‘œ์˜ ์ˆซ์ž ์ฝ”๋“œ

(Significant Digit Code)

์ฝ”๋“œํ™” ๋Œ€์ƒ ํ•ญ๋ชฉ์˜ ์„ฑ์งˆ์˜ ๋ฌผ๋ฆฌ์  ์ˆ˜์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ์— ์ ์šฉ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•

ex) 120-720-1500 : ๋‘๊ป˜*ํญ*๊ธธ์ด๊ฐ€ 120*720*1500์ธ ๊ฐ•ํŒ  

ํ•ฉ์„ฑ ์ฝ”๋“œ

(Combined Code) 

ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ 2๊ฐœ ์ด์ƒ์˜ ์ฝ”๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• 

 

์ฝ”๋“œ ๋ถ€์—ฌ ์ฒด๊ณ„

์ด๋ฆ„๋งŒ์œผ๋กœ ๊ฐœ์ฒด์˜ ์šฉ๋„์™€ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹

- ๊ฐ ๊ฐœ์ฒด์— ์œ ์ผํ•œ ์ฝ”๋“œ๋ฅผ ๋ถ€์—ฌํ•ด ๊ฐœ์ฒด๋“ค์˜ ์‹๋ณ„ ๋ฐ ์ถ”์ถœ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•จ

- ์ฝ”๋“œ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ ์ „์— ๊ฐ ๋‹จ์œ„ ์‹œ์Šคํ…œ์˜ ๊ณ ์œ ํ•œ ์ฝ”๋“œ์™€ ๊ฐœ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ ๋“ฑ์ด ์ •์˜๋˜์–ด์•ผ ํ•จ

- ์ฝ”๋“œ ๋ถ€์—ฌ ์ฒด๊ณ„๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ž๋Š” ์ฝ”๋“œ์˜ ์ž๋ฆฟ์ˆ˜์™€ ๊ตฌ๋ถ„์ž, ๊ตฌ์กฐ ๋“ฑ์„ ์ƒ์„ธํ•˜๊ฒŒ ๋ช…์‹œํ•ด์•ผ ํ•จ

 

 

26. ๋””์ž์ธ ํŒจํ„ด

 

๋””์ž์ธ ํŒจํ„ด

๊ฐ ๋ชจ๋“ˆ์˜ ์„ธ๋ถ„ํ™”๋œ ์—ญํ• ์ด๋‚˜ ๋ชจ๋“ˆ๋“ค ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ˆ˜์ค€์˜ ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„ ๋ฐฉ์•ˆ์„ ์„ค๊ณ„ํ•  ๋•Œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์‹, ์˜ˆ์ œ

- ๋””์ž์ธ ํŒจํ„ด์€ GoF(Gang of Four, ์—๋ฆญ ๊ฐ๋งˆ, ๋ฆฌ์ฐจ๋“œ ํ—ฌ๋ฆ„, ๋ž„ํ”„ ์กด์Šจ, ์กด ๋ธ”๋ฆฌ์‹œ๋””์Šค)๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์ฒดํ™” ๋ฐ ์ฒด๊ณ„ํ™” ํ•จ

- GoF์˜ ๋””์ž์ธ ํŒจํ„ด์€ ์œ ํ˜•์— ๋”ฐ๋ผ ์ƒ์„ฑ ํŒจํ„ด 5๊ฐœ, ๊ตฌ์กฐ ํŒจํ„ด 7๊ฐœ, ํ–‰์œ„ ํŒจํ„ด 11๊ฐœ ์ด 23๊ฐœ์˜ ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑ๋จ 

    

์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด : ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ ๋ชจ๋ธ

๋””์ž์ธ ํŒจํ„ด : ์„œ๋ธŒ์‹œ์Šคํ…œ์— ์†ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ๊ทธ ๊ด€๊ณ„๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ ๋ชจ๋ธ

- ๋ช‡๋ช‡ ๋””์ž์ธ ํŒจํ„ด์€ ํŠน์ • ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ

- ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ๋””์ž์ธ ํŒจํ„ด๋ณด๋‹ค ์ƒ์œ„ ์ˆ˜์ค€์˜ ์„ค๊ณ„์— ์‚ฌ์šฉ๋จ

 

์ƒ์„ฑ ํŒจํ„ด(Creational Pattern)

๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ •์„ ์บก์Šํ™” ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์–ด๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์—ฐ์„ฑ ๋”ํ•ด์คŒ

 

- ์ถ”์ƒ ํŒฉํ† ๋ฆฌ(Abstract Factory) : ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ด€, ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ ์ƒ์„ฑํ•ด ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„

- ๋นŒ๋”(Builder) : ์ž‘๊ฒŒ ๋ถ„๋ฆฌ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฑด์ถ• ํ•˜๋“ฏ์ด ์กฐํ•ฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ

- ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ(Factory Method) : ๊ฐ์ฒด ์ƒ์„ฑ์„ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ถ„๋ฆฌํ•˜์—ฌ ์บก์Šํ™”ํ•œ ํŒจํ„ด

- ํ”„๋กœํ† ํƒ€์ž…(Prototype) : ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ„ด

- ์‹ฑ๊ธ€ํ†ค(Singleton) : ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์–ด๋””์„œ๋“  ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Œ

 

 

๊ตฌ์กฐ ํŒจํ„ด(Structural Pattern)

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•ด ๋” ํฐ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด

 

- ์–ด๋Œ‘ํ„ฐ(Adapter) : ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ํด๋ž˜์Šค๋“ค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํŒจํ„ด

- ๋ธŒ๋ฆฌ์ง€(Bridge) : ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ์ธต์„ ๋ถ„๋ฆฌํ•ด ์„œ๋กœ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ํŒจํ„ด

- ์ปดํฌ์ง€ํŠธ(Composite) : ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง„ ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๋‹จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ ์—†์ด ๋‹ค๋ฃจ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด

- ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(Decorator) : ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๋Šฅ๋™์  ๊ธฐ๋Šฅ๋“ค์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด

- ํผ์‹ธ๋“œ(Facade) : ๋ณต์žกํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์„ ํ”ผํ•ด ๋” ์ƒ์œ„์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•จ์œผ๋กœ์จ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์˜ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด

- ํ”Œ๋ผ์ด์›จ์ดํŠธ(Flyweight) : ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ํŒจํ„ด

- ํ”„๋ก์‹œ(Proxy) : ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด์™€ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๊ฐ์ฒด ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ•  ์ˆ˜ํ–‰ํ•˜๋Š” ํŒจํ„ด

 

  

ํ–‰์œ„ ํŒจํ„ด(Behavioral Pattern)

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋กœ ๋ถ„๋ฐฐํ•˜๋ฉด์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํŒจํ„ด

 

- ์ฑ…์ž„ ์—ฐ์‡„(Chain of Responsibility) : ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‘˜ ์ด์ƒ ์กด์žฌํ•˜์—ฌ ํ•œ ๊ฐ์ฒด๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋‹ค์Œ ๊ฐ์ฒด๋กœ ๋„˜์–ด๊ฐ€๋Š” ํ˜•ํƒœ์˜ ํŒจํ„ด

- ์ปค๋ฉ˜๋“œ(Command) : ์š”์ฒญ์„ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์žฌ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์— ๋‚จ๊ธฐ๋Š” ํŒจํ„ด

- ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter) : ์–ธ์–ด์— ๋ฌธ๋ฒ• ํ‘œํ˜„์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

- ๋ฐ˜๋ณต์ž(lterator) : ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ๊ฐ™์ด ์ ‘๊ทผ์ด ์žฆ์€ ๊ฐ์ฒด ๋Œ€ํ•ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด

- ์ค‘์žฌ์ž(Mediator) : ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Šํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋กœ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

- ๋ฉ”๋ฉ˜ํ† (Memento) : ํŠน์ • ์‹œ์ ์—์„œ์˜ ๊ฐ์ฒด ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ์ฒดํ™”ํ•˜๋ฏ€๋กœ์จ ์ดํ›„ ์š”์ฒญ์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ํ•ด๋‹น ์‹œ์ ์˜ ์ƒํƒœ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด

- ์˜ต์„œ๋ฒ„(Observer) : ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ๊ฐ์ฒด์— ์ƒ์†๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์—๊ฒŒ ๋ณ€ํ™”๋œ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํŒจํ„ด

- ์ƒํƒœ(State) : ๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ผํ•œ ๋™์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด

- ์ „๋žต(Strategy) : ๋™์ผํ•œ ๊ณ„์—ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์ƒํ˜ธ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

- ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ : ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ณจ๊ฒฉ์„ ์ •์˜ํ•˜๊ณ , ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์„ธ๋ถ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜๋Š” ๊ตฌ์กฐ์˜ ํŒจํ„ด

- ๋ฐฉ๋ฌธ์ž(Visitor) : ๊ฐ ํด๋ž˜์Šค๋“ค์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด

728x90
๋ฐ˜์‘ํ˜•