Java ์ถ์ํด๋์ค ์ฝ๋ฉ ์์ ์์ฝ
์ด๋ฒ ์์์์๋ Java์ ์ถ์ํด๋์ค ๊ฐ๋
์ ๋ฐฐ์ฐ๊ณ , ๋ํ(์ผ๊ฐํ, ์ฌ๊ฐํ, ์ํ) ํด๋์ค๋ฅผ ์ถ์ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ตฌํํ๋ ๊ณผ์ ์ ์ค์ตํฉ๋๋ค. ์ถ์ํด๋์ค์ ์ถ์๋ฉ์๋์ ํน์ง๋ถํฐ, ์์๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ, ๊ทธ๋ฆฌ๊ณ ์ค์ ๊ฐ์ฒด ์์ฑ ๋ฐ ๋ฐฐ์ด ํ์ฉ๊น์ง ๋จ๊ณ๋ณ๋ก ์์ธํ ์ค๋ช
ํด์.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
์ถ์ํด๋์ค์ ์ถ์๋ฉ์๋ ์ดํดํ๊ธฐ [00:00:20]
โข
์ถ์ํด๋์ค๋ '์ค๊ณ๋' ๊ฐ์ ํด๋์ค์์. ์ง์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๊ณ , ์์ ํด๋์ค๊ฐ ๊ผญ ๊ตฌํํด์ผ ํ ๋ฉ์๋(์ถ์๋ฉ์๋)๋ง ์ ์ธํด ๋ก๋๋ค.
โข
์ถ์๋ฉ์๋๋ ๋ชธํต(์ค๊ดํธ)์ด ์์ด ์ ์ธ๋ง ๋์ด ์์ด์. ์๋ฅผ ๋ค์ดย void draw();ย ์ฒ๋ผ์.
โข
์ด๋ ๊ฒ ํ๋ฉด ์์ ํด๋์ค์์ ๋ฐ๋์ ์ด ๋ฉ์๋๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง๋ค์ด์ผ ํด์.
๋ํ ์ถ์ํด๋์ค์ ๊ตฌํ ํด๋์ค ๋ง๋ค๊ธฐ [00:01:08]
โข
์ถ์ํด๋์ค ์ด๋ฆ์ย Shapeย (๋ํ)๋ก ์ ํ๊ณ , ์ผ๊ฐํ(Triangle), ์ฌ๊ฐํ(Rectangle), ์ํ(Circle) ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค.
โข
์ดํด๋ฆฝ์ค์์ ์ถ์ํด๋์ค ๋ง๋ค ๋๋ย abstractย ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค.
โข
๊ฐ ๋ํ ํด๋์ค๋ย Shape๋ฅผ ์์๋ฐ์์ผ ํ๋ฉฐ, ์ถ์ ๋ฉ์๋๋ฅผ ๊ผญ ๊ตฌํํด์ผ ํฉ๋๋ค.
Point ํด๋์ค ์ ์ ๋ฐ ์์ฑ์ ๋ง๋ค๊ธฐ [00:06:40]
โข
๋ํ์ ์ค์ฌ ์ขํ๋ฅผ ๋ํ๋ด๋ย Pointย ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค.
โข
x,ย yย ์ขํ๋ฅผ ๋ฉค๋ฒ ๋ณ์๋ก ์ ์ธํ๊ณ , ๊ธฐ๋ณธ ์์ฑ์์ ๋งค๊ฐ๋ณ์ ์์ฑ์,ย toString()ย ๋ฉ์๋๋ฅผ ์๋ ์์ฑํฉ๋๋ค.
โข
์ดํด๋ฆฝ์ค ๋จ์ถํคย Alt + Shift + Sย โย Generate Constructorย ๋๋ย Generate toString()์ผ๋ก ์ฝ๊ฒ ๋ง๋ค ์ ์์ด์.
์ผ๊ฐํ ํด๋์ค ๊ตฌํํ๊ธฐ (์์, ์ค๋ฒ๋ผ์ด๋ฉ) [00:10:09]
โข
Triangleย ํด๋์ค๋ย Shape๋ฅผ ์์๋ฐ๊ณ , ์ถ์ ๋ฉ์๋์ธ ๋์ด(getArea())์ ๋๋ (getPerimeter())๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
โข
๊ฐ๋ก(width)์ ์ธ๋ก(height) ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์์ฑ์๋ ๋ง๋ญ๋๋ค.
โข
๋์ด๋ย width * height / 2, ๋๋ ๋ ์ ์ผ๊ฐํ ๊ฐ์ ํ 3 * ๊ฐ๋ก๋ก ๊ณ์ฐํฉ๋๋ค.
โข
์ดํด๋ฆฝ์ค ํตํฝ์ค(์๋ฌ ํ์ ํด๋ฆญ ํ โAdd unimplemented methodsโ)๋ก ์ถ์ ๋ฉ์๋ ์๋ ์์ฑ ๊ฐ๋ฅ!
์ฌ๊ฐํ ํด๋์ค ๊ตฌํํ๊ธฐ [00:16:02]
โข
Rectangleย ํด๋์ค๋ย Shapeย ์์ ํ ์ถ์ ๋ฉ์๋ ๊ตฌํํฉ๋๋ค.
โข
๋์ด๋ย width * height, ๋๋ ๋ย (width + height) * 2ย ๊ณต์์ผ๋ก ๊ณ์ฐ.
โข
์ผ๊ฐํ๊ณผ ๋น์ทํ๊ฒ ์์ฑ์, ๊ฒํฐ/์ธํฐ,ย toString()ย ๋ฉ์๋๋ ์๋ ์์ฑํด ์ฃผ์ธ์.
์ํ ํด๋์ค ๊ตฌํํ๊ธฐ (๋ฐ์ง๋ฆ, ๋์ด, ๋๋ ) [00:20:18]
โข
Circleย ํด๋์ค๋ย Shape๋ฅผ ์์๋ฐ๊ณ ,ย radius(๋ฐ์ง๋ฆ) ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ฐ์ง๋๋ค.
โข
๋์ด๋ย Math.PI * radius * radiusย (Java์์ย Math.PI๋ ์์ฃผ์จ 3.14159...๋ฅผ ์๋ฏธ).
โข
๋๋ ๋ย 2 * Math.PI * radiusย ๊ณต์ ์ฌ์ฉ.
โข
Math.pow(radius, 2)๋ก ์ ๊ณฑ๋ ํ ์ ์์ด์!
๋ํ ๋ฐฐ์ด์ ๊ฐ์ฒด ์ ์ฅ ๋ฐ ๋์ด, ๋๋ ํฉ๊ณ ๊ตฌํ๊ธฐ [00:33:51]
โข
๋ํ ๊ฐ์ฒด๋ค์ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์ด์ ๋๋ ๋ฅผ ๋ชจ๋ ๋ํฉ๋๋ค.
โข
๋ฐฐ์ด์ ๋น ์นธ์ด ์์ ์ ์์ผ๋ย nullย ์ฒดํฌ๋ฅผ ๊ผญ ํด ์ฃผ์ธ์.
โข
๊ฐ ๋ํ์ย getArea(),ย getPerimeter()ย ๋ฉ์๋๋ฅผ ํธ์ถํด ํฉ๊ณ๋ฅผ ๊ตฌํฉ๋๋ค.
instanceof ํค์๋๋ก ๊ฐ์ฒด ํ์
ํ์ธํ๊ธฐ [00:36:50]
โข
๋ฐฐ์ด์ ์ ์ฅ๋ ๋ํ์ ๋ชจ๋ย Shapeย ํ์
์ผ๋ก ์
์บ์คํ
๋์ด ์์ด ์ค์ ํ์
์ ์ ์ ์์ต๋๋ค.
โข
instanceofย ํค์๋๋ฅผ ์ฌ์ฉํด ํ์ฌ ๊ฐ์ฒด๊ฐย Triangle,ย Rectangle,ย Circleย ์ค ์ด๋ค ํ์
์ธ์ง ํ์ธํ ์ ์์ด์.
โข
์:ย if (shape instanceof Triangle) { ... }
๋ฉ์ธ ๋ฉ์๋์์ ๋ํ ๊ฐ์ฒด ์์ฑ ๋ฐ ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ [00:27:18]
โข
์ฌ์ฉ์๋ก๋ถํฐ ๋ํ ์ข
๋ฅ(1: ์ผ๊ฐํ, 2: ์ฌ๊ฐํ, 3: ์ํ)์ ํ์ํ ํฌ๊ธฐ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
โข
์ต๋ 3๊ฐ ๋ํ๊น์ง๋ง ์
๋ ฅ๋ฐ๊ณ , โ๊ทธ๋งโ ์
๋ ฅ ์ ์ข
๋ฃํฉ๋๋ค.
โข
switchย ๋ฌธ์ผ๋ก ์
๋ ฅ๊ฐ์ ๋ฐ๋ผ ์ ์ ํ ๋ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐฐ์ด์ ์ ์ฅํฉ๋๋ค.
๋ง๋ฌด๋ฆฌ ๋ฐ ๋ณต์ต [00:41:22]
โข
์ถ์ํด๋์คย Shape๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ํ๋ณ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ณผ์ ์ ์ค์ตํ์ต๋๋ค.
โข
์์๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ, ๊ฐ์ฒด ๋ฐฐ์ด ๊ด๋ฆฌ, ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ๊น์ง Java ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ๊ฐ๋
์ ๋ค๋ค์ด์.
โข
์ง์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ์ตํ๋ฉด ์ดํด๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค!
์์ฝ
์ด ์์์ Java ์ถ์ํด๋์ค์ ๊ธฐ๋ณธ ๊ฐ๋
๋ถํฐ ์์ํด, ๋ํ์ ์ถ์ํด๋์ค๋ก ์ค๊ณํ๊ณ ์ผ๊ฐํ, ์ฌ๊ฐํ, ์ํ ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ตฌํํ๋ ์ค์ต์ ๋ณด์ฌ์ค๋๋ค. ์ถ์๋ฉ์๋ ๊ตฌํ, ์์ฑ์ ์์ฑ, ๋ฐฐ์ด์ ๊ฐ์ฒด ์ ์ฅ, ์ฌ์ฉ์ ์
๋ ฅ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ย instanceof๋ฅผ ํ์ฉํ ํ์
์ฒดํฌ๊น์ง, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค์ํ ๋ถ๋ถ์ ์ฌ๋ฏธ์๊ณ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ด์. ์ง์ ๋ฐ๋ผ ํ๋ฉด์ ์ฐ์ตํด ๋ณด์ธ์!