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...)
See Also ReplaceTempWithQuery