๐Ÿ“‚ JAVA

    ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๋ผ. ๊ทธ๋Ÿฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒ์†์„ ๊ธˆ์ง€ํ•˜๋ผ - [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์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ •์˜ํ–ˆ..

    clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

    ์ด์ „ ๊ธ€์„ ํ†ตํ•ด ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ clone์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ clone์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ๊ฐ€๋ณ€ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์ž. 1. ๋ฐฐ์—ด ๋ณต์‚ฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๐Ÿ‘จ‍๐Ÿš€ public class Stack implements Cloneable{ private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[..

    clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

    ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” clone์„ ์žฌ์ •์˜ ํ•  ๋•Œ ์–ด๋–ค ์ ์„ ์ฃผ์˜ํ•ด์„œ ์žฌ์ •์˜ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ์ฃผ์˜์ ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์œผ๋ฏ€๋กœ clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค. clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ํฌ๊ฒŒ 2๊ฐ€์ง€ ์ƒํ™ฉ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๋‹ค. ๋จผ์ € ๋ถˆ๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๊ณ , ๋‹ค์Œ ๊ธ€์„ ํ†ตํ•ด ๊ฐ€๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. 1. clone ๊ทœ์•ฝ ๐Ÿ‘ฉ‍๐ŸŒพ clone์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํด๋ž˜์Šค์— ์žฌ์ •์˜๋ฅผ ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด(๊ทœ์•ฝ)์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์˜ 3๊ฐ€์ง€ ๊ทœ์•ฝ์„ ๊ธฐ์–ตํ•˜๊ณ  ์–ด๋–ป๊ฒŒ..

    clone()

    1. ๊ฐœ๋… ๐Ÿ‘ท‍โ™‚๏ธ clone() ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์„ ๋ณต์ œํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ์„ ํ•œ๋‹ค. 2. ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๐Ÿ‘ฉ‍โš•๏ธ clone()์€ Object ํด๋ž˜์Šค์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค. public class Object { protected native Object clone() throws CloneNotSupportedException; } ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ 2๊ฐ€์ง€๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. clone()์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ฉด์„œ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ protected์—์„œ public์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. public class User implements Cloneable { String name; int age; public User(String name, int age..

    ์–•์€ ๋ณต์‚ฌ(Shallow Copy) vs ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

    ์–•์€ ๋ณต์‚ฌ(Shallow Copy)๋ž€ ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (์Šคํƒ ์˜์—ญ) ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)๋ž€ ์‹ค์ œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (ํž™ ์˜์—ญ) 1. ์–•์€ ๋ณต์‚ฌ(Shallow Copy) ๐Ÿ ์–•์€ ๋ณต์‚ฌ(Shallow Copy)๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์กด์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ๋ณต์‚ฌ๋œ ๊ฐ’๋„ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. public class User { String name; int age; public User(String name, int age) { super(); this.name = name; this.age = age; } } ---------- public class ShallowCop..