nyximos.log

[Spring] ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€? ๋ณธ๋ฌธ

Programming/Spring

[Spring] ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

nyximos 2022. 1. 9. 17:10

๐Ÿค” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„์ธ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ

ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค → ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ 

 

๐Ÿ˜ฎ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ์ฃผ์š” ํŠน์ง•

1. ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค.

- ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ์ฝ”๋“œ์˜ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

- ์ฝ”๋“œ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด์„œ ์ ์€ ๋…ธ๋ ฅ์œผ๋กœ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์‹ ๋ขฐ์„ฑ์ด ๋†’์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

- ์ œ์–ด์ž์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜๋ฉฐ,

์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ์˜ค๋™์ž‘์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


๐ŸŽจ ์ถ”์ƒํ™” abstraction

๋ถˆํ•„์š”ํ•œ ์ •๋ณด๋Š” ์ˆจ๊ธฐ๊ณ  ์ค‘์š”ํ•œ ์ •๋ณด๋งŒ ํ‘œํ˜„ → ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ ๋‹ค!

์ถ”์ƒํ™”๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด? ๊ฐ์ฒด๋“ค์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง„๋‹ค!

 

๐Ÿ’Š ์บก์Šํ™” encapsulation

๋ฐ์ดํ„ฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ!

๊ฐ์ฒด object๊ฐ€ ํ•˜๋‚˜์˜ ์บก์Š

์ž๋ฐ”๋Š” ๊ทธ๋ž˜ํ”ฝ, ๋„คํŠธ์›Œํฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•œ๋‹ค.

 

์บก์Šํ™”๋Š” ์ •๋ณด ์€๋‹‰ information hiding ์—ญํ• ๋„ ํ•œ๋‹ค.

→ ๊ฐ์ฒด๋ฅผ ์บก์Š๋กœ ์‹ธ์„œ ์‹ค์ œ ๊ตฌํ˜„ ๋‚ด์šฉ์„ ์™ธ๋ถ€์— ๊ฐ์ถ”๊ณ  ๋ณดํ˜ธ
     ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆจ๊ฒจ์ ธ ์žˆ๋‹ค =  ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ ๋ ์ˆ˜ ์žˆ๋‹ค

 

๐Ÿงฌ ์ƒ์† Inheritance

๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ด์–ด ๋ฐ›์•„ ์ƒˆ๋กœ์šด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑ!

์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์— ํฌ๊ฒŒ ๊ธฐ์—ฌํ•œ๋‹ค.

 

๐Ÿงฉ ๋‹คํ˜•์„ฑ Polymorphism

๊ฐ์ฒด๊ฐ€ ์ทจํ•˜๋Š” ๋™์ž‘์ด ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ

์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์— ์†ํ•˜๋Š” ๊ฐ์ฒด๋“ค์ด ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜์— ์‘๋‹ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋™์ž‘์„ ๋ณด์—ฌ์คŒ

๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ž‘์€ ๋‹ค๋ฅด๋”๋ผ๋„ ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ๋“ค์—๊ฒŒ ๊ฐ™์€ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค → ์ฝ”๋“œ ๊ฐ„๋‹จํ•ด์ง

 


๐Ÿง ๋‹คํ˜•์„ฑ์˜ ์‹ค์„ธ๊ณ„ ๋น„์œ 

์—ญํ• ๊ณผ ๊ตฌํ˜„์œผ๋กœ ์„ธ์ƒ์„ ๊ตฌ๋ถ„ํ•˜์ž!

๊ฐ์ฒด ์„ค๊ณ„์‹œ ์—ญํ• ๊ณผ ๊ตฌํ˜„์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ

 

์—ญํ•  = ์ธํ„ฐํŽ˜์ด์Šค

๊ตฌํ˜„ = ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค, ๊ตฌํ˜„ ๊ฐ์ฒด

  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€์ƒ์˜ ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)๋งŒ ์•Œ๋ฉด ๋œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๊ตฌํ˜„ ๋Œ€์ƒ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ’€ ๋‹คํ˜•์„ฑ์˜ ๋ณธ์งˆ

  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ ์‹œ์ ์— ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ 

๋‚จ๊ถ์„ฑ,  ์ž๋ฐ”์˜ ์ •์„ ๊ธฐ์ดˆํŽธ, ๋„์šฐ์ถœํŒ, 2019

์ฒœ์ธ๊ตญ, ์–ด์„œ์™€ JAVA๋Š” ์ฒ˜์Œ์ด์ง€!, INFINITYBOOKS, 2015

์ฒœ์ธ๊ตญ,ํ•˜์ƒํ˜ธ, Power JAVA,  INFINITYBOOKS, 2016

๊น€์˜ํ•œ, ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ https://inf.run/ryWP

 

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ์ž…๋ฌธ์ž๊ฐ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์Šคํ”„๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ๋‹ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์„ฑ์žฅํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์„ธ์š”! ๐Ÿ“ข

www.inflearn.com