๐์ฝ์ ์ฑ ์ ๋ฆฌ (39) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๋ฐ ๋ง์คํฐ๋ถ] 9์ฅ ๋ ์ง ์ฒ๋ฆฌ ๊ณต๋ตํ๊ธฐ 9.1 Date์ Calendar ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๊ธฐ Date๋ ์ผ์, ํน์ ์ ์๊ฐ์ ๋ณด๊ดํ๋ ํด๋์ค์ด๊ณ Calendar๋ ์ฐ, ์, ์ผ, ์, ๋ถ, ์ด ๋จ์๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ค์ /์ทจ๋/๊ฐ์ฐ/๊ฐ์ฐํ ์ ์๋ ํด๋์ค์ด๋ค. Date ํด๋์ค ์ฌ์ฉํ๊ธฐ //1 Date date1 = new Date(); System.out.println(date1); //2 Date date2 = new Date(5000); System.out.println(date2); 1๋ฒ ์ฝ๋๋ ํ์ฌ ์๊ฐ์ ์ถ๋ ฅํ๊ณ 2๋ฒ ์ฝ๋๋ 1970๋ ์์ 5000ms ์ง๋ ์๊ฐ์ ์ถ๋ ฅํ๋ค. Dateํด๋์ค๋ setTime์ผ๋ก ์๊ฐ์ ๋ฐ๊ฟ ์ ์์ผ๋ฏ๋ก ๋ถ๋ณ๊ฐ์ฒด๊ฐ ์๋๋ค. Calendar ํด๋์ค ์ฌ์ฉํ๊ธฐ Calendar calendar = Calendar.get.. [์๋ฐ ๋ง์คํฐ๋ถ] 6์ฅ ์์ธ ๊ณต๋ตํ๊ธฐ 6.1 ์์ธ์ ๊ธฐ๋ณธ 6.1.1 ์์ธ์ ์ธ ๊ฐ์ง ์ข ๋ฅ 1) ๊ฒ์ฌ ์์ธ (Exception) ์ฃผ๋ก ํ๋ก๊ทธ๋จ ์์ฑ ์์ ์์ํ ์ ์๋ ๋น์ ์ ์ํ๋ฅผ ํต์งํ๊ธฐ ์ํด ์ฌ์ฉ. ์๋ฅผ ๋ค์ด ํ์ ์ ์ถ๋ ฅ์ด ์คํจํ ๊ฒฝ์ฐ IOException์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ ์ด๋ฅผ ์์ํ๊ณ ๋ฏธ๋ฆฌ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง catchํ๊ฑฐ๋ throwํ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ํ์ง๋ง ๋ชจ๋ ์์ธ๋ฅผ ํฌ์ฐฉํ๊ฒ ๋๋ค๋ฉด ์ ์ํด์ผํ๋ ์์ธ ์ํฉ์ด ๋ง์์ง๊ณ ๋ณต์กํด์ง๋ฏ๋ก '์คํ ์ ์์ธ'๋ก ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์๋ค. 2) ์คํ ์ ์์ธ (RuntimeException) ์ฃผ๋ก ํ๋ก๊ทธ๋จ ์์ฑ ์์ ์์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ํต์งํ๊ธฐ ์ํด ์ฌ์ฉ. '๊ฒ์ฌ ์์ธ'์๋ ๋ฌ๋ฆฌ ํ๋ก๊ทธ๋จ์์ ํฌ์ฐฉํ์ง ์์๋ ๋ฐ๋ก '์ปดํ์ผ ์ค๋ฅ'๋ ๋ฐ์ํ์ง ์๋๋ค... [์๋ฐ ๋ง์คํฐ๋ถ] 1์ฅ๋ถํฐ 5์ฅ.. ๋๋ค์๊ณผ Stream API๊น์ง. 1.1 ์๋ฐ๋? 1.1.1 ์๋ฐ์ ํน์ง ๊ฐ์ฒด ์งํฅ ํด๋์ค์ ์์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ํ์ฅ์ฑ์ด ์ฐ์ํ๋ฉฐ ์ฌํ์ฉํ๊ธฐ ์ฌ์ด ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํจ. ํ๋ซํผ ๋ ๋ฆฝ์ฑ ํ๋ก๊ทธ๋จ์ด ์๋ฐ ๊ฐ์๋จธ์ ์์ ์คํ๋๋ฏ๋ก ํ๋ก๊ทธ๋จ ์์ฒด๋ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ์ ์์. ๋ฐ์ด๋ ์์ฝ ์์คํ ์ฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฏธ๋ค์จ์ด(DBMS ๋ฑ)๊ฐ ๋ค์ ์กด์ฌํจ์ผ๋ก ํจ์จ์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. 1.1.3 ์๋ฐ๊ฐ ์คํ๋๋ ์์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์คํํ๊ธฐ๊น์ง์ ์์ฃผ ๊ฐ๋จํ ํ๋ฆ ์ค๋ช 1. ์๋ฐ์์ค์ฝ๋๋ฅผ ์์ฑ 2. javac ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ `ํด๋์ค ํ์ผ`์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๊ฐ์ฝ๋๋ฅผ ์์ฑํ๋ค. 3. javac ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ java vm์ด ํด๋์ค ํ์ผ์ ํด์ํ์ฌ ์ฒ๋ฆฌํ๋ค. 2.4 ๋ช ๋ช ๊ท์น 2.4.1 ํด๋์ค์ ๋ณ์๋ '์นด.. [JAVA ๊ฐ์ฒด ์งํฅ ๋์์ธ ํจํด] 4์ฅ : ๋์์ธ ํจํด 4.1 ๋์์ธ ํจํด์ ์ดํด ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ตํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น?? ๋ฐ๋ก ํ๋ฅญํ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ์ด๋ค!! ๊ทธ ํ๋ก๊ทธ๋จ์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ ๊ฐ ๊ณ ์ํ๋ฉด์ ์์๋์ ๊ฒฝํ ๋ฑ์ด ๊ณ ์ค๋ํ ๋ น์์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ฒฝํ์ด ๋ถ์กฑํ ํ๋ก๊ทธ๋๋จธ๋ค์ ํ๋ฅญํ ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ง๋ค์ด๋์ ํน์ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ฌ์ฉํ๊ณ ์์ฉํ๋ฉด ๋งค์ฐ ์ข์ ๊ฒ์ด๋ค. ๋์์ธ ํจํด์ด๋? ๊ฒฝํ์ด ๋ง์ ์ํํธ์จ์ด ์์ง๋์ด๋ค์ด ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ๋ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํด๋ฒ๋ค์ ๋ชจ์๋์ ๊ฒ! ๋์์ธ ํจํด์ ๊ตฌ์กฐ ๋์์ธ ํจํด์ ๊ตฌ์กฐ๋ 3๊ฐ์ ํ์์ ์ธ ์์๋ก ๊ตฌ์ฑ๋๋ค. ์ฝํ ์คํธ : ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฌ๋ฌ ์ํฉ์ ๊ธฐ์ (์ฆ, ํจํด์ด ์ ์ฉ๋ ์ ์๋ ์ํฉ) ๋ฌธ์ (Problem) : ํจํด์ด ์ ์ฉ๋์ด ํด๊ฒฐ๋ ํ์๊ฐ ์๋ .. [JAVA ๊ฐ์ฒด ์งํฅ ๋์์ธ ํจํด] 3์ฅ : SOLID ์์น 3.1 ๋จ์ผ ์ฑ ์ ์์น (SRP) 3.11 ์ฑ ์์ ์๋ฏธ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๊ด์ ์์ ์ฑ ์์ ๊ธฐ๋ณธ ๋จ์๋ ๋ฐ๋ก '๊ฐ์ฒด'์ด๋ค. (์ด '๊ฐ์ฒด'๋ ๋จ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ ธ์ผ ํ๋ค) ํ์ '๊ฐ์ฒด'๊ฐ ์ฌ๋ฌ ์ฑ ์(์์ ๋ฃ๊ธฐ + ์๋ฐํ๊ธฐ)์ ๊ฐ์ง๋ค๊ณ ๊ฐ์ ํด๋ณด์. public class Student { public void getCourses() {...} public void addCourses() {...} public void save() {...} public Student load() {...} public void printOnReport() {...} public void printOnBook() {...} } ํ์ ๊ฐ์ฒด๋ ์์ ์ ๊ดํ ์ฑ ์๋ง ๊ฐ์ง๋ ๊ฒ์ด ์ข๊ณ ์ด์ธ์ ์ฑ ์์ ์ด๋ฅผ ๋ ์ ์ํํ ์ ์๋ ๋ค๋ฅธ ๊ฐ์ฒด.. [JAVA ๊ฐ์ฒด์งํฅ ๋์์ธ ํจํด] 2์ฅ : ๊ฐ์ฒด์งํฅ์ ์๋ฆฌ ์ถ์ํ ์ด๋ค ์์ญ์์ ํ์๋ก ํ๋ ์์ฑ์ด๋ ํ๋์ ์ถ์ถํ๋ ์์ ์ ์๋ฏธํ๋ค. ์ฌ๋ฌ ๊ฐ์ฒด์ ๊ณตํต๋ ํน์ง์ ํ์ ํด ํ๋์ ์งํฉ์ผ๋ก ์ผ๋ฐํํ๊ฒ ๋๋ค. ์ป์ ์ ์๋ ๊ฒ ๊ฐ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ ๊ฐ๋ ์ ์์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๊ณ๋ฅผ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค. ex) ์๋์ฐจ๋ ์ด๋ค ์ข ๋ฅ์ ์๋์ฐจ๋ ์๊ด ์์ด ์์ง์ค์ผ์ ๊ฐ ์ ์๋ค. ์บก์ํ ์บก์ํ๊ฐ ํ์ํ ์ด์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ์ ๋น์ฐํ ๊ฒ์ด๊ธฐ ๋๋ฌธ! ์ป์ ์ ์๋ ๊ฒ ์บก์ํ๋ ์ ๋ณด ์๋์ ํตํด ๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋๋ฅผ ๊ฐ๋๋ก ํ๋ค. -> ๋ณ๊ฒฝ์ด ๋ฐ์ํด๋ ์ํฅ์ด ์ ์ ์ ๋ณด ์๋ : ์ธ๋ถ์์ ์ ํ์๊ฐ ์๋ ๋ด๋ถ ์ ๋ณด์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ ex) ์๋์ฐจ์ ๊ฐ์ ํ๋ฌ์ ๋ฐ์ผ๋ฉด ์๋๊ฐ ์ฌ๋ผ๊ฐ์ง๋ง ๊ทธ ์์ ์ด๋ค ๊ณผ์ ์ด ์๋์ง ๋ชฐ๋ผ๋ ์ง์ฅ์ด ์์ ์์ง๋.. [JAVA ๊ฐ์ฒด์งํฅ ๋์์ธ ํจํด] 1์ฅ : ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ๋ง 1.1 ๋ชจ๋ธ๋ง ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋ชจ๋ธ์ ์ญํ ์๋ก์ ํด์์ ๊ณต์ ํด ํฉ์๋ฅผ ์ด๋ฃจ๊ฑฐ๋ ํด์์ ํ๋น์ฑ์ ๊ฒํ ํ์ฌ์ ์์คํ ๋๋ ์์ผ๋ก ๊ฐ๋ฐํ ์์คํ ์ ์ํ๋ ๋ชจ์ต์ ๊ฐ์ํ ์์คํ ์ ๊ตฌ์กฐ์ ํ์๋ฅผ ๋ช ์ธํ ์ ์์ผ๋ฉฐ ์์คํ ์ ๊ตฌ์ถํ๋ ํ์ ์ ๊ณต ๋ชจ๋ธ์ ์ถ์ํ์ ๊ธฐ๋ฐ์ ๋๋ค. ํน์ ๊ด์ ์์ ๊ด๋ จ์ด ์๋ ์ ์ ๋ถ๊ฐ์ํค๊ณ ๊ด๋ จ ์๋ ๋ฉด์ ๋ฌด์ํ๋ค. ex) ๋ํ๊ต ํ์ฌ ์ง์ ์ ๋ฌด -> ํ์์ ๋จธ๋ฆฌ์นด๋ฝ ์, ๋จธ๋ฆฌ ์๊น์ ํ์ฌ ์ง์๊ณผ ์ ํ ๋ฌด๊ดํ๊ธฐ ๋๋ฌธ์ ๊ด์ฌ์๋ ์์ญ์์ ์ ์ธ (์ถ์ํ์์ ์ ์ธ) -> ํ์์ "ํ๋ฒ, ์ด๋ฆ, ์๊ฐ๊ณผ๋ชฉ"์ ํ์ฌ ์ง์ ํ์์ ์ด๋ฏ๋ก ๊ด์ฌ์์ญ์ ํฌํจ์ํจ๋ค. ์ฌ๋์ ๋ชจ๋ ์์ฑ์ ๊ฐ์ ธ๊ฐ๋ ๊ฒ์ด ์๋ ๊ด์ฌ์๋ ์์ญ์ ํ์ํ ์์ฑ๋ง ๊ฐ์ง๊ณ ๊ฐ๋ ๊ฒ (์ถ์ํ) 1.2 UML ๋ชจ๋ธ๋ง ์ธ์ด : ์ํ๋ ์์ค.. [์คํ๋ง ์ ๋ฌธ์ ์ํ ์๋ฐ ๊ฐ์ฒด ์งํฅ์ ์๋ฆฌ์ ์ดํด] 7์ฅ : ์คํ๋ง ์ผ๊ฐํ๊ณผ ์ค์ ์ ๋ณด ์คํ๋ง์ ์ดํดํ๋ ค๋ฉด POJO๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ง ์ผ๊ฐํ์ด๋ผ๋ ์ ์นญ์ ๊ฐ์ง IoC/DI, AOP, PSA๋ผ๊ณ ํ๋ ์คํ๋ง์ 3๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ํด ์ดํด๊ฐ ํ์๋ค. ์คํ๋ง ์ผ๊ฐํ์ ์ดํดํ๋ฉด ๊ทธ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ง์ ๋ณต์กํ ๋ถ๊ฐ ํ๋ ์์ํฌ๋ฅผ ์ดํดํ ์ ์๋ค. ์คํ๋ง ์ผ๊ฐํ์ ๋ํด์ ํ๋ฒ ์์๋ณด์. IoC/DI - ์ ์ด์ ์ญ์ /์์กด์ฑ ์ฃผ์ ํ๋ก๊ทธ๋๋ฐ์์ ์์กด์ฑ์ด๋ ๋ฌด์์ผ๊น? ex) ์ด์ ์๊ฐ ์๋์ฐจ๋ฅผ ์์ฐํ๋ค. -> ์๋์ฐจ๊ฐ ๋ด๋ถ์ ์ผ๋ก ํ์ด์ด๋ฅผ ์์ฐํ๋ค. (์ด์ ์ -> ์๋์ฐจ -> ํ์ด์ด) ์์กด -> ์ ์ฒด(์์กดํ๋ ๊ฐ์ฒด)๊ฐ ๋ถ๋ถ(์์กด๋๋ ๊ฐ์ฒด)์ ์์กดํ๋ค. ์งํฉ(Aggregation) ๊ด๊ณ: ๋ถ๋ถ์ด ์ ์ฒด์ ๋ค๋ฅธ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์๋ค. ๊ตฌ์ฑ(Compostion) ๊ด๊ณ: ๋ถ๋ถ์ ์ ์ฒด์ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ .. ์ด์ 1 2 3 4 5 ๋ค์