C++/๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)

C++์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฆฌ์ŠคํŠธ์˜ ํ˜•์‹์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์šฐ๋ฆฌ๋Š” ์ƒ์„ฑ์ž ์ดˆ๊ธฐํ™” ๋ฆฌ์ŠคํŠธ ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. class Player { private: string name{}; int health{}; int xp{}; public: // Constructor Player(string name_val, int health_val, int xp_val); }; Player::Player(string name_val, int health_val, int xp_val) : name{name_val}, health{health_val}, xp{xp_val} {} ํ•˜์ง€๋งŒ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์˜ค๋ฒ„..
OOP๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด, ํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋‹ค์ˆ˜์˜ ํ—ค๋” ํŒŒ์ผ๊ณผ cppํŒŒ์ผ์„ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์šฐ๋ฆฌ๋Š” cpp ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ, include "header_name.h" ์˜ ํ˜•ํƒœ๋กœ ์šฐ๋ฆฌ๋Š” ํ—ค๋” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ cpp ํŒŒ์ผ์ด ๋‹ค์ˆ˜๊ฐ€ ๋˜๋ฉด์„œ, ํ•œ๊ฐ€์ง€ ํ—ค๋”๋ฅผ ๋‹ค์ˆ˜์˜ cpp ํŒŒ์ผ์—์„œ ์ค‘๋ณต ํฌํ•จํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์šฐ๋ฆฌ๋Š” ์ค‘๋ณต ์ •์˜ ๋ฌธ์ œ ๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ˜•ํƒœ๋Š” ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. (ํ˜„๋Œ€ C++ ์ปดํŒŒ์ผ๋Ÿฌ๋“ค์€ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค๋งŒ, ๋‹น์—ฐํžˆ ์• ์ดˆ์— ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋“ค์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๋‘๊ฐ€์ง€ ์ „์ฒ˜๋ฆฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. 1. #ifndef, #define, #endif #ifndef, #define,..
์•„์‹œ๋‹ค์‹œํ”ผ ํด๋ž˜์Šค์—๋Š” ์†์„ฑ attributes ์™€ ๋ฉ”์†Œ๋“œ methods ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์„ ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ์š”, ํด๋ž˜์Šค ๋ฉค๋ฒ„๋“ค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ๊ฐ ๊ฐ์ฒด๋“ค์˜ ์ด๋ฆ„ ๋’ค์— dot operator(.) ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์€ํ–‰ ๊ณ„์ขŒ ๊ด€๋ฆฌ์šฉ Account ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ricky_account๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ricky_account.balance, ricky_account.deposit(double)์œผ๋กœ ๊ฐ๊ฐ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์˜€์Šต๋‹ˆ๋‹ค. Account ricky_account; ricky_account.balance; ricky_account.deposit(1000.00); ๊ทธ๋ ‡๋‹ค๋ฉด ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต..
OOP์˜ ํ•ต์‹ฌ์ธ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋Š” ๊ฐ๊ฐ ๋ฌด์—‡์ผ๊นŒ์š”? Class | ํด๋ž˜์Šค ํด๋ž˜์Šค๋Š” '๊ฐ์ฒด๋“ค์˜ ์ฒญ์‚ฌ์ง„' ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ž˜์Šค๋Š” '์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ž๋ฃŒํ˜•' ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ ์ •์ˆ˜๋‚˜ ์‹ค์ˆ˜ ์ž๋ฃŒํ˜•์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. (ํด๋ž˜์Šค์˜ ์„ ์–ธ ๋ฐฉ์‹์„ ๋ณด๋ฉด ๋”์šฑ ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.) ํด๋ž˜์Šค์—๋Š” attributes(์†์„ฑ) ๋“ค์ด ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” '๊ฐ’ (data)' ๊ณผ ๋™์ผํ•œ ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  methods(๋ฉ”์†Œ๋“œ) ๋“ค๋„ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ 'ํ•จ์ˆ˜ (function)' ์™€ ๋™์ผํ•œ ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ž˜์Šค๋“ค์€ ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์šฉ๋„์˜ ํ•จ์ˆ˜(๋ฉ”์†Œ๋“œ)์™€ ๊ฐ’(์†์„ฑ) ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…๋“ค์€ public / pri..
Chan Lee
'C++/๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)