Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //pastebin.com/u/thewhitefang
- // Tutorial 10 Q2
- #include <iostream>
- using namespace std;
- class ICalculator{
- public:
- virtual int Calculate(int x, int y) = 0;
- };
- //both Adder and Multiplier derived from ICalculator
- class Adder : public ICalculator{
- public:
- int Calculate(int x, int y){
- int r;
- r = x + y;
- return r;
- }
- };
- class Multiplier : public ICalculator{
- public:
- int Calculate(int x, int y){
- int r;
- r = x*y;
- return r;
- }
- };
- //ICalculator lightly associated via m_pCalculator
- class Problem{
- private:
- int m_x;
- int m_y;
- ICalculator* m_pCalculator;
- public:
- int Calculate(){
- return m_pCalculator->Calculate(m_x, m_y);
- };
- //usual setter functions
- void SetX(int inValX)
- {
- m_x = inValX;
- };
- void SetY(int inValY)
- {
- m_y = inValY;
- };
- //setICalculator takes in pointer
- void setICalculator(ICalculator* inVal)
- {
- m_pCalculator=inVal;
- };
- };
- int main(){
- Problem a;
- //always make heap array for this
- //make for both add and mul
- ICalculator *pAdd = new Adder();
- Adder pAdder; //remember Adder is a class
- ICalculator *pMul = new Multiplier();
- Multiplier pMulti;
- int x;
- int y;
- cout << "Enter X value: ";
- cin >> x;
- cout << "Enter Y value: ";
- cin >> y;
- a.SetX(x);
- a.SetY(y);
- //calls in Adder
- a.setICalculator(&pAdder);
- cout << "Addition result: "<< a.Calculate() << endl;
- //calls in Multiplier
- a.setICalculator(&pMulti);
- cout << "Multiplication result: " << a.Calculate() << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement