๐Ÿ“š CS [ComputerScience]/๐Ÿ“š CS ๋ฉด์ ‘

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [ 3์›” 1์ฃผ์ฐจ ] [ 1 ]

Dbswnstjd 2024. 3. 10. 20:02

3์›” 1์ฃผ์ฐจ ๋‚ด์šฉ ์ •๋ฆฌ [3/1 ~ 3/10]  + ์ด์ „ ๋‚ด์šฉ

3์›” 1์ฃผ์ฐจ์— ๋‹ค๋ฃฌ ๋‚ด์šฉ๋“ค๊ณผ ๊ทธ ์ด์ „์— 2์›”์— ๋‹ค๋ค˜๋˜ ๋‚ด์šฉ์— ๋Œ€ํ•ด ๋Œ€๋žต์ ์ธ ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฉด์ ‘ ์ค€๋น„๋ฅผ ํ•˜๋Š๋ผ ์ •๋ฆฌํ•˜๋Š”๋ฐ ์กฐ๊ธˆ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค. ๊ธฐ์ˆ  ๋ฉด์ ‘์—์„œ ๋‚˜์˜ฌ๋งŒํ•œ ๋‚ด์šฉ๋“ค๋กœ ๋‹ค๋ฃจ๊ณ  ์š”์ฆ˜์€ ๊ฑฐ์˜ ํ”„๋กœ์ ํŠธ ์œ„์ฃผ๋กœ ์งˆ๋ฌธ์„ ํ•œ๋‹ค์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ CS๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ์ž˜ ์ •๋ฆฌ๋ฅผ ํ•ด์„œ ๋ฉด์ ‘์— ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

 

1. ์Šคํ”„๋ง์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š” ?

์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”๋กœ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํˆด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์Šคํ”„๋ง์˜ ํŠน์ง•์—๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ๋กœ ์ œ์–ด์˜ ์—ญ์ „์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๋‘๋ฒˆ์งธ๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์†Œ์Šค์ฝ”๋“œ ๋‚ด๋ถ€๊ฐ€ ์•„๋‹Œ ์™ธ๋ถ€์˜ ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ์ •์˜ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๊ฐ„์˜ ์žฌ์‚ฌ์šฉ์„ ๋†’์ด๊ณ  ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์–‘ํ•œ ๊ณณ์— ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. 

์„ธ๋ฒˆ์งธ๋Š” AOP์ž…๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋กœ๊น…์ด๋‚˜ ํŠธ๋žœ์žญ์…˜์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.  @Transactional์€ AOP๊ฐ€ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

- ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • ํ”„๋ ˆ์ž„์›Œํฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์ฐจ์ด์ ์„ ์•„์‹œ๋‚˜์š”?
    • ์ด ๋‘˜์˜ ์ฐจ์ด๋Š” ์ œ์–ด์˜ ํ๋ฆ„์— ๋Œ€ํ•œ ์ฃผ๋„๊ถŒ์„ ๋ˆ„๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š๋ƒ ์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ณ  ์žˆ์ง€๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • @Transactional์˜ ๋™์ž‘์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
    • Transactional ์–ด๋…ธํ…Œ์ด์…˜์€ Proxy ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. Target์ด ์ƒ์†ํ•˜๊ณ  ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” Target ๊ฐ์ฒด๋ฅผ ์ƒ์†ํ•œ Proxy ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, Proxy ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Target ๋ฉ”์„œ๋“œ ์ „, ํ›„๋กœ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ @Transactional์ด ์—†๋Š” ๋ฉ”์„œ๋“œ์—์„œ @Transactional์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

  • Prxoy ๊ฐ์ฒด๋ž€ ๋ฌด์–ธ์ธ๊ฐ€์š”?
    • ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ, ๊ฐ์ฒด๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋Œ€ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์›๋ณธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด, ๋Ÿฐํƒ€์ž„ ์‹œ์ ์—์„œ ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋ถ€๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

 

  • AOP์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
    • AOP๋Š” ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. AOP์˜ ์ฃผ์š” ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
    • Aspect : ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ชจ๋“ˆํ™” ํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
    • Target : Aspect๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณณ ์ž…๋‹ˆ๋‹ค.
    • Advice: ์‹ค์งˆ์ ์ธ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋‹ด์€ ๊ตฌํ˜„์ฒด์ž…๋‹ˆ๋‹ค.
    • JoinPoint: Advice๊ฐ€ ์ ์šฉ๋  ์œ„์น˜, ์ง„์ž… ์ง€์  ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ์ ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
    • PointCut: JoinPoint์˜ ์ƒ์„ธํ•œ ์ŠคํŽ™์„ ์ •์˜ํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ Advice๊ฐ€ ์‹คํ–‰๋  ์ง€์ ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
    • ์Šคํ”„๋ง ๋นˆ์—๋งŒ AOP๊ฐ€ ์ ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

2. ์ž๋ฐ”์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

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

 

- ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

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

 

3. JVM์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  java ํŒŒ์ผ์„ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ JVM์˜ Class Loader์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Class Loader๋Š” ๋™์  ๋กœ๋”ฉ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ํด๋ž˜์Šค๋“ค์„ ๋กœ๋”ฉ ๋ฐ ๋งํฌํ•˜์—ฌ Runtime Data Area์— ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ์‹คํ–‰ ์—”์ง„์€ JVM ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋“ค์„ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

 

- ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

  • JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
    • JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ๋ณด์•˜์„ ๋•Œ Garbage Collector, Execution Engine(์‹คํ–‰ ์—”์ง„), Class Loader(ํด๋ž˜์Šค ๋กœ๋”), Runtime Data Area(๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ) 4๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
    • Class Loader๋Š” JVM๋‚ด๋กœ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ , ๋งํฌ๋ฅผ ํ†ตํ•ด ๋ฐฐ์น˜ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์‹œ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • Execution Engine์€ ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ํ†ตํ•ด JVM ๋‚ด์˜ Runtime Data Area์— ๋ฐฐ์น˜๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋“ค์„ ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ์ฝ์–ด์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • Garbage Collector๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค ์ค‘ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํƒ์ƒ‰ ํ›„ ์ œ๊ฑฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • Runtime Data Area๋Š” JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ์žฌํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์ด ์˜์—ญ์€ ํฌ๊ฒŒ Method Area, Heap Area, Stack Area, PC Register, Native Method Stack์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Heap Area๋Š” new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

 

4. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š” ?

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

 

- ๊ผฌ๋ฆฌ ์งˆ๋ฌธ

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

 

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

 

  • Overloading๊ณผ Overriding์˜ ์ฐจ์ด์  ?
    • Overloading์€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ๊ฒƒ์ด๊ณ , Overriding์€ ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ํ•˜์œ„์—์„œ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

5. ์ธํ„ฐํŽ˜์ด์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š” ?

์ธํ„ฐํŽ˜์ด์Šค๋ž€ ์ผ์ข…์˜ ๋งค๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. 2๊ฐœ ์ด์ƒ์˜ ์žฅ์น˜๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์ด์— ์ •๋ณด๋‚˜ ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•˜๋“œ์›จ์–ด์ด๊ฑฐ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.