C Programming Language/C++

OOP(๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์˜ 4๊ฐ€์ง€ ํŠน์„ฑ(์ถ”์ƒํ™”, ์บก์Šํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ)

567Rabbit 2024. 8. 27. 15:04

 

C++๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค

 

 

OOP(๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) 4๊ฐ€์ง€ ํŠน์„ฑ

 

1. ์ถ”์ƒํ™” : ์–ด๋–ค ํŠน์ • ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•˜๊ณ  ์–ด๋–ค ์ •๋ณด๋ฅผ ์ˆจ๊ฒจ์•ผํ•˜๋Š”์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ธฐ์ˆ 

  "ํ•ต์‹ฌ์ด ๋ญ์•ผ?" "์–ด๋Š ๋ ˆ๋ฒจ์—์„œ ์„ค๋ช… ๋“œ๋ฆด๊นŒ์š”?"

   - ์ ˆ์ฐจ๋กœ์„œ์˜ ์ถ”์ƒํ™” : ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•˜๋ฉด์„œ ํ•„์ˆ˜ ์ •๋ณด๋ฅผ ์ถ”์ถœ

   - ์‹ค์ฒด(entity)๋กœ์„œ์˜ ์ถ”์ƒํ™” : ์‹ค์ œ์— ๋Œ€ํ•œ ๋ชจ๋ธ(model), ๋ทฐ(view), ํ‘œํ˜„(representation) 

 

2. ์บก์Šํ™” : ์ˆจ๊ฒจ์•ผ ํ•  ๋‚ด์šฉ์„ ์ˆจ๊ธฐ๊ณ  ํ‘œ์‹œํ•  ๋‚ด์šฉ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ณด๋ฅผ ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ธฐ์ˆ 

    (ex ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ชจ๋“ˆ ๋“ฑ "์บก์Šํ™”๋œ ๋ชจ๋“  ๊ฒƒ์ด ์ˆจ๊ฒจ์ ธ ์žˆ๋Š”๊ฐ€?")

   - ์ ˆ์ฐจ๋กœ์„œ์˜ ์บก์Šํ™” : ๋ฌผ๋ฆฌ์ , ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ๋Š” ํ–‰์œ„

   - ์—”ํ‹ฐํ‹ฐ๋กœ์„œ์˜ ์บก์Šํ™” : ํŒจํ‚ค์ง€ ํ˜น์€ ์ธํด๋กœ์ €

   - ๋ชฉ์ ? ์ •๋ณด ์€๋‹‰ : ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด๋‚˜, ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์˜์‚ฌ๊ฒฐ์ •์˜ ๋‚ด๋ถ€์‚ฌํ•ญ์„ ์ˆจ๊น€

 

3. ์ƒ์† : ํŒŒ์ƒ ํด๋ž˜์Šค๊ฐ€ ๊ธฐ๋ณธํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•จ

    - ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค์— ์ ์šฉ๋จ

    - ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ ๊ธธ์ด๋ฅผ ์ค„์ž„

 

4. ๋‹คํ˜•์„ฑ : ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๋‹จ์ผ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ

  (๋™์ผํ•œ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Œ - ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ, ํด๋ž˜์Šค ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋“ฑ)

   - ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ํ•จ์ˆ˜์— ์ ์šฉ๋จ

   - ๊ฐ์ฒด๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์ด๋‚˜ ๋Ÿฐํƒ€์ž„์— ์–ด๋–ค ํ˜•ํƒœ์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ

   - ์ปดํŒŒ์ผ ํƒ€์ž„ ๋‹คํ˜•์„ฑ(์˜ค๋ฒ„๋กœ๋“œ)๊ณผ ๋Ÿฐํƒ€์ž„ ๋‹คํ˜•์„ฑ(์˜ค๋ฒ„๋ผ์ด๋“œ)์ด ๋  ์ˆ˜ ์žˆ์Œ

 

 

 

 

 

Role, Responsibility, and Collaboration ์ด๋ž€?

 

๊ฐ์ฒด๋Š” ๊ฐ์ฒด๋กœ์„œ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์š”์ฒญ(request)๊ณผ ์‘๋‹ต(response)์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด(object)์™€

ํ˜‘๋ ฅ(collaboration)ํ•˜๋Š” ๊ณผ์ • ์†์—์„œ ํŠน์ •ํ•œ ์—ญํ• (role)์„ ๋ถ€์—ฌ๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์—ญํ• (role)์ด๋ž€ ์–ด๋–ค ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ํŠน์ •ํ•œ ๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅ ์•ˆ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์ฑ…์ž„(responsibility)์ด๋‚˜ ์ž„๋ฌด๋ฅผ ๋งํ•œ๋‹ค.

 

 

 

 

 

 

 

๊ฐ์ฒด ์ง€ํ–ฅ(object-oriented)

 

- ์ƒํƒœ(state)์™€ ํ–‰๋™(behavior)์„ ํ•จ๊ป˜ ์ง€๋‹Œ ์ž์œจ์ ์ธ ๊ฐ์ฒด

- ์ ์ ˆํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ•  ๊ฐ„์˜ ์œ ์—ฐํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•

- ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š”?

  1. ์ฝ”๋“œ๋ฅผ ๋‹ด๋Š” ํด๋ž˜์Šค์˜ ๊ด€์ ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฐ์ฒด์˜ ๊ด€์ ์œผ๋กœ ์‚ฌ๊ณ ์˜ ์ค‘์‹ฌ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ

  2. ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ผ ์–ด๋–ค ๊ฐ์ฒด๋“ค์ด ์–ด๋–ค ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ํ˜‘๋ ฅํ•˜๋Š”๊ฐ€์— ์ง‘์ค‘

 

 

** ๊ฐ์ฒด์ง€ํ–ฅ์€ ๊ฐ์ฒด๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ๊ฒƒ์ด์ง€ ํด๋ž˜์Šค๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜ **