๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”

    ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ22)]

    1. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ•  ๐Ÿฃ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ž์‹ ์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž… ์—ญํ• ์„ ํ•œ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ž์‹ ์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์–˜๊ธฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์˜ค์ง ์ด ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. (๋ฐ‘์—์„œ ์‚ดํŽด๋ณผ ๊ฒƒ์ด์ง€๋งŒ ์ƒ์ˆ˜ ๊ณต๊ฐœ์šฉ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.) 2. ์ƒ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค ์•ˆํ‹ฐํŒจํ„ด ๐Ÿฅ ์œ„์—์„œ ๋งํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ• ์— ๋งž์ง€ ์•Š๋Š” ์˜ˆ๋กœ ์ƒ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ์ƒ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ž€ ๋ฉ”์„œ๋“œ ์—†์ด, ์ƒ์ˆ˜๋ฅผ ๋œปํ•˜๋Š” static final ํ•„๋“œ๋กœ๋งŒ ๊ฐ€๋“ ์ฐฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งํ•œ๋‹ค. public interface PhysicalConstants { // ์•„๋ณด๊ฐ€๋“œ๋กœ ์ˆ˜ (1/๋ชฐ) static final double AVOGAD..

    ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์„ ์ƒ๊ฐํ•ด ์„ค๊ณ„ํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ21)]

    1. ๊ฐœ๋… ๐Ÿ‘ป ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋ฉด, ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํ›„ ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋””ํดํŠธ ๊ตฌํ˜„์ด ์“ฐ์ด๊ฒŒ ๋œ๋‹ค. ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธธ์ด ์—ด๋ ธ์ง€๋งŒ ๋ชจ๋“  ๊ธฐ์กด ๊ตฌํ˜„์ฒด๋“ค๊ณผ ๋งค๋„๋Ÿฝ๊ฒŒ ์—ฐ๋™๋˜๋ฆฌ๋ผ๋Š” ๋ณด์žฅ์€ ์—†๋‹ค. ์ž๋ฐ” 7๊นŒ์ง€์˜ ์„ธ์ƒ์—์„œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ "ํ˜„์žฌ์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋  ์ผ์€ ์˜์›ํžˆ ์—†๋‹ค"๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์žฅ์„ฑ๋์œผ๋‹ˆ ๋ง์ด๋‹ค. ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅธ ์ฑ„ ํ•ฉ์˜ ์—†์ด ๋ฌด์ž‘์„ฑ '์‚ฝ์ž…'๋  ๋ฟ์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์ƒํ™ฉ๋“ค์„ ์‚ดํŽด๋ณด๊ณ  ๊ทธ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์•Œ์•„๋ณด์ž. 2. [๋ฌธ์ œ ์ƒํ™ฉ 1] ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๋ถˆ๋ณ€์‹์„ ํ•ด์น˜์ง€ ์•Š๋Š” ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋ž€ ์–ด๋ ต๋‹ค. ๐Ÿค– ์ž๋ฐ” 8์˜ Collcti..

    ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์šฐ์„ ํ•˜๋ผ(์ถ”์ƒ ๊ณจ๊ฒฉ ๊ตฌํ˜„(Skeletal Implementation) ํด๋ž˜์Šค)(2) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ20)]

    ์ด์ „ ๊ธ€์„ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ์žฅ์ ๋“ค์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ณจ๊ฒฉ ๊ตฌํ˜„(skeletal implementation) ํด๋ž˜์Šค๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์ทจํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์€ '์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๊ตฌํ˜„ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์€ ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ๊ตฌํ˜„ํ•ด ์ค„ ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์€ ์ถ”์ƒ ๊ณจ๊ฒฉ ํด๋ž˜์Šค์—์„œ ๋‚˜๋จธ์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.'๋Š” ๊ฒƒ์ด๋‹ค. ์ถ”์ƒ ๊ณจ๊ฒฉ ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์˜€์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” 2๊ฐ€์ง€์˜ ์žฅ์ ์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. (๋ช…์นญ๊ณผ ๊ด€๋ จํ•˜์—ฌ, ์ถ”์ƒ ๊ณจ๊ฒฉ ํด๋ž˜์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด์œ ๋Š” ์ผ๋ถ€๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ์ผ๋ถ€๋Š” ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ผˆ๋Œ€ ์—ญํ• ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์šธ ๊ฑฐ ๊ฐ™๋‹ค.) ์žฅ์  1. ๋‹จ์ˆœํžˆ..

    ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์šฐ์„ ํ•˜๋ผ(์ธํ„ฐํŽ˜์ด์Šค์˜ ์žฅ์ )(1) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ20)]

    ์ž๋ฐ”๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์ค‘ ๊ตฌํ˜„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ '์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค' 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ž๋ฐ” 8๋ถ€ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค๋„ Default Method๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ชจ๋‘ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘˜์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์ •์˜ํ•œ ํƒ€์ž…์„ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ์ž๋ฐ”๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ ์ง€์›ํ•˜๋‹ˆ, ์ถ”์ƒ ํด๋ž˜์Šค ๋ฐฉ์‹์€ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์ปค๋‹ค๋ž€ ์ œ์•ฝ์„ ์•ˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์„ ์–ธํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ์ •์˜ํ•˜๊ณ  ๊ทธ ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ž˜ ์ง€ํ‚จ ํด๋ž˜์Šค๋ผ๋ฉด ๋‹ค๋ฅธ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ๋“  ๊ฐ™์€ ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์ถ”์ƒํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์˜ 5๊ฐ€์ง€ ์žฅ์ ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด์„œ ..

    ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๋ผ. ๊ทธ๋Ÿฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒ์†์„ ๊ธˆ์ง€ํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ19)]

    ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ์•„๋ณด์ž. 1. ์ƒ์†์šฉ ํด๋ž˜์Šค๋Š” ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•˜๋Š”์ง€(์ž๊ธฐ ์‚ฌ์šฉ) ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค. ๐Ÿ›บ ์žฌ์ •์˜ ๊ฐ€๋Šฅ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ƒํ™ฉ์„ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค. ์œ ๋ช…ํ•œ ๊ฒฉ์–ธ ์ค‘ ํ•˜๋‚˜์ธ "์ข‹์€ API ๋ฌธ์„œ๋ž€ '์–ด๋–ป๊ฒŒ'๊ฐ€ ์•„๋‹Œ '๋ฌด์—‡'์„ ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค"์™€ ๋Œ€์น˜๋˜๋Š” ๋‚ด์šฉ์ด๊ธฐ๋„ ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ƒ์†์ด ์บก์Šํ™”๋ฅผ ํ•ด์น˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด '์ƒ์†๋งŒ ์•„๋‹ˆ์—ˆ๋‹ค๋ฉด ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์•˜์–ด์•ผ ํ• ' ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค. AbstractCollection.java์˜ remove ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. ์œ„์™€ ๊ฐ™์ด API ๋ฌธ์„œ์˜ ๋ฉ”์„œ๋“œ ์„ค๋ช… ๋์— "Implementation Requirements"๊ฐ€ ๋ถ™์€ ๊ฑธ ๋ณผ..

    ์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ18)]

    ์ƒ์†์€ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์ด์ง€๋งŒ, ํ•ญ์ƒ ์ตœ์„ ์€ ์•„๋‹ˆ๋‹ค. ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋‚ด๊ธฐ ์‰ฌ์šด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ์ƒ์œ„ ํด๋ž˜์Šค์™€ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋ชจ๋‘ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ†ต์ œํ•˜๋Š” ํŒจํ‚ค์ง€ ์•ˆ์—์„œ๋ผ๋ฉด ์ƒ์†๋„ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ํ™•์žฅํ•  ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ณ  ๋ฌธ์„œํ™”๋„ ์ž˜ ๋œ ํด๋ž˜์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์งˆ ์•ˆ์ „ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ํŒจํ‚ค์ง€ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด, ์ฆ‰ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ผ์€ ์œ„ํ—˜ํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃฐ '์ƒ์†'์€ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” '๊ตฌํ˜„ ์ƒ์†'์„ ๋งํ•œ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” '์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†'๊ณผ๋Š” ๋ฌด๊ด€ํ•œ ๊ฒƒ์ด๋‹ค. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ณผ ๋‹ฌ๋ฆฌ ์ƒ์†์€ ์บก์Šํ™”๋ฅผ ๊นจ๋œจ๋ฆฐ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” 2๊ฐ€์ง€ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ํ•ด๊ฒฐ์ฑ…์— ๋Œ€ํ•ด์„œ ์•Œ..

    ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ณ ๋ คํ•  ๊ฒƒ)(3) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)]

    ์ด์ „ ๊ธ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™)(1) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)] ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค์˜ ์žฅ์ , ๋‹จ์ , ๋‹จ์  ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•)(2) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)] ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” '๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ณ ๋ คํ•  ๊ฒƒ'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 1. ์ƒ์†์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ๐Ÿฆ“ ์ด์ „ ๊ธ€์„ ํ†ตํ•ด ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋ณด์žฅํ•˜๋ ค๋ฉด ์ž์‹ ์„ ์ƒ์†ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ž์‹ ์„ ์ƒ์†ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ final ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ๋” ์œ ์—ฐํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋ชจ๋“  ์ƒ์„ฑ์ž๋ฅผ private ํ˜น์€ package-private์œผ๋กœ ๋งŒ๋“ค๊ณ  public ์ •์  ํŒฉํ„ฐ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. // 1...

    ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค์˜ ์žฅ์ , ๋‹จ์ , ๋‹จ์  ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•)(2) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)]

    ์ด์ „ ๊ธ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™)(1) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)] ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ถˆ๋ณ€ ํด๋ž˜์Šค์˜ ์žฅ์ , ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  ๋‹จ์  ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 1. ์žฅ์  ๐Ÿš‘ ๐Ÿ“˜ ์žฅ์  1. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ํ•ฉํ•˜๋‹ค. public final class Complex { private final double re; private final double im; public Complex(double re, double im) { this.re = re; this.im = im; } public double realPart() { return re;} public double imaginaryPart() {return im;} public Complex pl..

    ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™)(1) - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ17)]

    ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ž€ ์ธ์Šคํ„ด์Šค์˜ ๋‚ด๋ถ€ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ๋งํ•œ๋‹ค. ๋ถˆ๋ณ€ ์ธ์Šคํ„ด์Šค์— ๊ฐ„์ง๋œ ์ •๋ณด๋Š” ๊ณ ์ •๋˜์–ด ๊ฐ์ฒด๊ฐ€ ํŒŒ๊ดด๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ์ ˆ๋Œ€ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋Š” ๊ฐ€๋ณ€ ํด๋ž˜์Šค๋ณด๋‹ค ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์—ฌ์ง€๋„ ์ ๊ณ  ํ›จ์”ฌ ์•ˆ์ „ํ•˜๋‹ค๋Š” ์ด์ ์ด ์žˆ๋‹ค. ์•„์ดํ…œ 17์—์„œ๋Š” ์•„๋ž˜ 3๊ฐ€์ง€ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™ ๋ถˆ๋ณ€ ํด๋ž˜์Šค์˜ ์žฅ์ , ๋‹จ์ , ๋‹จ์  ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ• ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ณ ๋ คํ•  ๊ฒƒ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” '1. ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ทœ์น™'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 1. ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ๐Ÿš• public class PhoneNumber { private short areaCode, prefix, lineNum; pub..

    public ํด๋ž˜์Šค์—์„œ๋Š” public ํ•„๋“œ๊ฐ€ ์•„๋‹Œ ์ ‘๊ทผ์ž ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ16)]

    ์ œ๋ชฉ์—์„œ์™€ ๊ฐ™์ด public ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ public ํ•„๋“œ๊ฐ€ ์•„๋‹Œ ์ ‘๊ทผ์ž ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค. 1. public ํด๋ž˜์Šค์—์„œ public ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ์˜ ๋ฌธ์ œ์  ๐Ÿฅž public class Point { public double x; public double y; } ์œ„์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์บก์Šํ™”์˜ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. API๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋‚ด๋ถ€ ํ‘œํ˜„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ๋ถˆ๋ณ€์‹์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ์™ธ๋ถ€์—์„œ ํ•„๋“œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ถ€์ˆ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. 2. public ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ์ž ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ์˜ ์ด์  ๐Ÿง‡ public class Point { private double ..

    ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ตœ์†Œํ™”ํ•˜๋ผ - [4์žฅ. ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค(์•„์ดํ…œ15)]

    ์ด๋ฒˆ ๊ธ€์„ ํ†ตํ•ด '์ •๋ณด ์€๋‹‰์˜ ์žฅ์ '๊ณผ 'ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค', '๋ฉค๋ฒ„(ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ค‘์ฒฉ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค)'์˜ ์ ‘๊ทผ ์ œํ•œ์ž ์›์น™์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 1. ์ •๋ณด ์€๋‹‰์˜ ์žฅ์  ๐ŸŽธ ์ •๋ณด ์€๋‹‰์˜ ์žฅ์ ์€ ์ •๋ง ๋งŽ์€๋ฐ ๊ทธ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ๊ตฌํ˜„๊ณผ API๋ฅผ ๋ถ„๋ฆฌ์‹œ์ผœ์„œ ์–ป๋Š” ์ด์ ๊ณผ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค. ์ •๋ณด ์€๋‹‰์˜ ์žฅ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ธ๋‹ค. ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋น„์šฉ์„ ๋‚ฎ์ถ˜๋‹ค. ๊ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋” ๋นจ๋ฆฌ ํŒŒ์•…ํ•˜์—ฌ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ต์ฒดํ•˜๋Š” ๋ถ€๋‹ด๋„ ์ ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ •๋ณด ์€๋‹‰ ์ž์ฒด๊ฐ€ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ฃผ์ง€๋Š” ์•Š์ง€๋งŒ, ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ๋„์›€์„ ์ค€๋‹ค. ์™„์„ฑ๋œ ์‹œ์Šคํ…œ์„ ํ”„๋กœํŒŒ์ผ๋งํ•ด ์ตœ์ ํ™”ํ•  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •ํ•œ ๋‹ค์Œ, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋งŒ ์ตœ..

    Comparable์„ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ คํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ14)]

    ์ด๋ฒˆ ๊ธ€์„ ํ†ตํ•ด Comparable์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋ฉด ์ข‹์„์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์šฐ์„ ์€ 'compareTo ๊ทœ์•ฝ'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  'compareTo๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. (๋งŒ์•ฝ Comparable์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.) ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ Comparable ์ธํ„ฐํŽ˜์ด์Šค์˜ ์œ ์ผ๋ฌด์ดํ•œ ๋ฉ”์„œ๋“œ์ธ compareTo์˜ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ž. ์ด๋Š” ์•„๋ž˜์˜ 2๊ฐ€์ง€๋งŒ ๋นผ๋ฉด Object.equals์™€ ๊ฐ™๋‹ค. ๋‹จ์ˆœ ๋™์น˜์„ฑ ๋น„๊ต์— ๋”ํ•ด์„œ ์ˆœ์„œ๊นŒ์ง€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. Generic์„ ์ง€์›ํ•œ๋‹ค. 1. compareTo ๊ทœ์•ฝ ๐Ÿช” sgn(ํ‘œํ˜„์‹) ํ‘œ๊ธฐ๋Š” ์ˆ˜ํ•™์—์„œ ๋งํ•˜๋Š” ๋ถ€ํ˜ธ ํ•จ์ˆ˜๋ฅผ ๋œปํ•˜๋ฉฐ, ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ์Œ์ˆ˜, 0, ์–‘์ˆ˜ ์ผ ๋•Œ -1, 0, 1์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ •์˜ํ–ˆ..