Direct Variable Access ¶
์ธ์คํด์ค ๋ณ์์ ๊ฐ์ ์ด๋ป๊ฒ ์ป์ด์ค๊ณ ์ด๋ป๊ฒ ์
ํ
ํด์ฃผ๋๊ฐ?
์ด๊ธฐํ์ฒ๋ผ ๋ณ์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ๋ ํฐ ์ด์ ์ค ํ๋์๋ค. ์ด๊ฒ์๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์ญ์ ํจํด์ ์กด์ฌ ์ด์ ์ฒ๋ผ, ํ๋๋ ์ ์ฐ์ฑ, ๋ ๋ค๋ฅธ ํ๋๋ ๊ฐ๋
์ฑ์ด๋ค. ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ณ์๋ฅผ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ด๋ค. ๋ค๋ฅธ ํ๋๋, ํญ์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค.(setter,getter๋ฅผ ์ฌ์ฉํ๋ค.)
์ค๋ชฐํ ํฌ ์ง์์์๋ IndirectVariableAccess๋ฅผ ์ ํธํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ ์ผํธ์์ ์จ๊ฐ DirectVariableAccess๋ฅผ ์จ ๋ณด๊ณ ๋ ๊ทธ๊ฒ์ ๊ฐ๋
์ฑ์ ๋๋๋ค.
์๋๋ ํ๋ฒ ๋ณด๊ณ '์. ๋ฉ์ธ์ง x๋ฅผ ๋ณด๋ด๋๊ตฐ' ํ๊ณ ์ ๊น ์๊ฐํด์ผ ํ์ง๋ง,
~cpp ...getX()...์๋๋ '์. ๊ทธ๋ฅ x๊ตฌ๋.' ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
~cpp ..,x...
์๋ ์์ ์จ์ ๋ง๋ก๋, 'ํด๋์ค์ ์์ฃผ ์ ์ ์์ ๋ฉ์๋๋ง ์กด์ฌํ๋ค๋ฉด, getter/setter๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฉ์๋์ ์๊ฐ ๋๋ฐฐ๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค. ์ด๋ ์ ํ ์ฌ์ฉ๋์ง ์์ ์ ์ฐ์ฑ์ ์ํด ์ธ๋ฐ์์ด ๊ฐฏ์๋ฅผ ๋๋ฆฐ ๊ฒ์ด๋ค.' ๋ผ๊ณ ํ๋ค.
ํ์ง๋ง ์ด ํด๋์ค๊ฐ ์์์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด, setter/getter๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, IndirectVariableAccess๋ฅผ ์ฐ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค.
๋ณ์์ ์ง์ ์ ๊ทผํ๋ผ.
~cpp void Point::setXnY(int xNumber, int yNumber) { x = xNumber; y = yNumber; }