์คํฐ๋45 [์ค๋ธ์ ํธ] 7์ฅ '๊ฐ์ฒด ๋ถํด' 7์ฅ์์๋ ์ถ์ํ์ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ธ ๋ถํด์ ์ญ์ฌ์ ๋ํด ๋ฐฐ์ธ ์ ์๋ค. ์ถ์ํ๋ ํ๋ก์์ ์ถ์ํ(procedure abstraction)์ ๋ฐ์ดํฐ ์ถ์ํ(data abstraction)๋ก ๋๋ ์ ์๋๋ฐ ๊ฐ์ฒด์งํฅ์ ํ๋ก์์ ์ถ์ํ์ด๋ค. ๊ฐ์ฒด์งํฅ์์๋ ํ์ ๋ณ์๋ฅผ ์ด์ฉํ ์กฐ๊ฑด๋ฌธ์ ๋คํ์ฑ์ผ๋ก ๋์ฒดํ๋ค. -> replace type code with class ์ค๊ณ์ ๋ณ๊ฒฝ์ ํ์ ์ถ๊ฐ์ ์คํผ๋ ์ด์ ์ถ๊ฐ๋ก ๊ตฌ๋ถํ ์ ์๊ณ ํ์ ์ถ๊ฐ์ ๊ฒฝ์ฐ, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ ์๋ก์ด ํด๋์ค๋ฅผ ์์ ๊ณ์ธต์ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. ์คํผ๋ ์ด์ ์ถ๊ฐ์ ๊ฒฝ์ฐ, ์์ ๊ณ์ธต์ ์ํ๋ ๋ชจ๋ ํด๋์ค๋ฅผ ํ๋ฒ์ ์์ ํด์ผ ํ๋ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ณด๋ค๋ ์ถ์ ๋ฐ์ดํฐ ํ์ ์ด ๋ณ๊ฒฝ์ ์ฉ์ดํ๋ค. ์ถ์ ๋ฐ์ดํฐ๋ ์ ์ฒด ํ์ ์ ๋ํ ๊ตฌํ ์ฝ๋๊ฐ ํ๋์.. 2022. 11. 25. [์ค๋ธ์ ํธ] 6์ฅ '๋ฉ์์ง์ ์ธํฐํ์ด์ค' 6์ฅ์์๋ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค(๊ฐ์ฒด๊ฐ ์์ ํ๋ ๋ฉ์์ง)๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ค๊ณ ์์น์ ์๋ ค์ค๋ค. - ๋๋ฏธํฐ ๋ฒ์น - ๋ฌป์ง ๋ง๊ณ ์์ผ๋ผ - ์๋๋ฅผ ๋๋ฌ๋ด๋ ์ธํฐํ์ด์ค - ๋ช ๋ น-์ฟผ๋ฆฌ ๋ถ๋ฆฌ ์์น ์ค๊ณ ์์น์ ์กฐํฉํ๋ฉด ์ง๊ด์ ์ด๊ณ , ์์ธก ๊ฐ๋ฅํ๋ฉฐ, ์ ์ฐํ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๋ค. ๋ฉ์์ง = ์คํผ๋ ์ด์ ๋ช + ์ธ์ ๋ฉ์์ง ์ ์ก = ์คํผ๋ ์ด์ ๋ช + ์ธ์ + ๋ฉ์์ง ์์ ์ ์๊ทธ๋์ฒ = ์คํผ๋ ์ด์ (๋ฉ์๋)๋ช + ํ๋ผ๋ฏธํฐ๋ชฉ๋ก ๋๋ฏธํฐ ๋ฒ์น ํ๋ ฅํ๋ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํ ๊ฒฐํฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ค๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ์๋ ์์น -> ์ (.)์ ํ๋๋ง ์ฌ์ฉํ์ use only one dot // ์์ข์ ์ (train wreck) screening.getMovie().getDiscountConditions(); .. 2022. 11. 18. [์ค๋ธ์ ํธ] 5์ฅ '์ฑ ์ ํ ๋นํ๊ธฐ' 5์ฅ์ GRASP ์ฑ ์ํ ๋นํจํด์ ๋ํด์ ์ค๋ช ํ๊ณ , ์ฑ ์์ ์ค์ฌ์ผ๋ก ์ค๊ณ๋ฅผ ํ๋ ๊ฒ์ด ์บก์ํ, ์์ง๋, ๊ฒฐํฉ๋ ๊ด์ ์์ ์ค๊ณ๋ฅผ ๊ฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค. ๊ฐ์ฒด ๋์์ธ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๊ฒ ์ค์ ํ๋๋ ์ฑ ์์ ์ด๋์ ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค. ๋๋ ์ญ๋ ์ด์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ผํ์ง๋ง ์ฒ์ ์์ํ ๋๋ ์ฌ์ ํ ์ ๋นํ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ๋ ์ด๋ฐ ์ ์ด ๋๋ฅผ ๊ดด๋กญํ์ง๋ง, ์ด์ ๋ ์ด๋ฐ ๊ฒฝ์ฐ์ ๋ฆฌํฉํฐ๋ง์ ์ฌ์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค [Fowler 1999a](p.166). GRASP "General Responsibility Assignment Software Pattern (์ผ๋ฐ์ ์ธ ์ฑ ์ ํ ๋น์ ์ํ ์ํํธ์จ์ด ํจํด)" INFORMATION EXPERT(์ ๋ณด ์ ๋ฌธ๊ฐ) ํจํด - ์ฑ ์์ ์ํํ ์ ๋ณด๋ฅผ .. 2022. 11. 11. ํค๋ ํผ์คํธ ๋์์ธ ํจํด ๋์์ธ ํจํด์ ์์ฑ ํจํด, ํ๋ ํจํด, ๊ตฌ์กฐ ํจํด์ผ๋ก ๊ตฌ๋ถํด์ ์๊ฐํด ๋ณด์์ผ ํ๋ค. 2022.11.05(ํ ) ์ฑํฐ 1 - Strategy Pattern (์ ๋ต ํจํด) ์๋ฐ ์ธํฐํ์ด์ค๋ ๊ตฌํ๋ถ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ฌํ์ฉํ ์ ์๋ค. (Java interfaces have no implementation code, so no code reuse) -> ์ฆ, ํ๋์ ์์ ํ๋ ค๋ฉด ํ๋์ด ์ ์๋ ์์ํด๋์ค ๋ํ ๋ค ์์ ํด์ผ ํ๋ค. ๋์์ธ ์์น์ ๊ธฐ๋ณธ์ ๋ณํํ๋ ๊ฒ๊ณผ ๋ณํ์ง ์๋ ๊ฒ์ ๊ตฌ๋ถํ๋ ๊ฒ์ด๋ค. ๋ ๋ค๋ฅธ ์์น์ ๊ตฌํ์ด ์๋ ์ธํฐํ์ด์ค๋ฅผ ํ๋ก๊ทธ๋จํ๋ ๊ฒ์ด๋ค. (program to an interface, in other words, program to a supertype) Composition์ด inheri.. 2022. 11. 5. [์ค๋ธ์ ํธ] 4์ฅ '์ค๊ณ ํ์ง๊ณผ ํธ๋ ์ด๋์คํ' 4์ฅ์์๋ ์ํ ์๋งค ์์คํ ์ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ(๋ฐ์ดํฐ ์ค์ฌ)์ผ๋ก ๊ตฌํํ๊ณ ์บก์ํ, ์์ง๋, ๊ฒฐํฉ๋๋ก ์ฝ๋๋ฅผ ํ๊ฐํด ๋ณธ๋ค. 2์ฅ ์ฝ๋๊ฐ ์ด๋ ค์์ 4์ฅ๋ ๋ฏธ๋ฆฌ ๊ฒ๋จน์๋๋ฐ ์๊ฐ๋ณด๋ค ์ดํดํ๊ธฐ ์ฌ์ ๋ค. ํ์คํ ๋น๊ตํด์ ๋ณด๋๊น ์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋์ง ์ ์ ์์๋ค. ์ง์ ํ ์บก์ํ๋? ๋จ์ํ ์ธ์คํด์ค ๋ณ์๋ฅผ private๋ก ๋ณ๊ฒฝํ๊ณ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก public ๊ฒํฐ/์ธํฐ๋ฅผ ๋ง๋ค์ด ๋๋๊ฑด ์ง์ ํ ์๋ฏธ์ ์บก์ํ๋ ์๋๋ค. ์บก์ํ๋ ๋ณ๊ฒฝ๋ ์ ์๋ ์ด๋ค ๊ฒ์ด๋ผ๋ ๊ฐ์ถ๋ ๊ฒ์ด๊ณ , ๋ด๋ถ ์์ฑ์ ์ธ๋ถ๋ก๋ถํฐ ๊ฐ์ถ๋ ๊ฒ์ '๋ฐ์ดํฐ ์บก์ํ'์ด๋ค. ํ์ง๋ง ์ฑ ์์ ์ค๋ช ํ๋ฏ์ด ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ด๋ถ ์์ฑ์ ์ ์ ์๋ค๋ ๊ฑด ๋ด๋ถ ๊ตฌํ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ, ์ด ๋ฉ์๋๋ฅผ.. 2022. 11. 4. Garbage Collection in Java ๊ฐ๋น์ง ์ฝ๋ ์ ์ด๋? ํ์ ์๋ ์ ์ฐ๋ ๊ฐ์ฒด๋ค์ ์๋ฐ๊ฐ ์์์ ์ฒญ์ํด ์ฃผ๋ ๊ฒ์ด๋ผ๊ณ ์๊ณ ์์๋๋ฐ ๊ฒ์์ ํด๋ณด๋...... ์ด๋ ๊ฒ ์ฝ๊ฒ ๋๋ผ ์ ์๋ GC๊ฐ ์๋์๋ค..๐ฅ Garbage Collection์ด๋? ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฐธ์กฐ(reference)๋์ง ์๋ ๊ฐ์ฒด๋ค์ ์ ๋ฆฌํด ์ค์ RAM์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ๋ค. ์ ํํ๋ Heap ์์ญ์ธ๋ฐ, ๋ชจ๋ ๊ฐ์ฒด๋ Heap์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ผ๋ก ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ ์ฒซ ๋ฒ์งธ๋ก๋ Responsiveness, ๋ ๋ฒ์งธ๋ Throughput์ด๋ค. ์ค๋ช ์ ํ์๋ฉด, Responsiveness๋ ์ผ๋ง๋ ๋น ๋ฅธ ์๊ฐ ์์ ์์ฒญํ ๋ฐ์ดํฐ์ ๋ํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ตํ๋๊ฐ์ด๊ณ Throughput์ ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์ฒ๋ฆฌํ ์ ์๋ ์์ ์ด์ .. 2022. 10. 28. ์ด์ 1 ยทยทยท 4 5 6 7 8 ๋ค์