Search

Java ์ถ”์ƒํด๋ž˜์Šค ์ฝ”๋”ฉ

Java ์ถ”์ƒํด๋ž˜์Šค ์ฝ”๋”ฉ ์˜์ƒ ์š”์•ฝ

์ด๋ฒˆ ์˜์ƒ์—์„œ๋Š” Java์˜ ์ถ”์ƒํด๋ž˜์Šค ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ , ๋„ํ˜•(์‚ผ๊ฐํ˜•, ์‚ฌ๊ฐํ˜•, ์›ํ˜•) ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ์‹ค์Šตํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ƒํด๋ž˜์Šค์™€ ์ถ”์ƒ๋ฉ”์†Œ๋“œ์˜ ํŠน์ง•๋ถ€ํ„ฐ, ์ƒ์†๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋ฐฐ์—ด ํ™œ์šฉ๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„๋กœ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์š”.

๋ชฉ์ฐจ

1.
์ถ”์ƒํด๋ž˜์Šค์™€ ์ถ”์ƒ๋ฉ”์†Œ๋“œ ์ดํ•ดํ•˜๊ธฐ [00:00:20]
2.
๋„ํ˜• ์ถ”์ƒํด๋ž˜์Šค์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ [00:01:08]
3.
Point ํด๋ž˜์Šค ์ •์˜ ๋ฐ ์ƒ์„ฑ์ž ๋งŒ๋“ค๊ธฐ [00:06:40]
4.
์‚ผ๊ฐํ˜• ํด๋ž˜์Šค ๊ตฌํ˜„ํ•˜๊ธฐ (์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ) [00:10:09]
5.
์‚ฌ๊ฐํ˜• ํด๋ž˜์Šค ๊ตฌํ˜„ํ•˜๊ธฐ [00:16:02]
6.
์›ํ˜• ํด๋ž˜์Šค ๊ตฌํ˜„ํ•˜๊ธฐ (๋ฐ˜์ง€๋ฆ„, ๋„“์ด, ๋‘˜๋ ˆ) [00:20:18]
7.
๋„ํ˜• ๋ฐฐ์—ด์— ๊ฐ์ฒด ์ €์žฅ ๋ฐ ๋„“์ด, ๋‘˜๋ ˆ ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ [00:33:51]
8.
instanceof ํ‚ค์›Œ๋“œ๋กœ ๊ฐ์ฒด ํƒ€์ž… ํ™•์ธํ•˜๊ธฐ [00:36:50]
9.
๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์—์„œ ๋„ํ˜• ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ [00:27:18]
10.
๋งˆ๋ฌด๋ฆฌ ๋ฐ ๋ณต์Šต [00:41:22]

์ถ”์ƒํด๋ž˜์Šค์™€ ์ถ”์ƒ๋ฉ”์†Œ๋“œ ์ดํ•ดํ•˜๊ธฐ [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๋ฅผ ํ™œ์šฉํ•œ ํƒ€์ž… ์ฒดํฌ๊นŒ์ง€, ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์žฌ๋ฏธ์žˆ๊ณ  ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”. ์ง์ ‘ ๋”ฐ๋ผ ํ•˜๋ฉด์„œ ์—ฐ์Šตํ•ด ๋ณด์„ธ์š”!