Skip to content

Latest commit

ย 

History

History
56 lines (39 loc) ยท 3.99 KB

ObjectorientedLanguage.md

File metadata and controls

56 lines (39 loc) ยท 3.99 KB

๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์˜ ํŠน์ง•

  • ์ถ”์ƒํ™”(Abstraction)
    • ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ฌผ๋“ค์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ํŒŒ์•…ํ•ด์„œ ์ด๋ฅผ ํ•˜๋‚˜์˜ ๊ฐœ๋…(์ง‘ํ•ฉ)์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
์ถ”์ƒํ™”(abstraction)๋ผ๋Š” ๊ฒƒ์€ ๋ฏธ์ˆ ์˜ '์ถ”์ƒํ™”'๋ผ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 
๋ฏธ์ˆ ์—์„œ ์ถ”์ƒํ™”๋ผ๋Š” ๊ฒƒ์€ ๊ทธ ํ•ต์‹ฌ์š”์ง€๋งŒ ์‚ด๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์„ ๋œปํ•˜๋Š” ๊ฒƒ์ด๋ผ๋Š” ์ ์€ ์•Œ๊ณ  ๊ณ„์‹œ๊ฒ ์ฃ .
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด ๋ชจ๋“  ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. 
'ํšŒ์‚ฌ์› ๊ด€๋ฆฌ'๋ฅผ ์œ„ํ•œ '์‚ฌ๋žŒ' ํด๋ž˜์Šค์—์„œ๋Š” '์„ฑ๋ณ„'์ด๋ผ๋Š” ์†์„ฑ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜์ง€๋งŒ '๋‚จ์ž๋ชฉ์š•ํƒ• ํšŒ์› ๊ด€๋ฆฌ'๋ฅผ ์œ„ํ•œ '์‚ฌ๋žŒ' ํด๋ž˜์Šค์—์„œ๋Š” 
๊ตณ์ด ์„ฑ๋ณ„์ด๋ผ๋Š” ์†์„ฑ์„ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ๋ชจ๋“  ๊ตฌ์„ฑ์›์ด '๋‚จ์ž'์ผํ…Œ๋‹ˆ๊น์š”.
์ด์ฒ˜๋Ÿผ ๊ตณ์ด ๊ตฌํ˜„ํ•  ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์„ ๊ณผ๊ฐํžˆ ์ƒ๋žตํ•˜์—ฌ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ์ถ”์ƒํ™”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์บก์Šํ™”(Encapsulation)
    • ์ •๋ณด ์€๋‹‰(information hiding): ํ•„์š”๊ฐ€ ์—†๋Š” ์ •๋ณด๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ฒƒ
    • ๋†’์€ ์‘์ง‘๋„, ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์œ ์—ฐํ•จ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ฆ๊ฐ€
์บก์Šํ™”(encapsulation)๋ผ๋Š” ๊ฒƒ์€ ์€๋‹‰ํ™”(hidden)๋ผ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์กฐ๊ธˆ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 
์บก์Š์ด๋ผ๋Š” ๊ฒƒ์€ ์•ฝ๊ตญ์—์„œ ํŒŒ๋Š” ์•Œ์•ฝ ์ค‘์— '์บก์Š'์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์•ฝ์„ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 
์šฐ๋ฆฌ๋Š” ์ด ์•ฝ์„ ๋ณต์šฉํ•  ๋•Œ ๊ทธ๋ƒฅ ์บก์Š์ฑ„๋กœ ์‚ผํ‚ฌ ๋ฟ ๊ทธ ์•ˆ์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์•Œ๊ฐฑ์ด ์ˆซ์ž๋ฅผ ์„ธ๊ฑฐ๋‚˜ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณต์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 
๊ทธ๋ƒฅ ์บก์Š์˜ ๊ป๋ฐ๊ธฐ๋งŒ ๋ณด๊ณ  ๋ฌด์Šจ ์•ฝ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‚ฌ์šฉํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•จ์— ์žˆ์–ด ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ์˜ ๊ธฐ๋Šฅ๋งŒ์„ ์•Œ๊ณ  ๊ทธ ๊ธฐ๋Šฅ๋งŒ์„ ์‚ฌ์šฉํ•  ๋ฟ, ์‹ค์ œ๋กœ ๊ทธ ๋ฉ”์†Œ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”์ง€๋Š” ๊ตณ์ด ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 
System.out.println()์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์“ฐ๋ฉด ๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋œ๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ์„ ์•Œ๋ฉด ๋˜์ง€ ๊ทธ๊ฒƒ์ด ์–ด๋–ค ์›๋ฆฌ๋กœ ๋‚˜์˜ค๋Š”์ง€๋Š” ๊ตณ์ด ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

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

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ดˆ๊ธฐ์—๋Š” ๋ฒˆ๊ฑฐ๋กœ์›Œ ๋ณด์ด์ง€๋งŒ ๋“ค์–ด์™€์„œ๋Š” ์•ˆ๋  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์„ ๋ฟ ์•„๋‹ˆ๋ผ '๊ฐ์ฒด ์ง€ํ–ฅ'์ด๋ผ๋Š” ์˜๋ฏธ์— ๋ณด๋‹ค ๊ฐ€๊น๊ฒŒ ์ ‘๊ทผํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ์†(Inheritance)
    • ์—ฌ๋Ÿฌ ๊ฐœ์ฒด๋“ค์ด ๊ฐ€์ง„ ๊ณตํ†ต๋œ ํŠน์„ฑ์„ ๋ถ€๊ฐ์‹œ์ผœ ํ•˜๋‚˜์˜ ๊ฐœ๋…์ด๋‚˜ ๋ฒ•์น™์œผ๋กœ ์„ฑ๋ฆฝ์‹œํ‚ค๋Š” ๊ณผ์ •
์ƒ์†์ด๋ผ๋Š” ๊ฒƒ์€ ๋ง๊ทธ๋Œ€๋กœ ๋ถ€๋ชจ์˜ ์œ ์‚ฐ์„ ์ž์‹์ด ์ด์–ด๋ฐ›๋“ฏ์ด ๋ถ€๋ชจํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์ด์–ด๋ฐ›๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. 
์ž์‹ํด๋ž˜์Šค๋Š” extends๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์†๋ฐ›์€ ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์Šน๊ณ„ํ•˜์—ฌ ์ž์‹ ์˜ ๊ฒƒ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
๋‹จ, ์ด ๋•Œ ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ private์œผ๋กœ ์„ ์–ธํ–ˆ๋‹ค๋ฉด ๊ฐ€์ง€๊ณ ๋Š” ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

์ž๋ฐ”๋Š” ๋‹จ์ผ์ƒ์†๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ 
์ด๋Ÿฌํ•œ ๋‹ค์ค‘์ƒ์†์˜ ์žฅ์ ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด '์ธํ„ฐํŽ˜์ด์Šค(interface)'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 
  • ๋‹คํ˜•์„ฑ(Polymorphism)
    • ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๊ฐ์ž์˜ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ
    • ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding), ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)