java50 2022.04.25์ ๊ธฐ๋ก โถ ํํธ 1 (2์ ~ 12์) 1. ํ ์คํธ ์ฝ๋ ์์ 2. ๋ ธ์ ์๊ธฐ์๊ฐ์ ์ ๋ฆฌ -> ๋ํ ์ผํ ๋ถ๋ถ ์ถ๊ฐํด๋ณด์ 3. Spring ๊ฐ๋ ์ ๋ฆฌ 4. mysql ์ตํฐ๋ง์ด์ ์ ํํธ 5. wiki ์์ 6. ๊ฐ๋ , ์์์, ํ๋ก์ ํธ ๊ณํ ๊ฒ์ 7. ์๊ณ ๋ฆฌ์ฆ 1๋ฌธ์ โท ํ ์คํธ ์ฝ๋ ๋ฌธ์ : ํ๋์ ๊ฐ๋ง ์์๋ก ๋น๊ตํ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ง๋ง 3๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ํ ์คํธํ๋ฉด ์ข๊ฒ ๋ค ํด๊ฒฐ : Static ๋ฉ์๋๋ฅผ ํ๋ ์ ์ธํ์ฌ ์ ๋ ฅ ์ ์ ๊ฐ๊ณผ ๊ธฐ๋ ๊ฐ์ ๋น๊ตํ๋ ํ ์คํธ๋ก ์์ ํ์๋ค. 2022. 4. 25. 2022.04.24์ ๊ธฐ๋ก โถ ํด์ผํ ์ผ 1. Gradle test code ์์ 2. mysql CH7. ๋ฐ์ดํฐ ์ํธํ ์ ๋ฆฌ, CH8. ์ธ๋ฑ์ค ์ค๊ฐ 3. Boot ํ๋ก์ ํธ ๊ตฌ์ (์ ์ฌ ๋จน๊ณ ์์๋ถ์) https://github.com/GroovyArea/Shop-with-SpringBoot/wiki 4. ์๊ณ ๋ฆฌ์ฆ 1๋ฌธ์ โท ํ ์คํธ ์ฝ๋ ๋ฌธ์ 1 : gameCount()๋ฅผ ํธ์ถ ํ ๋๋ง๋ค ์์ธ๊ฐ ๋ฐ์๋จ ํด๊ฒฐ : ์ ์ด๋ฌธ์ ํตํด ํด๊ฒฐ ๋ฌธ์ 2 : @ParameterizedTest ์งํ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ง์ด๋ฃ์ด์ฃผ์ง ์์ ํ ์คํธ ์ฝ๋ ๋ฌธ์ ๋ฐ์ 2022. 4. 24. 2022.04.22์ ๊ธฐ๋ก โถ ํํธ 1 (10์ ~ 7์) 1. Gradle Test ์ฝ๋ ์์ (PrintGameResult, ComputerNumber ๋ถ๋ถ) 2. ์์์ ์์ 3. Boot project ๊ตฌ์ 4. Spring MVC ๋ด๋ถ ๊ฐ๋ ์ ๋ฆฌ 5. ์๊ณ ๋ฆฌ์ฆ 1๋ฌธ์ (2๋ฌธ์ ) 6. mysql Ch5. ํธ๋์ญ์ , CH6. ๋ฐ์ดํฐ ์์ถ 7. ์ดํํฐ๋ธ ์๋ฐ ์์ดํ 1 ์ ๋ฆฌ โท ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ : ์ ์์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ import java.util.Arrays; class Solution { public long solution(long n) { long answer = 0; String number = String.valueOf(n); String stringNum = ""; char[] numArr = new char[num.. 2022. 4. 22. 2022.04.20 ์ ๊ธฐ๋ก โถ ์ค๋ ํ๋ฃจ ๊ณํ ํํธ 1 (11์ ~ 2์) 1. Gradle MVC ํ๋ก์ ํธ ํ ์คํธ ์ฝ๋ ๋ฆฌํฉํ ๋ง 2. Mysql 3๋จ์ ์ ๋ฆฌ ํํธ 2 (3์ ~ 1์) 1. ์คํ๋งMVC ๊ฐ๋ ์ ๋ฆฌ : ํธ๋ค๋ฌ ์ถ์ํด๋์ค๋ก ์ ์ด๋ฃจ์ด์ ธ ์๋์ง ๊ณ ๋ฏผํด๋ณด์ 3๊ฐ 2. ์คํ๋ง๋ถํธ ํ๋ก์ ํธ WIkI ์ ๋ฆฌ 3. ๋ ธ์ ์ด๋ ฅ์ ํ ํ๋ฆฟ ๋ฐ ์ด์ ์์ฑ 4. ๋์ปค 2๋ฌธ์ 5. ์๊ณ ๋ฆฌ์ฆ 1๋ฌธ์ 2022. 4. 20. 2022.04.16 ์ ๊ธฐ๋ก โถ ์ฃผ๋ง ๊ณํ 1. SpringMVC ์๊ฐ 2. Gradle test ํ๋ก์ ํธ intellij๋ก ๊น ์ฐ๋ 3. ์คํ๋ง ๋๋ต ๋ชปํ ์ง๋ฌธ ์ ๋ฆฌ 4. ์๊ธฐ์๊ฐ์ ์ ๋ณด๊ธฐ โถ ์ค๋ ํ ์ผ 1. SpringMVC 8,90ํผ์ผํธ 2. ๊น ํ๋ธ ์ฐ๋ 3. ํ์ด๋ ํ๋ก์ ํธ 3์ฐจ ์์ ๋ณธ war ํ์ผ ๊ฐ์ฌ๋๊ป ๋ฉ์ผ ์ ์ก 4. ํ๋ก๊ทธ๋๋จธ์ค 3๊ฐ ํ๊ธฐ 2022. 4. 16. 2022.03.14์ ๊ธฐ๋ก โถ 3์ผ ๊ณํ => ๊ณต๋ถ ๊ด๋ จ 1) ์์ ๋ด์ฉ ๋ณต์ต 2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง 3) ์คํ๋ง ๊ฐ์ ์๊ฐ => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ 1) ๋ ธ์ ์ ํผ๋๋ฐฑ ์ ๋ฆฌ โถ ๋ฌธ์ ์ ๋ฆฌ 1. ์ธํ ๋ฆฌ์ ์ด ๋ฉ์ด๋ธ ๋น๋ ํ jar ํ์ผ์ ์ฐพ๋ ๋์ค ์๋ฌ ๋ฐ์ > ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ ํด๊ฒฐ 2. ์ด๋ฆ ๊ฒ์์ FirstName์ผ๋ก ๋ฐ๊พธ๊ธฐ @GetMapping("/owners") public String processFindForm(@RequestParam(defaultValue = "1") int page, Owner owner, BindingResult result, Model model) { // allow parameterless GET request for /owners to return all records if (owner.. 2022. 3. 14. 2022.03.11~03.13์ ๊ธฐ๋ก โถ 3์ผ ๊ณํ=> ๊ณต๋ถ ๊ด๋ จ1) ์์ ๋ด์ฉ ๋ณต์ต2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง ์๋ฃ3) ๊ธฐ์ ์ง๋ฌธ ๋ต๋ณ ๋ ธ์ ์ ๋ฆฌ ๋ฐ SOLID ์์ ํ๋ก๊ทธ๋๋ฐ (OCP & DIP & ISP)4) 8๊ฐ์ ๋์์ธ ํจํด ์ ๋ฆฌ => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ1) ERD ๊ทธ๋ ค ๋๊ณ pdf๋ก ๋ง๋ค์ด๋๊ธฐ2) ์ด๋ฏธ์ง ์์ง ๋ง์ฐ์ค ๊ฑด์ ์ง ๋ฐ๊ฟ๋ผ!! [์๋ฃ]โถ ๋ฌธ์ ์ ๋ฆฌ1. ์์ฑ์๋ฅผ ํตํด ์ฃผ์ ์ ๊ด์ฐฎ์. ํ์ง๋ง ์ธ์คํด์ค ์์ฑ์ผ๋ก ์์กดํ์ง ๋ง๊ฒ (ํ ์คํธ ์ฝ๋ ์์ฑ ์ด๋ ค์)> ํ๋ ์ด์ด๋ก ์ปดํจํฐ๋ฅผ ์ฃผ์ง๋ง๊ณ ์ธ๋ถ์์ ๋น๊ต๊ฐ์ ์ป์ด๋ผpublic class Player { private final Rsp playerRsp; private final Computer computer = new Computer(); // setter ๋์ ์์ฑ์๋ก ์ฃผ์ ์์ผ.. 2022. 3. 12. 2022.03.07 ์ ๊ธฐ๋ก โถ ํ๋ฃจ => ๊ณต๋ถ ๊ด๋ จ 1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH6 2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง 3) ๊ธ์ผ ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ 1) DB ์ฌํ์ธ โถ ๊ฐ์ธ ๊ณต๋ถ 5์ฅ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5์์น ๊ฐ์ฒด ์งํฅ์ ๊ฐ๋ ๊ณผ 4๋ ํน์ฑ ์ข์ ๋๊ตฌ์ ์๊ฒ๋จ. ์ข์ ๋๊ตฌ๊ฐ ์์ด๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์์ผ ์ข์ ์๋ฆฌ๊ฐ ๋์ด. ๊ฐ์ฒด ์งํฅ ์ค๊ณ (Object Oriented Design) 5์์น SOLID (๊ฐ์ฒด ์งํฅ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ) SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น OCP (Open Closed Princinple) : ๊ฐ๋ฐฉ ํ์ ์์น LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น I.. 2022. 3. 7. 2022.03.05~03.06 ์ ๊ธฐ๋ก โถ ํ๋ฃจ => ๊ณต๋ถ ๊ด๋ จ1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH5๊น์ง ์ฝ๊ณ ์ ๋ฆฌ2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง ํ ํผ๋๋ฐฑ3) ๊ธฐ์ ์ง๋ฌธ ๋ต๋ณ ๋ชปํ ๋ถ๋ถ ๋ ธ์ ์ ์ ๋ฆฌ => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ1) DB ERD ๊ทธ๋ ค๋๊ธฐ & ์คํ๋ ๋์ํธ ์ ๋ฆฌ2) git ํ์ โถ ๋ฌธ์ ์ ๋ฆฌ1. ์์์ ์ค๋ณต๊ณผ ๋ฒ๋์ผ๋ก ๋ํดํ ์ฝ๋ํด๊ฒฐ > enum ํด๋์ค 3๊ฐ๋ฅผ ์์ฑํ์ฌ ํด๊ฒฐpackage Enum;public enum PrintGameResult { WIN_RESULT("๋์ด ์ด๊ฒผ์ต๋๋ค."), DRAW_RESULT("๋น๊ฒผ์ต๋๋ค."), LOSE_RESULT("์ปดํจํฐ๊ฐ ์ด๊ฒผ์ต๋๋ค."); private final String printGameResult; PrintGameResult(String printGameResult) { this.pri.. 2022. 3. 5. 2022.03.03 ์ ๊ธฐ๋ก โถ ํ๋ฃจ => ๊ณต๋ถ ๊ด๋ จ 1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH4 2) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง (์ด๊ฑฐํ, ์ธํฐํ์ด์ค ๊ณ ๋ฏผ) 3) ๊ธ์ผ ์์ ๋ณต์ต => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ 1) DB ๋ง๋ฌด๋ฆฌ ํ์ 2) ์ถํ ๋ํ ์ผ ์ ๋ฌด ์ ๋ฆฌ 3) ๋ค์ ํ์ํ ๊ฒ git ํ์ โถ ๋ฌธ์ ์ ๋ฆฌ 1. โถ ๊ฐ์ธ ๊ณต๋ถ public class ViewInput { private static final String RSP_INPUT = "1, 2, 3 ์ค์์ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์."; private static final String RESTART_INPUT = "์ฌ์์ ํ์๊ฒ ์ต๋๊น? (y:n)"; private static final Scanner SCANNER = new Scanner(System.in); public ViewInput() { }.. 2022. 3. 3. 2022.02.28์ ๊ธฐ๋ก โถ ํ๋ฃจ => ๊ณต๋ถ ๊ด๋ จ1) ์คํ๋ง ๊ฐ๊ตฌ๋ฆฌ์ฑ CH32) MVC ๊ฐ์ฒด์งํฅ ๋ฆฌํฉํ ๋ง3) ๊ธ์ผ ๊ฐ์ ๋ณต์ต => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ1) UI ์ ๋ฌด ๋ถ๋ด ํ์โถ ๋ฌธ์ ์ ๋ฆฌโถ ๊ฐ์ธ ๊ณต๋ถโถ ์์ ๋ด์ฉMyBatisDB⇒ DB ์ฌ๋ฌ ํ ์ด๋ธ Join ์ ์ค๋ณต ์ปฌ๋ผ๋ช ์ aliasname์ผ๋ก ๋ฐ๊ฟ์ค๋ค.ํ ์ด๋ธ ์กฐ์ธ ์ ๋์ผํ ์ปฌ๋ผ๋ช ์ ๊ฐ์ง ๊ฒฝ์ฐ ๋๋ฒ ์งธ ์ด์์ ์ปฌ๋ผ๋ช ์ ์๋์ผ๋ก ๋ณ๊ฒฝDTO๊ฐ์ฒด ์ง๋ ฌํ ํด๋์ค : Serializable ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ํด๋์ค⇒ ๊ฐ์ฒด ๋จ์๋ก ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์ ์ํ ํด๋์ค ์ ์ธ ๋ฐฉ๋ฒmapper.xmlresultMap ์๋ฆฌ๋จผํธ์ ํ์ ์๋ฆฌ๋จผํธ ์ ์ธ ์์constructor >> id >> result >> association >> collection >> discriminator⇒ ์์๋ฅผ ์.. 2022. 2. 28. 2022.02.25์ ๊ธฐ๋ก => ๊ณต๋ถ ๊ด๋ จ1) ๋ชจ๋ ์๋ฐ ์คํธ๋ฆผ(Stream) & ์ ์ถ๋ ฅ ์คํธ๋ฆผ(IO Stream)2) ๊ธ์ผ ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต3) ๊ธฐ์ ์ง๋ฌธ ์ฉ์ง์ ๋ชจ๋ ์ ๋ฆฌ => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ1) UI ํ์โถ ๋ฌธ์ ์ ๋ฆฌโถ ๊ณต๋ถ ๋ด์ฉDBDTO ํด๋์ค์ ํ๋๊ฐ๊ณผ DB ์ปฌ๋ผ๋ช ์ ์ด๋ฆ์ด ๋์ผํ์ง ์์ ๊ฒฝ์ฐ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ์ด๋๋ฉด ์ข๋ค.ํฌํจ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋๊ธฐ ์ํด์๋ ๋ฐ๋์ ํ๋์ ์ธ์คํด์ค ์ ์ฅ1:1 ๊ด๊ณ์ ์กฐ์ธ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํด๋์ค⇒ ๊ธฐ์กด์ ์์ฑ๋ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉ **POJO(Plan Old Java Object)**ํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์ฝ๊ฒ ์์ฑํ์ฌ ์์ฐ์ฑ ์ฆ๊ฐ ๋ฐ ์ ์ง๋ณด์ ํจ์จ์ฑ ์ฆ๊ฐ1:N ๊ด๊ณ์ ์กฐ์ธ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํด๋์ค⇒ ๋ชฉ๋ก์ ์ ์ฅํ๊ธฐ ์ํด List ์๋ฃํ ์ด์ฉํ ์ด๋ธ๊ณผ ํ ์ด๋ธ์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์.. 2022. 2. 25. 2022.02.22์ ๊ธฐ๋ก โถ ์ค๋ ์คํ ๊ฐ๋ฅํ ์ธ๋ถ ๋ชฉํ => ๊ณต๋ถ ๊ด๋ จ 1) ์คํธ๋ฆผ 2) ์๋ฐ ๋ฆฌํฉํ ๋ง 3) ๊ธ์ผ ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต 4) ์คํ๋ง ๊ฐ์ฒด์งํฅ ์ฑ 1๋จ์ => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ 1) ํ๋ฉด ์ค๊ณ์ ํ์ (ํธ๋ ์ด๋ ๊ด๋ฆฌ ๋ถ๋ถ) โถ ๋ฌธ์ ์ ๋ฆฌ 1. ์ต๋ช ๊ฐ์ฒด์ ๊ฐ๋ ์ ์๊ฐ ํ์ค์น ์์์ ๋๋ค์์ ์ดํด๊ฐ ์ด๋ ค์ ๋ค. => ์ต๋ช ๊ฐ์ฒด(ํด๋์ค)์ ๊ฐ๋ ํ์คํ ์ ๋ฆฌ => ์ผํ์ฑ์ ์ด๋ฒคํธ์ด๋ฏ๋ก ๊ฐ์ฒด์ ๋ฐ๋ก ์ ์ํ๋ ๊ฒ์. โถ ๊ณต๋ถ ๋ด์ฉ JSTL (Java Standard Tag Library) foreach ํ๊ทธ ํ๊ทธ๋ด์ฉ์ ๋ฐ๋ณต์ ์ผ๋ก ํฌํจํ์ฌ ์ถ๋ ฅํ๊ธฐ ์ํ ํ๊ทธ var ์์ฑ : ์ค์ฝํ ๊ฐ์ฒด์ ์ ์ฅ๋ ์์ฑ๊ฐ begin ์์ฑ : ์ค์ฝํ ๊ฐ์ฒด์ ์ ์ฅ๋ ์์๊ฐ(Integer)์ ์์ฑ๊ฐ์ผ๋ก ์ค์ end ์์ฑ : ์ค์ฝํ ๊ฐ์ฒด์ ์ ์ฅ๋ ์ข ๋ฃ๊ฐ.. 2022. 2. 22. 2022.02.21์ ๊ธฐ๋ก โถ ์ค๋ ์คํ ๊ฐ๋ฅํ ์ธ๋ถ ๋ชฉํ => ๊ณต๋ถ ๊ด๋ จ 1) ๋๋ค์ ์คํธ๋ฆผ 2) ๋๋ต ๋ชปํ ์ง๋ฌธ ๋ต ์ ๋ฆฌ 3) ์๋ฐ ๋ฆฌํฉํ ๋ง 4) ๊ธ์ผ ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต => ํ์ด๋ ํ๋ก์ ํธ ๊ด๋ จ 1) ํ๋ฉด ์ค๊ณ์ ํ์ โถ ๊ณต๋ถ ๋ด์ฉ EL ํจ์ ํจ์ : ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ์ ๊ณต ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ๋ฐํ ๋ฉ์๋ : ํ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํจ ⇒ EL ํจ์๋ก ํธ์ถ๋๋ ๋ฉ์๋๋ ๋ฐ๋์ static ๋ฉ์๋๋ก ์ ์ธ TLDํ์ผ function EL ํจ์๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํ ์์ ์๋ฆฌ๋จผํธ name EL ํจ์๋ช ์ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ function-class EL ํจ์์ ์ํด ํธ์ถ๋๋ ๋ฉ์๋๊ฐ ์ ์ธ๋ ํด๋์ค๋ฅผ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ function-signature EL ํจ์์ ์ํด ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ short-name TLD ํ์ผ์ ์ด๋ฆ์ ์ค์ ํ๊ธฐ.. 2022. 2. 21. 2022.02.20์ ๊ธฐ๋ก โถ ์ค๋ ์คํ ๊ฐ๋ฅํ ์ธ๋ถ ๋ชฉํ=> ๊ณต๋ถ ๊ด๋ จ1) ๊ฒ์ฆ ๋ฐ๋ ๋ => ๊ธฐ์ ๋ฉด์ , ํ๋ก์ ํธ ์ ์ถ โถ ๋ฌธ์ ์ ๋ฆฌ1. Primitive Type๋ง ์ฌ์ฉํ๋ ค๋ ๊ฒฝํฅ์ ํผํ์=> ์์ ๊ฐ์ฒด ํ์ ์ ์ฌ์ฉํ๋ ์ต๊ด์ ๊ธฐ๋ฅด์ 2. ๊ทน๋จ์ ์ธ ์ฒด์ด๋์ ํผํ๋ผ=> ํ ์ค์ ํ๋์ dot ์ฐ์ฐ์ ์ฌ์ฉ=> ์ฒด์ด๋๋ณด๋จ ๋ฉ์๋๋ก์ ๋ถ๋ฆฌ๊ฐ ํจ๊ณผ์ ์ 3. Getter/Setter/Property๋ฅผ ๋จ์ฉํ์ง ๋ง์=> ๊ฐ์ฒด๊ฐ ๊ณ ์ ์ญํ ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ๊ฐ์ฒด์ ์์ฑ์ ์ง์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ง์ ๋ณ๊ฒฝํ ์ผ์ด ์์ด์ผ ํจ.=> ๊ฐ์ฒด์ ๋ฌป์ง ๋ง๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ผ(Tell Don't Ask) -> ๊ฐ์ฒด๋ผ๋ฆฌ ํ๋ ฅํ๋ ๊ฒฝ์ฐ ์ ๋ณด๋ฅผ ์๊ตฌํ์ง ๋ง๊ณ ํ์๋ฅผ ํ๋๋ก ์์ผ๋ผ. (์ ๋ณด ์๋์ ์ค์์ฑ์ ๊ฐ์กฐํ๋ ์์น) โถ ํผ๋๋ฐฑ> ์ฌ๋งํ๊ฑด ๋ค ๋ ธ์ ์ ์ ๋ฆฌ> ์ค๋ .. 2022. 2. 20. ์ด์ 1 2 3 4 ๋ค์ ๋ฐ์ํ