Search
moon
sun
๐Ÿ›น

Object Oriented software design principle?

Category
as S/W ์—”์ง€๋‹ˆ์–ด
Tags
C++
์œ ์ง€๋ณด์ˆ˜์„ฑ
Object Oriented
OOP
Created time
2005/07/09
๊ธฐ์–ตํ•ด ๋‘๊ฑฐ๋ผ. ์ถ”์ƒํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ์ด๋ž€ ๊ฐœ๋…์„ ์•Œ์•˜๋‹ค๊ณ  ํ•ด์„œ ๋„ค๊ฐ€ ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹์ง€์–ด๋‹ค. ์ง„์ •ํ•œ ๊ตฌ๋ฃจ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉดย ์œ ์—ฐ์„ฑ์„ ๊ฐ–๋„๋ก ์„ค๊ณ„๋ฅผ ํ•˜์—ฌ,ย ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ณ ย ๋ณ€ํ™”์— ๋Šฅ๋™์ ์œผ๋กœ ๋Œ€์‘ํ•  ์ง€์— ๊ด€ํ•ด ๊ณ ๋ฏผ์„ ํ•œ๋‹ค. (์•Œ๊ฒ ๋А๋‡จ?) Remember, knowing concepts abstraction, inheritance, and polymorphism do not make you a good object oriented designer. A design guru thinks about how to createย flexibleย designs that areย maintainableย and that can cope withย change.
guruํ‹ฑํ•œ ์ž์„ธ๋กœ ์•‰์•„์žˆ๋Š” ์–ด๋–ค ์ธ๋„์—ฌ์ž ์™ˆ(in Head First Design Pattern)
Stroustrup ์ด C๋ฅผ ์ œ๊ปด๋†“๊ณ  C++๋ฅผ ๋งŒ๋“ค ๋•Œ ์ถ”๊ตฌํ–ˆ๋˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ์†๋„ ํ–ฅ์ƒ์ด ์•„๋‹ˆ๋ผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์ด ์•„๋‹ˆ์—ˆ์„๊นŒ? ๋‹ค์‹œ ๋งํ•˜์ž๋ฉด ๊ทธ์˜ ๋ชฉํ‘œ๋Š” C๋ณด๋‹ค ๋‚˜์€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ฐ–์ถ˜ ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ์žˆ์ง€ ์•Š์•˜์„๊นŒ?
์•„๋‹ˆ ์ข€๋” ์ผ๋ฐ˜ํ™”ํ•˜์—ฌ, Object Oriented Programming์ด๋ผ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ์—๋Š” ๋ณด๋‹ค ๋‚˜์€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ฐ–์ถ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๋Š” ๋ชฉํ‘œ๊ฐ€ ๋‹ด๊ฒจ์žˆ์ง€ ์•Š์•˜์„๊นŒ?
๊ทธ๋Ÿฌํ•œ ์ตœ์ข… ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋“ค(OOP์˜ ์„ ๊ตฌ์ž๋“ค)์€ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ(readibility)์„ ๋†’์ด๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์•˜์„๊นŒ?
์  ์žฅ.. ๋‹น์žฅ์— ์“ฐ๊ณ ์žˆ๋Š” ์–ธ์–ด, ๋‚ด ๋ฐฅ์ค„์„ ์žก๊ณ  ์žˆ๋Š” ์–ธ์–ด.. ์—ฌ๊ธฐ์— ๋‹ด๊ธด ์ œ์ž‘์ž์˜ ์˜๋„๋ฅผ ์ด์ œ์„œ์•ผ ํŒŒ์•…ํ•˜๋ ค ํ•˜๊ณ  ์žˆ๋‹ค.. ํ—ํ—..
p.s. ๋งŒ์•ฝ ๋‚˜์˜ ์ƒ๊ฐ์ด ๋งž๋‹ค๋ฉด.. ๊ทธ๋“ค ์—ญ์‹œ ๋‚˜์ฒ˜๋Ÿผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ๋ฐ์— ๋˜ฅ๋น ์ง€๋„๋ก ๊ณ ์ƒํ•˜์˜€์„ ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๋‹ค.. ์˜ค์ฃฝ ๊ณ ์ƒํ–ˆ์œผ๋ฉด ์ž˜๋‚˜๊ฐ€๋˜ ์–ธ์–ด(C)๋ฅผ ๋†”๋‘๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค ์ƒ๊ฐ๊นŒ์ง€๋‚˜ ํ–ˆ๊ฒ ์–ด?