๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Ÿ IT· Digital/๐Ÿค— ๊ฐœ๋… ์ •๋ฆฌ

[SW ์„ค๊ณ„] ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„

by ์ง€์ด๋‹› 2023. 5. 8.

 

๐Ÿ“ ๊ฐ์ฒด์ง€ํ–ฅ(Object Orient)

1) ๊ฐœ๋…

์‹ค ์„ธ๊ณ„์˜ ๊ฐœ์ฒด๋ฅผ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ฒฐํ•ฉ๋œ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

๊ตฌํ˜„๋Œ€์ƒ์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋ณด๊ณ  ๊ฐ์ฒด์™€ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋กœ ๋ชจ๋ธ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.

 

2) ๋ฐฐ๊ฒฝ

์ƒ์‚ฐ์„ฑ ์ €ํ•˜์— ๋”ฐ๋ฅธ ์žฌ์‚ฌ์šฉ์„ฑ, ํ™•์žฅ์„ฑ์˜ ํ•„์š”์— ์˜ํ•ด ๋“ฑ์žฅํ•˜์˜€๋‹ค.

 

 

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

1) ๊ฐœ๋…

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜๋กœ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ '๊ฐ์ฒด'๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐœ์ฒด๋“ค์„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ SW ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐœ๋ฐœ๊ณผ ๋ณด์ˆ˜๋„ ๊ฐ„ํŽธํ•œ ํŽธ์ด๋ผ ๋ณด๋‹ค ์ง๊ด€์ ์ธ ๋ถ„์„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

2) ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ตฌ์„ฑ์š”์†Œ

1๏ธโƒฃ ํด๋ž˜์Šค(Class)

๊ฐ™์€ ์ข…๋ฅ˜์˜ ์ง‘๋‹จ์— ์†ํ•˜๋Š” ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐํ˜•

 

2๏ธโƒฃ ๊ฐ์ฒด(Object)

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(์‹ค์ œ๋กœ ๋ฉ”๋กœ๋ฆฌ์ƒ์— ํ• ๋‹น๋œ ๊ฒƒ)์„ ์˜๋ฏธํ•œ๋‹ค.

์ž์‹  ๊ณ ์œ ์˜ ๋ฐ์ดํ„ฐ(Attribute)๋ฅผ ๊ฐ€์ง€๋ฉฐ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ํ–‰์œ„๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

3๏ธโƒฃ ์†์„ฑ(Attribute)

๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ

 

4๏ธโƒฃ ๋ฉ”์†Œ๋“œ(Method)

๊ฐ์ฒด์˜ ํ–‰์œ„๋ฅผ ์˜๋ฏธ. ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

5๏ธโƒฃ ๋ฉ”์‹œ์ง€(Message)

๊ฐ์ฒด๊ฐ„์˜ ํ†ต์‹ ์„ ์˜๋ฏธ.

 

3) ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ธฐ๋ฒ•

 

์บก์ˆ ํ™”(Encapsulation)

  • ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • Readability๊ฐ€ ํ–ฅ์ƒ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ด.
  • ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ S/W ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅ.
  • ์ •๋ณด์€๋‹‰์œผ๋กœ ๋‚ด๋ถ€์ž๋ฃŒ์˜ ์ผ๊ด€์„ฑ์ด ์œ ์ง€.
  • ๊ฐ์ฒด๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉ, ์ข…์†์„ฑ์„ ์ตœ์†Œํ™”.

 

์ถ”์ƒํ™”(Abstraction)

  • ๊ณตํ†ต ์„ฑ์งˆ์„ ์ถ”์ถœํ•˜์—ฌ ์Šˆํผํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ๊ฐ์ฑ„ ์ค‘์‹ฌ์˜ ์•ˆ์ •๋œ ๋ชจ๋ธ์„ ๊ตฌ์ถ•.
  • ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ‘œํ˜„.
  • ๋ถ„์„์˜ ์ดˆ์ ์ด ๋ช…ํ™•ํ•ด์ง.

 

๋‹คํ˜•์„ฑ(Polymorphism)

  • ๋™์ผํ•œ ์ด๋ฆ„์˜ ์—ฌ๋Ÿฌ ์˜คํผ๋ ˆ์ด์…˜(๋ฉ”์†Œ๋“œ)์„ ๋‹ค๋ฅธ ์‚ฌ์–‘์œผ๋กœ ์ •์˜ ๊ฐ€๋Šฅํ•˜๋‹ค.

โญ ๋‹คํ˜•์„ฑ์˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(๊ฐ€์žฅ ์šฐ์„ ๋˜๋Š”)๊ณผ ์˜ค๋ฒ„๋กœ๋”ฉ(๊ณผ์ ํ•˜๋‹ค)

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

์˜ค๋ฒ„๋ผ์ด๋”ฉ
์˜ค๋ฒ„๋กœ๋”ฉ

 

์ •๋ณด์€๋‹‰(Information Hiding)

  • ์บก์Аํ™”๋œ ํ•ญ๋ชฉ์„ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์ˆจ๊น€.
  • ๋ฉ”์‹œ์ง€ ใ…ฃ์ „๋‹ฌ์— ์˜ํ•ด ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋จ.

 

์ƒ์†์„ฑ(Inheritance)

  • ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉ.
  • ๋ถ€๋ชจ์™€ ์ž์‹ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ์ˆ˜ํผํด๋ž˜์Šค์™€ ์„œ๋ธŒํด๋ž˜์Šค๋กœ ์œ ์ง€๋œ๋‹ค.
  • ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ์ ์ด๋ฉฐ, ์ž์‹ ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒด์  ์„ฑ์งˆ์„ ๊ฐ€์ง„๋‹ค. 

 

๐Ÿ’ก ๋‹คํ˜•์„ฑ๊ณผ ์ƒ์†์„ฑ ๋น„๊ต

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

 

 

๐Ÿ“ ๊ฐ์ฒด์ง€ํ–ฅ(Object Orient) ์„ค๊ณ„์›์น™

โ‘  ๋‹จ์ผ ์ฑ…์ž„์˜ ์›์น™ : ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๋งก์•„์•ผ ํ•œ๋‹จ. (๋‚ฎ์€ ๊ฒฐํ•ฉ๋„, ๋†’์€ ์‘์ง‘๋„ ์ถ”๊ตฌ)

โ‘ก ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ : ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ™•์ •์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ • ์‹œ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.

โ‘ข ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜์˜ ์›์น™ : ํ•˜์œ„ ํด๋ž˜์Šค ๋ฐ ํƒ€์ž…๋“ค์€ ์ƒ์œ„ ํƒ€์ž…๋“ค์ด ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์— ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ์„ค๊ณ„ ์›์น™์ด๋‹ค.

โ‘ฃ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ์˜ ์›์น™ : ํ•˜๋‚˜์˜ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚ซ๋‹ค.

โ‘ค ์˜์กด์„ฑ ๋’ค์ง‘๊ธฐ์˜ ์›์น™ : ์ถ”์ƒํ™”๋œ ๊ฒƒ์— ์˜์กดํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ตฌ์ฒดํด๋ž˜์Šค์— ์˜์กดํ•˜๋„๋ก ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.