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

๐Ÿ“š Kotlin9

[TCP Socket ํ†ต์‹ ] Okio ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•œ kotlin socket ํ†ต์‹  io stream ๊ณผ socket ์„ ์ด์šฉํ•œ tcp ํ†ต์‹ ์€ java ๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•  ๋•Œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ฑ„ํŒ… ์ •๋„์˜ ์˜ˆ์ œ๋กœ ์ดํ•ดํ•˜๋ฉฐ ๋„˜์–ด๊ฐ”๋‹ค.. ์›ฌ๋งŒํ•œ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์€ http ๋กœ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์ด๋ฅผ ๋” ๊นŠ๊ฒŒ ํŒŒ๋ฉฐ ๊ณต๋ถ€ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ด์งํ•œ ํšŒ์‚ฌ์—์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋งก๊ฒŒ ๋œ ์ฒซ ๊ณผ์ œ๋Š” TCP ์ „๋ฌธ ํ†ต์‹ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์†Œ์ผ“ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ, java socket api ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆœ์ˆ˜ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, kotlin ์—์„œ๋Š” okio ๋ผ๋Š” ํ†ต์‹  ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ด๋ฅผ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด์„œ ์ „๋ฌธ ํ†ต์‹ ์„ ์œ„ํ•œ ์†Œ์ผ“ ํด๋ผ์ด์–ธํŠธ ์ดˆ์„์„ ๊ตฌํ˜„ํ•ด๋ดค๋‹ค. ์ž˜ ํ•ด๋ณด์ง€ ์•Š์€ socket ํ†ต์‹ ์„ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋ฉฐ ์ดํ‹€๊ฐ„ ๋งŽ์ด ๊ณ ํ†ต ๋ฐ›์•˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ์ข€ ๋” ํŽธ๋ฆฌํ•œ kotlin okio ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.. 2023. 6. 24.
[Effective Kotlin] ์•„์ดํ…œ 49. ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ์—๋Š” ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ์ฝ”ํ‹€๋ฆฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Collection ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ iterable ์—์„œ๋„ filter, map ๋“ฑ ๋™์ผํ•œ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋ฉด์„œ, ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€์—ฐ ์—ฐ์‚ฐ์„ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์™€ ๊ฐ™์€ Stream, ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” Sequence๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ์ •๋ฆฌํ•ด๋ณด์ž. Iterable๊ณผ Sequence public inline fun Iterable.filter( predicate: (T) -> Boolean ): List { return filterTo(ArrayList(), predicate) } public fun Sequence.filter( predicate: (T) -> Boolean ): Sequence { return FilteringSeque.. 2023. 2. 4.
[Effective Kotlin] ์•„์ดํ…œ 47. ์ธ๋ผ์ธ ํด๋ž˜์Šค์˜ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜๋ผ ์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ์„ ๊ฑฐ์˜ ๋‹ค ์ฝ์–ด ๊ฐ„๋‹ค. ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”๋‚˜ ์ฝ”ํ‹€๋ฆฐ์ด๋‚˜ ๋ฐฑ์—”๋“œ์—์„œ API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠน์ • ๋ถ„์•ผ์˜ ์‚ฌ์šฉ์— ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ , ์–ธ์–ด ์ž์ฒด๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ฑ…์ด๋‹ค. ๋‚˜๋Š” ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ๋˜์ƒˆ๊ธฐ๊ณ ์ž ํŠน์ • ์œ ์šฉํ•œ ์•„์ดํ…œ๋“ค๋งŒ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•œ๋‹ค. ๋”ฐ๋กœ ๊ธ€๋กœ ์ •๋ฆฌํ•˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ์ฑ•ํ„ฐ๋Š” ์ฝ์–ด๊ฐ€๋ฉฐ ์ฝ”ํ‹€๋ฆฐ์— ๋Œ€ํ•ด ๋” ๊นŠ์€ ์ดํ•ด๋ฅผ ํ•˜๋ ค ๋…ธ๋ ฅํ•œ๋‹ค. Inline ํ•œ์ •์ž๊ฐ€ ์ฐธ ๋งŽ์ด ๋‚˜์™”๋Š”๋ฐ, ๊ฑฐ์˜ ๊ณ ์ฐจ ํ•จ์ˆ˜๋‚˜ ํƒ‘ ๋ ˆ๋ฒจ ํ•จ์ˆ˜์— ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•™์Šตํ–ˆ๋‹ค. ์„ฑ๋Šฅ์  ๋ถ€๋ถ„์—์„œ ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ํŽธ์ž…๋˜๊ธฐ์— ์šฐ์ˆ˜ํ•˜๋ฏ€๋กœ, ์ธ์ƒ ๊นŠ์€ ๊ฐœ๋…์ด์—ˆ๋‹ค. ํ†ฑ๋ ˆ๋ฒจ ํ•จ์ˆ˜๋‚˜ ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๋ฉด Inli.. 2023. 2. 3.
[Effective Kotlin] ์•„์ดํ…œ 36. ์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ผ [์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] ๋ฅผ ์ฝ์—ˆ๋˜ ๊ธฐ์–ต์„ ๋– ์˜ฌ๋ ธ์„ ๋•Œ '์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ผ' ๋ผ๋Š” ์•„์ดํ…œ์ด ์ƒ๋‹นํžˆ ์ธ์ƒ ๊นŠ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปดํฌ์ง€์…˜ ์ ์šฉ์‹œํ‚ค๋ฉด์„œ ๋‹คํ˜•์„ฑ์„ ๋งŒ์กฑ์‹œํ‚ค๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„์•ผ ํ•˜๋Š”๋ฐ, ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ์ฐธ ๋”๋Ÿฌ์›Œ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์„ ์ด๋ฅผ ๊ธฐ๊ฐ€ ๋ง‰ํžˆ๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๋‹ค์‹œ ์ƒ์†๊ณผ ์ปดํฌ์ง€์…˜์˜ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด๋ฅผ ์ฝ”ํ‹€๋ฆฐ์ด ์–ด๋–ป๊ฒŒ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด ๋ณด์ž. ์ƒ์†์˜ ๋ฌธ์ œ์  ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋ฐ–์— ์—†์Œ ์Šˆํผํด๋ž˜์Šค์˜ ์ƒํƒœ, ๋ฉ”์„œ๋“œ, ํ–‰์œ„ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜จ๋‹ค. ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ๊ต‰์žฅํžˆ ์ข‹์€ ๋„๊ตฌ ๊ทธ๋ ‡๊ธฐ์— ์ผ๋ถ€๋ถ„๋งŒ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ถ€์ ํ•ฉํ•œ ๋ฐฉ๋ฒ• ์ด๋ฅผ ์œ„ํ•ด์„œ ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์บก์Šํ™”๋ฅผ ๊นจ๋Š” ์ƒ์† ๋‚ด๋ถ€์ ์ธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์บก์Šํ™”๊ฐ€ ๊นจ์ง„๋‹ค. ์ปดํฌ์ง€์…˜ ์Šˆํผํด๋ž˜.. 2023. 1. 30.
[Effective Kotlin] ์•„์ดํ…œ 32. ์ƒ์„ฑ์ž ๋Œ€์‹  ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ฐ€์žฅ ์˜๋ฏธ ์žˆ๊ฒŒ ์ฝ์€ ์ฑ…์€ [์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”]์ด๋‹ค. ์ž๋ฐ”๋ฅผ ๋งŒ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ง‘ํ•„ํ•œ ์ฑ…์ด๋ฏ€๋กœ, ์ž๋ฐ”๋ฅผ ์ž๋ฐ”๋‹ต๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„์ฃผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค. ๊ฐ€์žฅ ์ฒซ ์ฑ•ํ„ฐ์ธ '์ƒ์„ฑ์ž ๋Œ€์‹  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ'๋ผ๋Š” ์•„์ดํ…œ์„ ๊ต‰์žฅํžˆ ์˜๋ฏธ ์žˆ๊ฒŒ ์ฝ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ๋‚ด์šฉ์„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์• ์šฉํ–ˆ์—ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๋„ ์ž๋ฐ”์˜ ์ด์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ„ ์–ธ์–ด์ด๋ฏ€๋กœ, ๋น„์Šทํ•˜๊ฒŒ ์ ์šฉ ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์„์ง€๋ฅผ ์ƒ๊ฐํ•ด ๋ดค๋‹ค. ํšŒ์‚ฌ์— ๋“ค์–ด๊ฐ€์„œ ์ฝ”ํ‹€๋ฆฐ์„ ๋ฐฐ์šฐ๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ, ๊ฐ€์žฅ ๋ˆˆ์— ๋„์—ˆ๋˜ ๋ถ€๋ถ„์ด dto ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๊ณ , ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–จ๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„๋“ค๊ณผ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ž๋ฐ”์™€ ๋™์ผํ•˜๊ฒŒ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŽ์ด๋“ค ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์–ป์—ˆ๊ณ , ๊ทธ๋Œ€๋กœ ์ ์šฉํ–ˆ์—ˆ๋‹ค. ์ดํŽ™ํ‹ฐ๋ธŒ.. 2023. 1. 29.
[Effective kotlin] ์•„์ดํ…œ 27. ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ํŠน์„ฑ ์ค‘ '์ถ”์ƒํ™”'์˜ ์ฐธ๋œ ์˜๋ฏธ๋ฅผ ์•Œ๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค. ๊ฒฐ๋ก ์€ ๋งŽ์ด ๊ณต๋ถ€ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ™•์žฅํ•˜๊ณ  ์ ์šฉํ•ด ๋ด์•ผ ๊ทธ ์˜๋ฏธ๋ฅผ ๋น„๋กœ์†Œ ์ดํ•ดํ•˜๋ฆฌ๋ผ ์ƒ๊ฐํ•œ๋‹ค. ์ƒ์ˆ˜ const val NAME_PREFIX = "prefix" fun getName() : String = NAME_PREFIX + this.name ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ถ”์ƒํ™” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณธ ์ฝ”๋“œ์—์„œ String ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ ๋”ฐ๋กœ ๋นผ์„œ ์ƒ์ˆ˜ํ™”๋ฅผ ์‹œํ‚ค๋ฉด ์ดํ•ด๋„ ์‰ฌ์šธ ๋ฟ ์•„๋‹ˆ๋ผ. ๋ณ€๊ฒฝํ•˜๊ธฐ๋„ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค. ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์— ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๊ณ , ๋ณ€๊ฒฝ์ด ์‰ฝ๋‹ค. ํ•จ์ˆ˜ ํŠน์ • ํ–‰์œ„๋ฅผ ํ•จ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๊ฐ„๋‹จํžˆ ํ™•์žฅ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ์ถ”์ƒ.. 2023. 1. 29.
[Effective Kotlin] ์•„์ดํ…œ 24. ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ variance ํ•œ์ •์ž๋ฅผ ํ™œ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ์šฉํ•˜๋ฉด์„œ ์ถ”์ƒํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ ๊ทน ํ™œ์šฉํ–ˆ์—ˆ๊ณ , ๊ฐ•ํƒ€์ž… ์–ธ์–ด์˜€๊ธฐ์— ํŠนํžˆ ํƒ€์ž…์„ ์ž˜ ํ™œ์šฉํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์ œ๋„ค๋ฆญ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ณต๋ณ€, ๋ฐ˜๊ณต๋ณ€ ์„ฑ ๋“ฑ์˜ ํŠน์ง•์„ ์ œ๋„ค๋ฆญ์ด ์–ด๋–ป๊ฒŒ ํ’€์–ด๋ƒˆ๋Š”์ง€ ๊ณต๋ถ€ํ–ˆ๋‹ค. extend, super ๋“ฑ์˜ ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž…์„ ์ ์ ˆํžˆ ์ œ์–ดํ–ˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ œ๋„ค๋ฆญ์˜ ํ•œ์ •์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ”์˜ ๊ฒฐํ•จ์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ ๋ง์ด์ง€. Out ํ•œ์ •์ž ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณต๋ณ€์œผ๋กœ ๋งŒ๋“ ๋‹ค. class University open class Student class FreshMan : Student() fun main(args: Array) { val b: University = University() // OK val a: Universi.. 2023. 1. 27.
[Effective Kotlin] ์•„์ดํ…œ 23. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์„€๋„์ž‰์„ ํ”ผํ•˜๋ผ ์„€๋„์ž‰์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? class Person(val name : String) { fun addPerson(name : String) { // ... } } addPerson() ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ Person class์˜ ํ”„๋กœํ„ฐํ‹ฐ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์ง„๋‹ค. ์™ธ๋ถ€ ์Šค์ฝ”ํ”„์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์„€๋„์ž‰์ด๋ผ ํ•œ๋‹ค. ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. interface Payment class KakaoPay: Payment class NaverPay: Payment class PaymentHistory { fun addPayment(payment: T) { // ... } } ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” PaymentHistory์˜ ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ addPayment()์˜ ํƒ€์ž… .. 2023. 1. 25.
[๊ฐ์ƒ๋ฌธ] Kotlin In Action์„ ์ฝ๊ณ  ํ˜„์žฌ ์ž…์‚ฌํ•œ ํšŒ์‚ฌ์—์„œ ๋ฐฑ์—”๋“œ ์–ธ์–ด๋Š” ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ฐ˜์ด๋‹ค. ์ฝ”ํ‹€๋ฆฐ์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•ด์•ผ ํ–ˆ๊ธฐ์—, ์ž…์‚ฌ ์ „ ๋ถ€ํ„ฐ ํ‹ˆํ‹ˆํžˆ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ตฌ๊ธ€๊ณผ ์œ ํŠœ๋ธŒ๋Š” ์ •๋ณด์˜ ๋‚œ์žกํ•จ๊ณผ ํ•œ๊ณ„, ๊ทธ๋ฆฌ๊ณ  ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ํ™•์‹คํžˆ ์–ธ์–ด ๋ฐ ๋ฐฑ์—”๋“œ ๊ณต๋ถ€๋Š” ์ฑ…์ด ์ง„๋ฆฌ๋ผ๋Š” ๊ฒƒ์ด ๋‚ด ์ •๋ก ์ด๋‹ค..ใ…Žใ…Ž ์ž…์‚ฌ ์ฒซ ๋‚  ์‚ฌ์ˆ˜ ๋ถ„๊ป˜ ์ฝ”ํ‹€๋ฆฐ ๊ด€๋ จ ์„œ์ ์ด ์žˆ๋Š”์ง€ ์—ฌ์ญค๋ดค๊ณ , ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ํ”์พŒํžˆ [์ฝ”ํ‹€๋ฆฐ ์ธ ์•ก์…˜] ์ฑ…์„ ๋นŒ๋ ค์ฃผ์…จ๋‹ค. ์ฑ…์„ ๋“ค๊ณ  ํ‡ด๊ทผํ–ˆ๊ณ , ๊ทธ ๋‚  ๋ฐค๋ถ€ํ„ฐ ๋ฐ”๋กœ ์ฝ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ผ์ด ๋งŽ์€ ๋‚ , ๋„ˆ๋ฌด ํ”ผ๊ณคํ•œ ๋‚ ๊ณผ ์ผ์ •์ด ์žˆ๋Š” ๋‚ ์„ ์ œ์™ธํ•œ ๋ฐค 11์‹œ์—๋Š” 1์‹œ๊ฐ„ ๊ผญ ๋…์„œ๋ฅผ ํ•˜๊ณ  ์ž์ž๋Š” ๋‹ค์ง๊ณผ ํ•จ๊ป˜. ์ž˜ ์ฝํžˆ์ง€ ์•Š์„ ๊ฒƒ์„ ์—ผ๋ คํ–ˆ์ง€๋งŒ, ๋‹คํ–‰ํžˆ ์ด ์ฑ…์ด ์ง€ํ–ฅํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋Š” ๊ธฐ์กด ์ž๋ฐ” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๋Š” ๊ฒƒ์ด ์ฐธ ์ธ์ƒ ๊นŠ์—ˆ๋‹ค. ์ฑ…์€ ๊ธฐ์กด ์ž.. 2023. 1. 17.
๋ฐ˜์‘ํ˜•