๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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

(2)
[OOP] ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›๋ฆฌ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›๋ฆฌ 1. SOLID SOLID๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›๋ฆฌ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹ค์„ฏ๊ฐ€์ง€ ์›๋ฆฌ SRP(Single Responsibility Principle), OCP(Open-Closed Principle), LSP(LIskov Substitution Principle), ISP(Interface Substitution Principle), DIP(Dependency Inversion Principle)๋ฅผ ๋งํ•œ๋‹ค. 1.1 SRP ๋‹จ์ผ ์ฑ…์ž„ ์›๋ฆฌ A class should have only one reason to change. ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„ค๊ณ„ ์›๋ฆฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋ชจ๋“ˆ์€ ์‘์ง‘์„ฑ์ด ๋†’์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (high-cohesion) ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ธฐ๋ณธ ๋ชจ๋“ˆ์€ ํด๋ž˜์Šค์ด๋‹ค. SRP์—..
[OOP]๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 1. ์—ญ์‚ฌ ๊ฐ์ฒด์ง€ํ–ฅ(OO, Object-Oriented) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ง€๋ฐฐ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž๋ฆฌ์žก๊ธฐ ์ด์ „์— ๋„๋ฆฌ ์‚ฌ์šฉ๋œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” FORTRAN, COBOL ๋“ฑ์ด๋‹ค. C ์–ธ์–ด๋Š” 1972๋…„์— Bell Labs์˜ Dennis Ritchie๊ฐ€ ๊ฐœ ๋ฐœํ•œ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. C ํ‘œ์ค€์€ 1983๋…„์— ์‹œ์ž‘๋˜์–ด 1988๋…„์— ์ฒ˜์Œ์œผ๋กœ ํ‘œ์ค€ํ™”๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ANSI C ๋˜๋Š” ISO C๋ผ ํ•œ๋‹ค. ๊ทธ ์ดํ›„ C99, C11์œผ๋กœ ํ‘œ์ค€์ด ์ผ๋ถ€ ๊ฐœ์„ ๋˜์—ˆ๋‹ค. C ์–ธ์–ด๋Š” ์šด์˜์ฒด์ œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด๋กœ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด์ง€๋งŒ ํ•˜๋“œ์›จ์–ด์™€ ๋ฐ€์ ‘ํ•œ ์ˆ˜์ค€์˜ ์š”์†Œ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋˜ํ•œ ๋‹น์‹œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ์‘์šฉ์ด ๋งค์šฐ ์ œํ•œ์ ์ด์—ˆ๋‹ค. ์ง€๊ธˆ์˜ 4์ฐจ ์‚ฐ์—…ํ˜๋ช…, ..