Java ์ฐธ์กฐ์๋ฃํ - enum ์ฝ๊ฒ ์ดํดํ๊ธฐ!
์ด ์์์ Java์์ **enum(์ด๊ฑฐํ)**์ด๋ผ๋ ์ฐธ์กฐ์๋ฃํ์ ์ฌ์ฉํด ์์๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋๋ค. ๋ํ, enum์ ํ์ฉํด ๊ฐ๋จํ ํ ์ผ(To-Do) ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ค์ต๊น์ง ์งํํด์. enum์ด ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ฐ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ค์ํ ์์์ธ ํ ์ผ ์ํ ๊ด๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฉํ๋์ง ๋จ๊ณ๋ณ๋ก ๋ฐฐ์๋ด
๋๋ค.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
enum์ด๋? ์ ์ฐ๋ ๊ฑธ๊น? [00:00:00]
โข
*enum(์ด๊ฑฐํ)**์ ์ฌ๋ฌ ๊ฐ์ ์์(๋ณํ์ง ์๋ ๊ฐ)๋ฅผ ํ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ ํน๋ณํ ์๋ฃํ์ด์์.
โข
์๋ฅผ ๋ค์ด, ๋นจ๊ฐ, ํ๋, ์ด๋ก ๊ฐ์ ์์ ๊ฐ๊ฐ ์์๋ก ์ ์ธํ๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ต์ง๋ง, enum์ผ๋ก ๋ฌถ์ผ๋ฉด "์์"์ด๋ผ๋ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ฃ .
โข
์์ ์์ ๊ดํธ๋ก ๊ฐ์ ์ง์ ํ ์๋ ์๋๋ฐ, ์ด๋๋ **์์ฑ์(Constructor)**๋ผ๋ ํน๋ณํ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๊ฐ์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํด์.
enum ํ์ผ ๋ง๋ค๊ธฐ์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ [00:06:27]
โข
enum์ ํด๋์ค์ฒ๋ผ ๋ณ๋์ ํ์ผ๋ก ๋ง๋ค ์ ์์ด์.
โข
์๋ฅผ ๋ค์ด,ย Rainbow๋ผ๋ enum ํ์ผ์ ๋ง๋ค์ด ๋นจ๊ฐ, ์ฃผํฉ, ๋
ธ๋, ์ด๋ก, ํ๋, ๋จ์, ๋ณด๋ผ์์ ๋์ดํด ๊ด๋ฆฌํ ์ ์์ฃ .
โข
์ด๋ ๊ฒ ๋ง๋ enum์ ๋ค๋ฅธ ํด๋์ค์์ย importํด์ ์ฌ์ฉํ ์ ์์ด์.
enum ๋ฉ์๋: values(), valueOf(), ordinal() [00:12:50]
โข
values()ย : enum์ ์ ์ธ๋ ๋ชจ๋ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํด์ค์. ์๋ฅผ ๋ค์ด,ย Rainbow.values()๋ ๋นจ๊ฐ๋ถํฐ ๋ณด๋ผ๊น์ง ๋ชจ๋ ๊ฐ์ ธ์์.
โข
valueOf("ํผํ")ย : ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ enum ์์๋ฅผ ๋ฐํํด์. "ํผํ"์ ๋ฃ์ผ๋ฉดย Rainbow.PURPLE์ ์ป๋ ๊ฑฐ์ฃ .
โข
ordinal()ย : enum ์์๊ฐ ์ ์ธ๋ ์์(์ธ๋ฑ์ค)๋ฅผ ์๋ ค์ค์. 0๋ถํฐ ์์ํด์ ๋ช ๋ฒ์งธ์ธ์ง ์ซ์๋ก ๋ฐํํด์.
์ค์ต: ํ ์ผ(To-Do) ์ํ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ [00:15:41]
โข
ํ ์ผ์ ์ํ(์์ ์ , ์งํ ์ค, ์๋ฃ)๋ฅผ enum์ผ๋ก ๊ด๋ฆฌํด๋ณด๋ ์ค์ต์ด์์.
โข
์ํ๋ฅผ enum์ผ๋ก ๋ฌถ์ผ๋ฉด, ์ํ ๋ณ๊ฒฝ์ด๋ ๊ด๋ฆฌ๊ฐ ํจ์ฌ ๊น๋ํด์ง๊ณ ์ค๋ฅ๋ ์ค์ผ ์ ์์ด์.
โข
์๋ฅผ ๋ค์ด,ย Status.START, Status.ING, Status.DONE์ฒ๋ผ ์ํ๋ฅผ ์ ์ธํ๊ณ , ํ ์ผ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ง์ ํด ๊ด๋ฆฌํฉ๋๋ค.
enum ์์ฑ์์ ๊ฐ ์ง์ ํ๊ธฐ [00:21:19]
โข
enum ์์์ ๊ฐ์ ๋ถ์ด๊ณ ์ถ์ผ๋ฉด ์์ฑ์๋ฅผ ๋ง๋ค์ด์ผ ํด์.
โข
์์ฑ์๋ enum ๋ด๋ถ์ ํน๋ณํ ๋ฉ์๋๋ก, ์์๋ง๋ค ๊ฐ์ ์ ์ฅํ๋ ์ญํ ์ ํด์.
โข
์๋ฅผ ๋ค์ด,ย START("์์ ์ ")์ฒ๋ผ ๊ดํธ ์์ ๋ฌธ์์ด์ ๋ฃ์ผ๋ฉด, ์์ฑ์๊ฐ ์ด ๊ฐ์ ๋ฐ์ ์ ์ฅํฉ๋๋ค.
โข
์์ฑ์์ ๊ฐ์ ์ ์ฅํ ๋ณ์๋ฅผ enum ์์ ์ ์ธํ๊ณ , ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ ํจ๊ป ๋ง๋ค์ด์.
ํ ์ผ ํ๋ก๊ทธ๋จ ์ฝ๋ ์์ฑ๊ณผ ๋ฉ๋ด ๊ตฌํ [00:32:11]
โข
์ต๋ 10๊ฐ์ ํ ์ผ์ ์ ์ฅํ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ํ ์ผ ์ถ๊ฐ, ๋ชฉ๋ก ๋ณด๊ธฐ, ์ํ ๋ณ๊ฒฝ, ํ๋ก๊ทธ๋จ ์ข
๋ฃ ๊ธฐ๋ฅ์ ๋ฉ๋ด๋ก ๊ตฌํํด์.
โข
์ค์บ๋๋ก ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๊ณ , ์ค์์น๋ฌธ์ผ๋ก ๋ฉ๋ด ์ ํ์ ๋ฐ๋ผ ๊ธฐ๋ฅ์ ์คํํฉ๋๋ค.
โข
ํ ์ผ ์ถ๊ฐ ์ ์ด๋ฆ๊ณผ ์ํ๋ฅผ ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ๋ชฉ๋ก ๋ณด๊ธฐ๋ก ํ ์ผ๊ณผ ์ํ๋ฅผ ์ถ๋ ฅํด์.
ํ๋ก๊ทธ๋จ ์คํ ๋ฐ ์ํ ๋ณ๊ฒฝ ํ
์คํธ [01:02:51]
โข
์คํ ํ ํ ์ผ์ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐํด๋ณด๊ณ , ๋ชฉ๋ก์์ ๋ฒํธ๋ฅผ ํ์ธํด์.
โข
์ํ ๋ณ๊ฒฝ ๋ฉ๋ด์์ ํ ์ผ ๋ฒํธ๋ฅผ ์ ํํ๊ณ , ์์ ์ , ์งํ ์ค, ์๋ฃ ์ค ์ํ๋ ์ํ๋ก ๋ณ๊ฒฝํ ์ ์์ด์.
โข
์ํ๊ฐ ๋ฐ๋๋ฉด ๋ชฉ๋ก์์ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅํด์.
โข
์
๋ ฅ ์ ๋จ์์๋ ์ํฐํค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํดย nextLine()์ ์ถ๊ฐ๋ก ํธ์ถํ๋ ํ๋ ์๋ ค์ค๋๋ค.
๋ง๋ฌด๋ฆฌ ๋ฐ enum ํ์ฉ ์ ๋ฆฌ [01:17:34]
โข
enum์ ์์๋ค์ ์งํฉ์ ๋ง๋ค์ด ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์์.
โข
ํ๋ก๊ทธ๋จ์์ ์ํ๋ ๋ถ๋ฅ์ฒ๋ผ ํ์ ๋ ๊ฐ๋ค์ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
โข
์ด๋ฒ ์์์์๋ enum์ ๊ธฐ๋ณธ ๊ฐ๋
๋ถํฐ ์์ฑ์ ํ์ฉ, ๊ทธ๋ฆฌ๊ณ ์ค์ํ ์์์ธ ํ ์ผ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ๊น์ง ์ค์ตํ๋ฉฐ ์ดํด๋ฅผ ๋์์ด์.
โข
์์ผ๋ก ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ธ ๋ enum์ ๋ ๊น๊ฒ ํ์ฉํ ์ ์์ต๋๋ค.
์์ฝ
Java์ย enum์ ์ฌ๋ฌ ์์๋ฅผ ํ๋๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ ์ฐธ์กฐ์๋ฃํ์
๋๋ค.ย values(),ย valueOf(),ย ordinal()ย ๊ฐ์ ๋ฉ์๋๋ก enum ์์๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๊ณ , ์์ฑ์๋ฅผ ํตํด ๊ฐ ์์์ ๊ฐ์ ์ง์ ํ ์๋ ์์ด์. ์์์์๋ enum์ ํ์ฉํด ํ ์ผ(To-Do) ์ํ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด, enum์ด ์ค๋ฌด์์ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์น์ ํ๊ฒ ๋ณด์ฌ์ค๋๋ค. enum ๋๋ถ์ ํ๋ก๊ทธ๋จ์ด ๋ ๊น๋ํ๊ณ ์ค๋ฅ ์์ด ๊ด๋ฆฌํ ์ ์๋ค๋ ์ , ๊ผญ ๊ธฐ์ตํ์ธ์!