๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€601

[D+70] Nested Class ๊ตญ๋น„์ง€์› D+70 - Nested Class - Nested Class ํด๋ž˜์Šค๋ฅผ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด Outer Class์™€ Nested Class๊ฐ€ ์žˆ๋‹ค. Outer Class๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ๋ฐฐ์›Œ์™”๋˜ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ์•„์•ผํ• ๊ฒƒ์€ ์—†๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒˆ์— Nested Class์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋กœ ํ•˜๋‹ค. • Nested Class์˜ ์‚ฌ์šฉ ๋ชฉ์  - ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค์˜ ์ •์˜(์กด์žฌ ์ž์ฒด)๋ฅผ ๊ฐ์ถ”๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ๋‚ด๋ถ€์ ์œผ๋กœ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์ด ๊ฐ€์ง€ ์•Š๋Š”๋‹ค. - ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ธฐ ํŽธํ•˜๋‹ค. (๋ณด๊ธฐ ํŽธํ•˜๋‹ค๋Š” ๋ง์€ ๊ด€์‹ฌ์ด ์—†๋‹ค๋Š” ์˜๋ฏธํ•˜๊ณ ๋Š” ๋‹ค๋ฅด๋‹ค.) • Nested Class class Outer// Outer Class { class Nested// N.. 2022. 12. 29.
[D+69] ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ๊ตฌํ˜„ ๊ตญ๋น„์ง€์› D+69 - ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ๊ตฌํ˜„ - ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ • ๊ฐœ๋ฐœํ™˜๊ฒฝ ์ค€๋น„ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•์˜ ์ดํ•ด ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ๊ณผ ๊ตฌ์ถ• ์„ค๊ณ„์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ด์— ๋งž๋Š” ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ ์ •์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ์ œํ’ˆ๋“ค์˜ ์„ฑ๋Šฅ๊ณผ ๋ผ์ด์„ ์Šค ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ ํŽธ์˜์„ฑ ๋“ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ๋„ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ข…๋ฅ˜์™€ ํŠน์„ฑ - ๊ตฌํ˜„ ๋„๊ตฌ : ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋กœ ์ฝ”๋“œ์˜ ์ž‘์„ฑ ๋ฐ ํŽธ์ง‘, ๋””๋ฒ„๊น… ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ Eclipse, Visual Studio Code, IntelliJ ๋“ฑ์ด ์žˆ๋‹ค. - ํ…Œ์ŠคํŠธ ๋„๊ตฌ : ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋„๊ตฌ๋“ค๋กœ xUnit, Sp.. 2022. 12. 28.
[D+68] enum, Annotation, ๊ฐ€๋ณ€์ธ์ž, Nested Class, Inner Class ๊ตญ๋น„์ง€์› D+68 - enum, Annotation, ๊ฐ€๋ณ€์ธ์ž, Nested Class, Inner Class - enum - enumeration ์—ด๊ฑฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž… - ์—ด๊ฑฐํ˜• ๋ฐ์ดํ„ฐํƒ€์ž…์€ ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ์—ด๊ฑฐ์‹œํ‚จ ๋ฐ์ดํ„ฐ๋กœ ํ•œ์ •์‹œํ‚ค๋Š” ๋ฐ์ดํ„ฐํƒ€์ž…์ด๋‹ค. • ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ enum์—ญํ•  ์‚ฌ์šฉ์‹œ ๋ฌธ์ œ์  - ์ธํ„ฐํŽ˜์ด์Šค์˜ ์›๋ž˜์šฉ๋„์™€ ๋™๋–จ์–ด์ง„ ์‚ฌ์šฉ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์˜ค์šฉ๋œ๋‹ค. - ๋ณ€์ˆ˜๊ฐ’์˜ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ œํ•œ์„ ๋‘˜ ์ˆ˜ ์—†๋‹ค. (์ œํ•œ์—†์ด ๋‹ค๋ฅธ ๊ฐ’์ด ๋ณ€์ˆ˜๊ฐ’์— ๋“ค์–ด๊ฐ€๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค) - ์‹ค์ œ๊ฐ’์€ ์ •์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ฐ’๊ณผ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์˜ค๋ฅ˜๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์—†๋‹ค. interface IDAYS { int SUNDAY = 0;// ์ผ int MONDAY = 1;// ์›” int TUESDAY = 2;// ํ™” int W.. 2022. 12. 27.
[D+67] Generic๊ณผ ์™€์ผ๋“œ์นด๋“œ ๋ณต์Šต ๋ฐ ์ •๋ฆฌ ๊ตญ๋น„์ง€์› D+67 - Generic๊ณผ ์™€์ผ๋“œ์นด๋“œ ๋ณต์Šต ๋ฐ ์ •๋ฆฌ - Generic ์ง€๊ธˆ๊นŒ์ง€๋Š” ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค๋•Œ์—๋Š” ์• ์ดˆ์— ํƒ€์ž…์„ ๊ฒฐ์ •ํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ด์™”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ๊ฒฝ์šฐ ํฐํ‹€์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์œผ๋ฉด์„œ ํƒ€์ž…๋งŒ ๋‹ค๋ฅธ ํ˜•์‹์˜ ๋ฉ”์†Œ๋“œ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ํ•„์š”ํ•  ๊ฒฝ์šฐ ๊ฐ ํƒ€์ž…์— ๋”ฐ๋ผ์„œ ๋”ฐ๋กœ๋”ฐ๋กœ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์‚ฌ์šฉํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ œ๋„ค๋ฆญ์ด๋‹ค. • Generic Programming ์ œ๋„ค๋ฆญ์€ ์‹คํ–‰์‹œ์ ์— ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์žฌํ™œ์šฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๊ทน๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฅ๋‹จ์  - ์žฅ์  : ๊ทธ๋•Œ ๊ทธ๋•Œ ๋งŒ๋“ค์–ด์„œ ์ƒํ™ฉ์— ๋”ฑ ๋“ค์–ด๋งž๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. - ๋‹จ์  : ์ƒํ™ฉ์— ๋”ฑ ๋“ค์–ด๋งž๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋จผ์ € ํ˜•ํ‹€์„ .. 2022. 12. 23.
[D+66] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 (Queue, Stack, Deque, Map<K, V> ์ธํ„ฐํŽ˜์ด์Šค) ๊ตญ๋น„์ง€์› D+66 - ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 - Queue - FIFO : First In First Out - ์ธํ„ฐํŽ˜์ด์Šค๋กœ Queue๋ฅผ ์šด์˜ํ•˜๋Š” ์—ฐ์‚ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. - List๊ตฌ์กฐ๋‚˜ ArrayDeque๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. Queue queue = new LinkedList(); // Queue์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ LinkedList • ์ƒํƒœ - normal : ํ๊ฐ€ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ - overflow : ํ๊ฐ€ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€ํ•œ full ์ƒํƒœ - underflow : ํ๊ฐ€ ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•œ empty ์ƒํƒœ • ๋ฉ”์†Œ๋“œ ์˜ˆ์™ธ๋ฐœ์ƒ : ์˜ˆ์™ธ ๋ฐœ์ƒ - add() : ์ถ”๊ฐ€ - remove() : ์‚ญ์ œ - element() : ๋‹ค์Œ์— ์‚ญ์ œ๋  ๊ฐ’ ํ™•์ธ ์˜ˆ์™ธ ๋ฏธ๋ฐœ์ƒ : ์˜ˆ์™ธ ๋ฏธ๋ฐœ์ƒ - offer() : ์ถ”๊ฐ€ - poll().. 2022. 12. 23.
[D+65] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 (Set<E> ์ธํ„ฐํŽ˜์ด์Šค, ํ•ด์‰ฌ, TreeSet<E> ์ธํ„ฐํŽ˜์ด์Šค) ๊ตญ๋น„์ง€์› D+65 - ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 - Set ์ธํ„ฐํŽ˜์ด์Šค - ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. - ์ˆœ์„œ๊ฐ€ ์—†๋‹ค. (์›์†Œ์˜ ๋ฌด์ˆœ์„œ) - ์ค‘๋ณต์ด ์—†๋‹ค. (์›์†Œ์˜ ์œ ์ผ์„ฑ) • ๋™์ผ๋ฐ์ดํ„ฐ์˜ ํŒ๋‹จ set์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ค‘๋ณต์ด ์—†๋Š” ์œ ์ผ์„ฑ์ด๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— equals()์™€ hashCode()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ†ตํ•ด์„œ ํ†ต์ผ๋ฐ์ดํ„ฐ๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ฆ‰, ๋จผ์ € ๋ฐ์ดํ„ฐ์—๋Œ€ํ•œ hashCode๋ฅผ ๊ตฌํ•œ๋‹ค์Œ equals๋กœ ํ•ด์‰ฌ๊ฐ’์„ ๋น„๊ตํ•ด ๋™์ผ๋ฐ์ดํ„ฐ๋ฅผ ํŒ๋‹จํ•œ๋‹ค. • hashCode์˜ ๋“ฑ์žฅ๋ฐฐ๊ฒฝ set์ธํ„ฐํŽ˜์ด์Šค๋Š” ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ ๋งŒ์•ฝ n๋ฒˆ์งธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐˆ๋•Œ n-1๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค. ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฒฝ์šฐ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ๋  .. 2022. 12. 22.