์ค๋ธ์ ํธ17 [์ค๋ธ์ ํธ] 11์ฅ 'ํฉ์ฑ๊ณผ ์ ์ฐํ ์ค๊ณ' 11์ฅ์์๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ ๋ฐฉ๋ฒ์ผ๋ก ํฉ์ฑ์ ๋ํด ์๊ฐํ๋ค. ์์์ด ๊ตฌํ์ ๋ํ ๋์ ๊ฒฐํฉ๋๋ฅผ ์ ๋ฐํ๋ ๋ฐ ๋ฐํด ํฉ์ฑ์ ์ฌ์ฉํ๋ฉด ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค์ ๋ํด ๋์จํ ๊ฒฐํฉ๋๋ฅผ ์ ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๊ณ๋ฅผ ์ ์ฐํ๊ฒ ๋ง๋ค ์ ์๋ค๋ ์ฌ์ค์ ์ค๋ช ํ๋ค. ๊ตฌ๋ถ ์์ (class inheritance) ํฉ์ฑ (object composition) ์ฝ๋ ์ฌ์ฌ์ฉ ๋ฐฉ๋ฒ ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฐ๊ฒฐ ์ ์ฒด๋ฅผ ํํํ๋ ๊ฐ์ฒด๊ฐ ๋ถ๋ถ์ ํํํ๋ ๊ฐ์ฒด ํฌํจ -> ๋ถ๋ถ ๊ฐ์ฒด ์ฝ๋ ์ฌ์ฌ์ฉ ์์กด์ฑ ์ปดํ์ผํ์์ ํด๊ฒฐ๋จ -> ์ปดํ์ผํ์์ ๊ฒฐ์ ๋ ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค ์ฌ์ด์ ๊ด๊ณ๋ ๋ณ๊ฒฝ ๋ ์ ์์ -> ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค์ ๋ค์ํ ์กฐํฉ์ด ํ์ํ ๊ฒฝ์ฐ ์กฐํฉ์ ์๋งํผ ์๋ก์ด ํด๋์ค๋ฅผ ์ถ๊ฐํด์ผ ํจ -> ํด๋์ค ํญ๋ฐ/์กฐํฉ์ ํญ๋ฐ ๋ฌธ์ ์ผ.. 2022. 12. 23. [์ค๋ธ์ ํธ] 10์ฅ '์์๊ณผ ์ฝ๋ ์ฌ์ฌ์ฉ' 10์ฅ์์๋ ๊ฐ์ฒด์งํฅ์ ๋ํ์ ์ธ ์ฌ์ฌ์ฉ ๊ธฐ๋ฒ์ธ ์์์ ๊ดํด ์ค๋ช ํ๋ฉฐ ์ฝ๋์ ์ฌ์ฌ์ฉ์ ์ํด ์์์ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ์กฐ์ธํ๋ค. ๋์ 11์ฅ์ ์ค๋ช ํ ํฉ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ฐ๋ฐ์๋ DRY(Don't Repeat Yourself) ์์น์ ๋ฐ๋ผ ์ฝ๋ ์์ ์ค๋ณต์ด ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํ๋ค. ๋ ํด๋์ค ์ฌ์ด์ ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์? 1. ํด๋์ค๋ฅผ ํ๋๋ก ํฉ์น๊ณ ํ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ๋ค ๋ก์ง์ ํ์ ์ฝ๋์ ๋ฐ๋ผ ๋ถ๊ธฐํ๋ ๊ฒ์ด๋ค. -> ๋จ, ์ด ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค๋ ๋ฎ์ ์์ง๋์ ๋์ ๊ฒฐํฉ๋ ๋ฌธ์ ์ ์๋ฌ๋ฆฌ๊ฒ ๋จ 2. ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ค๋ณต ์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์์์ด๋ค. ์์์ด๋? - ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด ์๋ก์ด ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ - ํด๋.. 2022. 12. 16. [์ค๋ธ์ ํธ] 9์ฅ '์ ์ฐํ ์ค๊ณ' 9์ฅ์์๋ ์ด์ ์ ์ค๋ช ํ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์๋ ์ค๊ณ ์์น์ ๊ทผ๊ฑฐํด ๋ค์ ์ค๋ช ํ๋ค. ์ ๋ฒ์ฃผ์ ๋์์ธ ํจํด์์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณต๋ถํ ๋ ์ดํด๊ฐ ์ ์ ๋์๋๋ฐ, ์ด๋ฒ ์ค๋ธ์ ํธ 9์ฅ์ ์ฝ์ผ๋ฉด์ ์ ์์ฑํ๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋์ง์ ๋ํ ์ด์ ๋ฅผ ์๊ฒ ๋์๋ค. ์ด๊ฒ๋ ์ญ์ ๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ, ์ฆ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด์์ธ๋ฐ ์์กด์ฑ ๋ณ๊ฒฝ์ ์ํฅ์ ์ต์ํ ํ๊ธฐ์ํด ์ถ์ํ์๋ง ์์กดํ๊ฒ ๋ง๋ค๋ ค๋ฉด ๊ฐ์ฒด๊ฐ ๊ตฌ์ฒด ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ์ ๋๋ค. ๊ทธ๋์ ๋๋ฉ์ธ ๊ฐ๋ ์ ํ ๋น๋ผ ์๋ ๊ฐ์ฒด ์์ฑ ์ฑ ์์ ๋๋ฉ์ธ ๊ฐ๋ ๊ณผ ์๋ฌด ์๊ด์ด ์๋ ๊ฐ๊ณต์ ๊ฐ์ฒด, factory๋ก ์ฎ๊ธด ๊ฒ์ด๋ค. ๊ฐ๋ฐฉ ํ์ ์์น (Open-Closed Principle, OCP) - ํ์ฅ์๋ ์ด๋ ค์๊ณ , ์์ ์๋ ๋ซ.. 2022. 12. 9. [์ค๋ธ์ ํธ] 8์ฅ '์์กด์ฑ ๊ด๋ฆฌํ๊ธฐ' 8์ฅ์์๋ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค๋ฃฌ๋ค. ์์กด์ฑ์ ๋ฐํ์ ์์กด์ฑ๊ณผ ์ปดํ์ผํ์ ์์กด์ฑ์ผ๋ก ๋๋ ์ ์๋ค. ๋ฐํ์ ์์กด์ฑ(run-time dependency) - ๊ฐ์ฒด ์ฌ์ด์ ์์กด์ฑ ์ปดํ์ผํ์ ์์กด์ฑ(compile-time dependency) - ํด๋์ค ์ฌ์ด์ ์์กด์ฑ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ค๊ณ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ์ปดํ์ผํ์ ์์กด์ฑ๊ณผ ๋ฐํ์ ์์กด์ฑ์ด ๋ฌ๋ผ์ผ ํ๋ค(p.260) ๊ทธ๋ผ ์ด๋ป๊ฒ ์ปดํ์ผํ์ ์์กด์ฑ๊ณผ ๋ฐํ์ ์์กด์ฑ์ ๋ค๋ฅด๊ฒ ํ ์ ์์๊น? ์์กด์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง๊ฐ ์๋ค. 1. ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ ์ ์์ฑ์๋ฅผ ํตํด ์์กด์ฑ ํด๊ฒฐ 2. ๊ฐ์ฒด ์์ฑ ํ setter ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ ํด๊ฒฐ 3. ๋ฉ์๋ ์คํ ์ ์ธ์๋ฅผ ์ด์ฉํด ์์กด์ฑ ํด๊ฒฐ ์ฌ๊ธฐ์ 2๋ฒ setter ๋ฉ์๋๋ง ์ฌ์ฉํ๋.. 2022. 12. 2. [์ค๋ธ์ ํธ] 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. ์ด์ 1 2 3 ๋ค์