๋ชฉ๋ก๐ป Java Study/Java ์ด๋ก ์ ๋ฆฌ (27)
Coding Planet

์์ดํ 4: ์ธ์คํด์คํ๋ฅผ ๋ง์ผ๋ ค๊ฑฐ๋ private ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ผ ์ธ์คํด์คํ(instance instantiation)๋ ํด๋์ค์ ์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑํ๋ ๊ณผ์ ์ด๋ค. ํด๋์ค์ ์ธ์คํด์คํ๋ฅผ ๋ง๊ธฐ์ํด private ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํด๋์ค๋ฅผ ์ธ๋ถ์์ ์ธ์คํด์คํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ํ ํฌ๋์ด๋ค. ํด๋์ค์ ์ ์๋ ์์ฑ์๊ฐ ๋ชจ๋ 'private'์ผ๋ก ์ ์ธ๋๋ฉด, ๊ทธ ํด๋์ค๋ ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ์ ํ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฃผ๋ก ์ ํธ๋ฆฌํฐ ํด๋์ค๋ ์์๋ง์ ํฌํจํ๋ ํด๋์ค์ ๊ฐ์ด ์ธ์คํด์คํ๋ ํ์๊ฐ ์๋ ํด๋์ค๋ค์ ์ ์ฉ๋๋ค. 1. ์ ์ ๋ฉ์๋์ ์ ์ ํ๋๋ง์ ๋ด์ ์ ํธ์ฑ ํด๋์ค๋ ๋ง๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํ์ ๊ฐ์ด๋ ๋ฐฐ์ด ๊ด๋ จ ๋ฉ์๋๋ค์ ๋ชจ์๋์ ๋ : java.lang..

์์ดํ 3: private ์์ฑ์๋ ์ด๊ฑฐ ํ์ ์ผ๋ก ์ฑ๊ธํด์์ ๋ณด์ฆํ๋ผ ์ฑ๊ธํด(sigleton)์ด๋ ์ธ์คํด์ค๋ฅผ ์ค์ง ํ๋๋ง ์์ฑํ ์ ์๋ ํด๋์ค๋ฅผ ๋งํ๋ค. ์ฑ๊ธํด์ ์ ํ์ ์ธ ์๋ก๋ ํจ์์ ๊ฐ์ ๋ฌด์ํ ๊ฐ์ฒด๋ ์ค๊ณ์ ์ ์ผํด์ผํ๋ ์์คํ ์ปดํฌ๋ํธ๋ฅผ ๋ค ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ํด๋์ค๋ฅผ ์ฑ๊ธํด์ผ๋ก ๋ง๋ค๋ฉด ์ด๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ฅผ ํ ์คํธํ๊ธฐ๊ฐ ์ด๋ ค์์ง ์ ์๋ค. ํ์ ์ ์ธํฐํ์ด์ค๋ก ์ ์ํ ๋ค์ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ ๋ง๋ ์ฑ๊ธํด์ด ์๋๋ผ๋ฉด ์ฑ๊ธํด ์ธ์คํด์ค๋ฅผ ๊ฐ์ง(mock)๊ตฌํ์ผ๋ก ๋์ฒดํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ํด๋์ค๋ฅผ ์ฑ๊ธํด์ผ๋ก ๋ง๋ค ๊ฒฝ์ฐ ํด๋น ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์คํ ์ ์ฒด์ ํ๋์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธ์ ์ค์ ํ๊ฒฝ์์์ ๋์์ด ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ์ ์๋ค. ์ฑ๊ธํด์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณดํต ๋๊ฐ์ง์ด๋ค. ๋ ๋ฐฉ์ ๋ชจ๋ ์์ฑ์๋ ..
1. ์ง๋ ฌํ๋ (Serialization)? ์ง๋ ฌํ (Serialization)๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ์ด ๋ฐ์ดํธ ์คํธ๋ฆผ์ ํ์ผ๋ก ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ ์์คํ ์ ์ ์กํ ์ ์๋ค. ๋ฐ๋๋ก, ์ญ์ง๋ ฌํ (Deserialization)๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ์๋์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. 2. ์ง๋ ฌํ์ ๋ชฉ์ ์์์ฑ (Persistence): ๊ฐ์ฒด์ ์ํ๋ฅผ ์๊ตฌ ์ ์ฅ ๋งค์ฒด (์: ํ์ผ)์ ์ ์ฅํ๊ณ ๋์ค์ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ๋ณต์ํ ์ ์๋ค. ์๊ฒฉ ํ๋ก์์ ํธ์ถ (Remote Procedure Call): ๊ฐ์ฒด๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ JVM ๋๋ ์์คํ ์ผ๋ก ์ ์กํ๋ ค๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํด์ผ ํ๋ค. ๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ (Deep Copy)..

์์ดํ 2 : ์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํ๋ผ ์ ์ ํฉํ ๋ฆฌ์ ์์ฑ์์๋ ๋๊ฐ์ ์ ์ฝ์ด ํ๋ ์๋ค. ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ ์ ํ ๋์ํ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ด๋ค. ๊ธฐ์กด์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค. ๋์1. ์ ์ธต์ ์์ฑ์ ํจํด ์ ์ธต์ ์์ฑ์ ํจํด(telescoping constructor pattern)์ด๋ ๊ฐ์ฒด ์์ฑ ์ ํ์ํ ์กฐํฉ์ ๋ฐ๋ผ ๋ค์ํ ์์ฑ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋์์ฑ์๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๋งค๊ฐ๋ณ์ 1๊ฐ๋ฅผ ์ถ๊ฐ๋ก ๋ฐ๋ ์์ฑ์, ์ ํ ๋งค๊ฐ ๋ณ์ 2๊ฐ๋ฅผ ์ถ๊ฐ๋ก ๋ฐ๋ ์์ฑ์ ๋ฑ์ ํํ๋ก ๋งค๊ฐ๋ณ์ ๊ฐ์๋งํผ ์์ฑ์๋ฅผ ๋๋ ค๊ฐ๋ ๋ฐฉ์์ด๋ค. ์ด ํจํด์ ์ฃผ์ํ ๋ฌธ์ ๋ ์ ํ์ ๋งค๊ฐ๋ณ์์ ์๊ฐ ๋ง์์ง์๋ก ์์ฑ์์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๊ฒ ๋๋ฉฐ, ํด..

์์ดํ 1 : ์์ฑ์ ๋์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ ์์ฑ์ ๋์ ๋ฐ๋์ ์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ผ๋ ์๋ฏธ๋ ์๋๋ค. ๋์ ๋ฐ๋ผ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๊ฐ ๋์ฑ ์ ์ฉํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ๊ณ ๋ คํ๋ผ๋ ๋ป์ด๋ค. 1. ์ ์ ๋ฉ์๋์ ์ฅ์ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค. ์ ์ ํฉํ ๋ฆฌ์ ์ด๋ฆ์ ํตํด ๋ฐํ๋ ๊ฐ์ฒด์ ํน์ฑ์ ์ฝ๊ฒ ๋ฌ์ฌํ ์ ์๋ค. ์ด๋ฆ์ ํตํด ๋ช ์์ ์ ์ธ์ด ๊ฐ๋ฅํด ์ง๋ ๊ฒ์ด๋ค. ์์ฑ์์ ์๊ทธ๋์ฒ๊ฐ ์ค๋ณต๋๋ ๊ฒฝ์ฐ ์ ์ฉํ๋ค. ํธ์ถ ๋ ๋๋ง๋ค ์ธ์คํด์ค๋ฅผ ์๋ก ์์ฑํ์ง ์์๋ ๋๋ค. ๋ถ๋ณ ํด๋์ค์ธ ๊ฒฝ์ฐ๋ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์ธ์คํด์ค ๋๋ ์บ์ํด๋ ์ธ์คํด์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐํ ํ์ ์ ํ์ ํ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค. ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ ์์ฑ์์ ๋ฌ๋ฆฌ, ํธ์ถ๋ ๋ ๋ฐํ ํ์ ์ด ๊ณ ์ ๋์ง ..

1. HashSet์ด๋? HashSet์ Java ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ํ๋๋ก, ์ค๋ณต์ ํ์ฉํ์ง ์๋ ๋ฐ์ดํฐ ์งํฉ์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. HashSet์ ๋ด๋ถ์ ์ผ๋ก HashMap ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ฐ์ดํฐ ์ฝ์ , ์ญ์ , ์กฐํ ์์ ์ ๋น ๋ฅด๊ฒ ์ํํ ์ ์์ต๋๋ค. HashSet์ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ฆ, HashSet์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ์์์ HashSet์ ๋ด๋ถ ๋ฐ์ดํฐ ์ ์ฅ ์์๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ก HashSet์ ๋ฐ์ดํฐ ์์๊ฐ ์ค์ํ์ง ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. HashSet์ Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฏ๋ก, Set ์ธํฐํ์ด์ค์์ ์ ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ, HashSet์ null ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. ํ์ง๋ง, HashSet..

์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ ๋ณดํต try~catch~finally๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ์ด๋ค. ์ด์ธ์๋ throws๋ฅผ ํตํด ํน์ ์์ธ๊ฐ ๋ฐ์ ๊ฒฝ์ฐ์ ์คํํ ๋ช ๋ น์ด๋ฅผ catch๋ธ๋ญ์ ์์ฑํ์ง ์๊ณ ๋ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค. 1. throws try~catch ์์ธ์ฒ๋ฆฌ ์ ๋ฉ์๋๋ง๋ค try~catch๋ฅผ ์ฌ์ฉํด ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋๋ฐ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ณณ(์ผ๋ฐ์ ์ผ๋ก main())์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๋ฐฉ์์ด๋ค. ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์์ธ๋ฅผ ์ผ์ผํค๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฉ์๋๋ก ์์ธ๋ฅผ ๋๊ธฐ๊ณ ์ฑ ์์ ์ ๊ฐํ๋ ๋ฐฉ๋ฒ throws๋ฅผ ๋ฉ์๋ ์ ์ธ๋ถ์ ๋ช ์ํด ์ฃผ์ด์ ์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋๊ฐ ์๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค ๋ํ, ๋ฐ์ ๊ฐ๋ฅํ ์์ธ๋ฅผ ํน์ ๋ฉ์๋์์ ํ ๋ฒ์ ์ฒ๋ฆฌํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค. ์ผ๋ฐ์ ์ผ๋ก main() ๋ฉ์๋..