๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์˜ค๋ธŒ์ ํŠธ

[์˜ค๋ธŒ์ ํŠธ] ๋ถ€๋ก B, C 'ํƒ€์ž… ๊ณ„์ธต์˜ ๊ตฌํ˜„', '๋™์ ์ธ ํ˜‘๋ ฅ, ์ •์ ์ธ ์ฝ”๋“œ'

by moon101 2023. 2. 10.
๋ถ€๋ก B๋Š” ์ƒ์†์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. 
๋ถ€๋ก C๋Š” ๋™์ ์ธ ํ˜‘๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. 

 

ํƒ€์ž… ๊ณ„์ธต์˜ ๊ตฌํ˜„

ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต ๊ตฌํ˜„

  • ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…(user-defined data type)์ด๊ณ , ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž…๊ณผ ๊ตฌํ˜„์„ ๋™์‹œ์— ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 
  • ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต์€ ์ƒ์†์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ƒ์†์„ ์ด์šฉํ•  ๊ฒฝ์šฐ, ์ž์‹ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ตฌํ˜„๊ณผ ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ๋‘ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ํƒ€์ž… ๊ณ„์ธต์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž์‹ํด๋ž˜์Šค์™€ ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋„๋ก์ด๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ ํƒ€์ž… ๊ณ„์ธต์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต ๊ตฌํ˜„

  • ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ํƒ€์ž…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ํƒ€์ž…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ณ„์ธต ๊ตฌํ˜„

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

์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ๊ฒฐํ•ฉํ•˜๊ธฐ

  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ํŠน์ • ์ƒ์† ๊ณ„์ธต์— ๊ตญํ•œ๋œ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด ์ค‘๋ณต์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณจ๊ฒฉ ๊ตฌํ˜„ ์ถ”์ƒ ํด๋ž˜์Šค(skeletal implementation abstract class)๋ผ๊ณ  ํ•œ๋‹ค. 

 

์ž๋ฐ” 8์˜ ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ

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

์–ด๋–ค ํƒ€์ž…์ด ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์„œ๋ธŒํƒ€์ž…์ด ๋˜๋ ค๋ฉด ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค. 

 

 

๋™์ ์ธ ํ˜‘๋ ฅ, ์ •์ ์ธ ์ฝ”๋“œ

 

๋™์  ๋ชจ๋ธ(dynamic model) : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์›€์ง์ด๋Š” ๋ชจ๋ธ, ๊ฐ์ฒด์™€ ํ˜‘๋ ฅ์œผ๋กœ ๊ตฌ์„ฑ๋จ

์ •์  ๋ชจ๋ธ(static model) : ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋‹ด๋Š” ๊ณ ์ •๋œ ๋ชจ๋ธ, ํƒ€์ž…๊ณผ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ๋จ

 

์ข‹์€ ์„ค๊ณ„๋ž€ ๊ฐ์ฒด ์‚ฌ์ด์˜ ํ˜‘๋ ฅ๊ณผ ํ–‰๋™์„ ํ‘œํ˜„ํ•˜๋Š” ๋™์  ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ํ•œ๋‹ค(p.602).

 

๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ž€?

  • ๋„๋ฉ”์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ƒ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ๋ชจ๋ธ์ด๋ž€ ์ง€์‹์„ ์„ ํƒ์ ์œผ๋กœ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์˜์‹์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•œ ํ˜•ํƒœ์ด๋‹ค.
  • ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ƒ ์˜์—ญ์— ๋Œ€ํ•œ ์ง€์‹์„ ์„ ํƒ์ ์œผ๋กœ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์˜์‹์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•œ ํ˜•ํƒœ์ด๋‹ค. 

๋ถ„์„ ๋ชจ๋ธ, ์„ค๊ณ„ ๋ชจ๋ธ, ๊ทธ๋ฆฌ๊ณ  ๊ตฌํ˜„ ๋ชจ๋ธ, ์ „์ฒด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๊ฑธ์ณ ํ–‰๋™๊ณผ ๋ณ€๊ฒฝ์— ์ดˆ์ ์„ ๋งž์ถ”์–ด ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. 

 

๋Œ“๊ธ€