Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Data
- {
- public:
- double m_Opposite;
- double m_Adjacent;
- double m_Hypotenuse;
- };
- class ITrigo // pure virtual class
- {
- public:
- virtual void CompAngle(Data input, double& angle1, double& angle2) = 0;
- };
- class SinCsc : public ITrigo // worker class, realizing ITrigo
- {
- public:
- void CompAngle(Data input, double& angle1, double& angle2)
- {
- angle1 = input.m_Opposite / input.m_Hypotenuse;
- angle2 = input.m_Hypotenuse / input.m_Opposite;
- }
- };
- class Trigo
- {
- private:
- Data m_Input;
- ITrigo* m_pObject;
- public:
- void SetAttributes (Data input)
- {
- m_Input = input;
- }
- void SetTrigoObject (ITrigo* pObject)
- {
- m_pObject = pObject;
- }
- void Compute (double& angle1, double& angle2)
- {
- m_pObject->CompAngle(m_Input, angle1, angle2);
- }
- };
- int main(){
- Data d;
- Trigo t;
- d.m_Opposite = 4.0; d.m_Adjacent = 3.0, d.m_Hypotenuse = 5.0;
- t.SetAttributes(d);
- ITrigo *pObj = new SinCsc();
- t.SetTrigoObject(pObj);
- double sine, cosecant;
- t.Compute(sine, cosecant);
- cout << "Sine: " << sine << endl;
- cout << "Cosecant: " << cosecant << endl;
- delete pObj;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment