์ „์ฒด ๊ธ€ 132

[Machine Learning] Subset selection๊ณผ ์ตœ์  ๋ชจ๋ธ ์„ ์ •

Subset selection (๋ถ€๋ถ„์ง‘ํ•ฉ ์„ ํƒ) p๊ฐœ์˜ predictor ์ค‘ response์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” predictor ์‹๋ณ„ ์‹๋ณ„๋œ p๊ฐœ ๋ณด๋‹ค ์ ์€ ์ˆ˜์˜ predictor๋งŒ์„ least squares ๋ฐฉ๋ฒ•์œผ๋กœ ์ ํ•ฉ Shrinkage (์ˆ˜์ถ•) p๊ฐœ์˜ predictor๋กœ ์ ํ•ฉํ•˜๋˜ coefficient ์ถ”์ • ๊ฐ’์ด 0์œผ๋กœ ์ž‘์•„์ง ์ •๊ทœํ™”(regularization)๋กœ๋„ ๋ถˆ๋ฆผ ๋ชจ๋ธ์˜ variance๋ฅผ ์ค„์ด๊ณ  ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ง Dimension Reduction (์ฐจ์› ์ถ•์†Œ) p๊ฐœ์˜ predictor๋ฅผ M์ฐจ์›์˜ subspace์— ํˆฌ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•(M < p) M๊ฐœ์˜ linear combination์„ ๋งŒ๋“ค์–ด๋‚ด ์„ ํ˜•ํšŒ๊ท€์˜ predictor๋กœ ์‚ฌ์šฉ ๋น„์ง€๋„ ํ•™์Šต ๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜ 01. Stepwise..

[BigData] ๋Œ€์šฉ๋Ÿ‰ ๋ถ„๋ฅ˜

๋ถ„๋ฅ˜(Classification) ? ์ฃผ์–ด์ง„ ์ž…๋ ฅ์˜ ํŠน์ง•์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ž‘์—… ์ง€๋„ํ•™์Šต์˜ ์ผ์ข…์œผ๋กœ ๊ธฐ์กด์˜ ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜์—ฌ ์ƒˆ๋กญ๊ฒŒ ๊ด€์ธก๋œ ๋ฐ์ดํ„ฐ์˜ ํด๋ž˜์Šค๋ฅผ ํŒ๋ณ„ ํด๋ž˜์Šค(์ข…๋ฅ˜)๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ž‘์—…์œผ๋กœ์จ, ํšŒ๊ท€(์—ฐ์†๋œ ๊ฐ’)์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Œ ๋ถ„๋ฅ˜ ํ™œ์šฉ ์‚ฌ๋ก€ ์‹ ์šฉ ๋ฆฌ์Šคํฌ ์˜ˆ์ธก : ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜(์‚ฌ์šฉ์ž ์ •๋ณด)๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋Œ€์ถœ ์ œ๊ณต ์—ฌ๋ถ€ ํด๋ž˜์Šค๋กœ ํŒ๋ณ„ ๋‰ด์Šค๊ธฐ์‚ฌ ๋ถ„๋ฅ˜ : ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•™์Šต์‹œ์ผœ ๋‰ด์Šค๊ธฐ์‚ฌ์˜ ์ฃผ์ œ๋ฅผ ์˜ˆ์ธก ์‚ฌ์šฉ์ž ํ–‰์œ„ ๋ถ„๋ฅ˜ : ์„ผ์„œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ํ™œ๋™์„ ์˜ˆ์ธก ๋ถ„๋ฅ˜ ์œ ํ˜• ์ด์ง„ ๋ถ„๋ฅ˜(Binary Classification) ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋‘ ๊ฐœ์˜ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ์˜ˆ์ธก ex. ์ŠคํŒธ ๋ฉ”์ผ ํŒ๋ณ„(์ŠคํŒธ ๋˜๋Š” ์ •์ƒ), ๋Œ€์ถœ ์Šน์ธ(์Šน์ธ ๋˜๋Š” ๊ฑฐ์ ˆ), ๊ณ ..

[BigData] Spark ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ „ ์ฒ˜๋ฆฌ

Spark ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์›๋ฆฌ ๊ณ ์ˆ˜์ค€ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์ž๋™์œผ๋กœ ๊ณ ์†์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋จ Spark์˜ ๊ณ ์ˆ˜์ค€ API ํ™œ์šฉํ•œ ์ „์ฒ˜๋ฆฌ ๊ฒฐ์ธก์น˜ ์ฒ˜๋ฆฌ ํŠน์ • ์—ด์˜ ๊ฒฐ์ธก์น˜ ์„ธ๊ธฐ : df.filter(df.col_name.isNull()).count() ๊ฒฐ์ธก์น˜๊ฐ€ ์žˆ๋Š” ํ–‰ ์ œ๊ฑฐ : df.na.drop(how="any").show(truncate=False) ์ค‘๋ณต๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ค‘๋ณต๋ฐ์ดํ„ฐ ํ™•์ธ : df.show() ์ค‘๋ณต๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ : df.dropDuplicates(['id', 'name']).show() ๋ฐ์ดํ„ฐ ์ •๊ทœํ™” feature๊ฐ€ ํ‰๊ท 0, ํ‘œ์ค€ํŽธ์ฐจ๊ฐ€ 1์ธ ๋ถ„ํฌ๋ฅผ ๊ฐ–๋„๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์ •๊ทœํ™” sScaler = StandardScaler().setInputCol("features") ..

[BigData] ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ? ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์•Œ๋งž์€ ํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ • ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์˜ ํ’ˆ์งˆ์ด ๋†’์œผ๋ฉด ๋ถ„์„ ๊ฒฐ๊ณผ์˜ ์ •ํ™•๋„๋„ ํ–ฅ์ƒ ๋น„๊ต์  ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ , ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—… ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ „, ๋ฐ์ดํ„ฐ ์ค€๋น„ EDA(Exploratory Data Analysis) ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ ํŒจํ„ด ํŒŒ์•… ๋ฐ์ดํ„ฐ์˜ Feature ์ดํ•ด ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ(Data Preprocessing) ์ด์ƒ์น˜ ๋ฐœ๊ฒฌ ์ด์ƒ์น˜ ์ˆ˜์ • Feature Engineering Feature ์„ ํƒ Feature ์ถ”์ถœ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ • -> ๋ฐ์ดํ„ฐ ์ •์ œ(Data Cleansing) ๊ฒฐ์ธก์น˜(missing value) ์ฒ˜๋ฆฌ : ๋น„์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ, ๋Œ€์ฒด ์ด์ƒ์น˜ (outlier) ์ฒ˜๋ฆฌ : ์ด์ƒ์น˜ ์ œ๊ฑฐ ๋ฐ ๋Œ€์ฒด ์ค‘๋ณต(duplicate data) ์ฒ˜๋ฆฌ : ์ค‘๋ณต ๋ฐ์ดํ„ฐ..

[BigData] ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ€ํ˜•

01. ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• ํ™œ์šฉ ๊ธฐ์กด์˜ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์†์ฒ˜๋ฆฌํ•ด์•ผํ•จ ๊ธฐ์กด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์— ๋งž๊ฒŒ ๋ณ€ํ˜•ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„ MapReduce ๋ฐฉ์‹์˜ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ€ํ˜•์„ ํ•  ์ˆ˜ ์žˆ์Œ 02. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๋ถ„์„ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ํ†ต๊ณ„ ๋ฐฉ์•ˆ -> ๋งต๋ฆฌ๋“€์Šค ๋งต ํ•จ์ˆ˜(Mapper)์™€ ๋ฆฌ๋“€์Šค(Reducer) ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ ๋ชจ๋‘ ์ˆœ์„œ์Œ์œผ๋กœ ์ •์˜ํ•จ employee.txt. ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—์„œ FIRST๋ณ„๋กœ ๋นˆ๋„์ˆ˜๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ์ธก์ •ํ•˜๋Š” ๋งต๋ฆฌ๋“€์Šค๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๊ณ ์ž ํ•จ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ํ†ต๊ณ„ ๋ฐฉ์•ˆ ์› ๋ฐ์ดํ„ฐ๋ฅผ ์—์ง€๋กœ๋งŒ ํ‘œํ˜„ ๊ฐ ๋งต ํ•จ์ˆ˜์—์„œ๋Š” ๋‚˜๋ˆ„์–ด์ง„ ์—์ง€์˜ ์ˆœ์„œ์Œ์—์„œ ์–ป์€ ๊ฐ’์ธ ๋ชฉ์  ๋…ธ๋“œ ID๋กœ ๊ทธ๋ฃนํ•‘ํ•จ ์ถœ๋ ฅ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์ˆœ์„œ์Œ์œผ๋กœ ํ‘œํ˜„ -> ๋งต ํ•จ์ˆ˜..

[BigData] ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ์ˆ 

๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ์ˆ  ? ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ๋ถ„์„์— ๋” ๋‚˜์•„๊ฐ€, ๋Œ€๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด๋‹ค ๋†’์€ ์ •ํ™•์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ธฐ์ˆ  ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ƒ์—์„œ๋Š” ๋ถ„์„ ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜์—ฌ, ๋น…๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์นจ ๊ธฐ์กด์˜ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ถ„์‚ฐ ๋…ธ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณ€ํ˜•ํ•˜๊ธฐ๋„ ํ•จ ํ•˜๋‘ก, ์ŠคํŒŒํฌ ๋“ฑ์˜ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์†์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•จ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ์ˆ ์˜ ์ข…๋ฅ˜ ๋ถ„๋ฅ˜(Classfication) : ์ผ์ •ํ•œ ์ง‘๋‹จ์—์„œ ํŠน์ •ํ•œ ์ •์˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ„๋ฅ˜๋ฅผ ์ถ”๋ก ํ•จ ์˜ˆ์ธก(Forecasting) : ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์˜ ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธก ์‹œ๊ณ„์—ด ๋ถ„์„(Time-S..

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ

ํŒŒ์ผ์ฒ˜๋ฆฌ ? - ํŒŒ์ผ์— ๋Œ€ํ•ด ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ํŽธ์ง‘ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ - ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค๋Š” java.io ํŒจํ‚ค์ง€์— ์žˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•ด์•ผ ํ•จ - ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ŠคํŠธ๋ฆผ(Stream)์ด ํ•„์š” ํŒŒ์ผ ์ฒ˜๋ฆฌ์˜ ํ•„์š”์„ฑ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋™์•ˆ ๋ฐ์ดํ„ฐ(ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ)๋ฅผ ๋ณด์กดํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต ๋กœ๊ทธ ๊ด€๋ฆฌ : ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ๊ธฐ๋กํ•จ์œผ๋กœ์จ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋””๋ฒ„๊น… ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ : ์„œ๋ฒ„ ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—… ๋“ฑ์— ์œ ์šฉ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ์ŠคํŠธ๋ฆผ์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์˜๋ฏธํ•จ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(byte stream)๊ณผ ๋ฌธ์ž ์ŠคํŠธ๋ฆผ(c..

JAVA 2024.01.09

[Java] ํŒจํ‚ค์ง€ (package)

ํŒจํ‚ค์ง€ (package) ? ๊ธฐ๋Šฅ ๋ณ„๋กœ ๊ด€๋ จ๋œ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ํ•˜์œ„ ํŒจํ‚ค์ง€ ๋“ฑ์„ ๋ฌถ์–ด์ฃผ๋Š” ๋‹จ์œ„๋กœ ํด๋”(๋””๋ ‰ํ† ๋ฆฌ)์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…์ด๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์บก์Šํ™”๋ฅผ ์ง€์›ํ•จ ํŒจํ‚ค์ง€์˜ ํ•„์š”์„ฑ ์žฌ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ : ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ํด๋ž˜์Šค ๋“ฑ์„ ์กฐ์งํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ ์ ‘๊ทผ ์ œ์–ด : ์ ‘๊ทผ ์ œํ•œ์ž์™€ ํŒจํ‚ค์ง€๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์บก์Šํ™”๋ฅผ ์ง€์›ํ•˜๊ณ  ํด๋ž˜์Šค ๋“ฑ์˜ ์ ‘๊ทผ ์ •๋„๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ ์ถฉ๋Œ ๋ฐฉ์ง€ : ํŒจํ‚ค์ง€๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์ ‘๋‘์‚ฌ๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์ถฉ๋Œ ๋ฐฉ์ง€ ํŒจํ‚ค์ง€์˜ ์œ ํ˜• ์‚ฌ์šฉ์ž ์ •์˜ ํŒจํ‚ค์ง€ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”์— ๋”ฐ๋ผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ‚ค์ง€ ๋‚ด์žฅ ํŒจํ‚ค์ง€ : Java์–ธ์–ด์—์„œ ์‚ฌ์ „์— ์ •์˜ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€

JAVA 2024.01.08

[Java] ์ถ”์ƒํ™”์™€ ์ธํ„ฐํŽ˜์ด์Šค

Interface (์ธํ„ฐํŽ˜์ด์Šค) ? - ํ•˜๋‚˜ ์ด์ƒ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  interface ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•˜๋ฉฐ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ - ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์„œ๋“œ๋Š” ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋งŒ ์žˆ๊ณ  abstract ํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ์‹ค์ œ ๊ตฌํ˜„์€ ์ƒ์† ๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ด๋ฃจ์–ด์ง interface Car { public void drive(); } public class ElectricCar implements Car { public void drive() { System.out.println("์ „๊ธฐ์ฐจ ์ฃผํ–‰"); } } ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•„์š”์„ฑ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ž์‹ ํด๋ž˜์Šค์—์„œ ์šฉ๋„์— ๋งž๊ฒŒ ์žฌ์ •์˜ํ•จ์œผ๋กœ์จ ๋‹คํ˜•์„ฑ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋ฉฐ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์— ๋„์›€์„ ์คŒ ํด๋ž˜์Šค ..

JAVA 2024.01.08

[Java] ์ถ”์ƒํ™”์™€ ์ถ”์ƒ ํด๋ž˜์Šค

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

JAVA 2024.01.08