E D R , A S I H C RSS

Query Method

Query Method

객체의 속성을 ν…ŒμŠ€νŠΈν•˜λ €λ©΄ μ–΄λ–»κ²Œ 할것인가? 두 κ°€μ§€λΌ κ²°μ •ν•΄μ•Ό ν•œλ‹€. μ²«μ§ΈλŠ” 무엇을 리턴할 것인가이고, λ‘˜μ§ΈλŠ” 이름을 μ–΄λ–»κ²Œ μ§“λŠλƒλ‹€.

~cpp 
class Switch
{
private:
	string status;
	/* ... */
public:
	void makeOn() {
		status = "on";
	}
	void makeOff() {
		status = "off";
	}
	string& getStatus() {
		return status;
	}
	/* ... */
};

class Light
{
/* ... */
	void makeOn() {
		/* ... */
	}
};

class WallPlate
{
private:
	Switch* switch;
	Light* light;
/* ... */
public:
/* ... */
	void update() {
		if( switch->getStatus() == "on" )
			light->makeOn();
		else if( switch->getStatus() == "off" )
			light->makeOff();
	}
};
이것은 두 객체 쀑에 ν•˜λ‚˜λΌ λ¦¬ν„΄ν•˜λŠ” 방법이닀. λ”± 보기에도 λ­”κ°€ 찝찝해 보인닀. ν•˜μ§€λ§Œ 이 방법은 ν΄λΌμ΄μ–ΈνŠΈλ‘œ ν•˜μ—¬κΈˆ Switchκ°€ μƒνƒœλΌ μ–΄λ–»κ²Œ μ €μž₯ν•˜κ³  μžˆλŠ”μ§€ μ•Œμ•„μ•Όλ§Œ ν•˜κ²Œ ν•΄μ€λ‹€.

μ΄λΌ ν•΄κ²°ν•΄κΈ° μœ„ν•΄, ν•˜λ‚˜μ˜ 메세지 - Boolean을 λ¦¬ν„΄ν•˜λŠ” - 에닀가 μ²˜λ¦¬ν•˜λŠ” 방법이 μžˆλ‹€.
~cpp 
class Switch
{
private:
	bool status;
	/* ... */
public:
	bool isOn() {
		return status;
	}
	/* ... */
};

class Light
{
/* ... */
	void makeOn() {
		/* ... */
	}
};

class WallPlate
{
private:
	Switch* switch;
	Light* light;
/* ... */
public:
/* ... */
	void update() {
		if ( switch->isOn() )
			light->makeOn();
		else
			light->makeOff();
	}
};

Boolean을 λ¦¬ν„΄ν•˜λŠ” λ©”μ†Œλ“œλΌ λ§Œλ“€κ³ , 이름은 접두사에 beλ™μ‚¬μ˜ μ—¬λŸ¬ ν˜•νƒœλΌ μ μ–΄μ€λ‹€.(is,was...)


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:09
Processing time 0.0123 sec