Advertisement
TheWhiteFang

Tutorial 10 Q2

Jan 5th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. //pastebin.com/u/thewhitefang
  2. // Tutorial 10 Q2
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. class ICalculator{
  8.  
  9. public:
  10.     virtual int Calculate(int x, int y) = 0;
  11.  
  12. };
  13.  
  14. //both Adder and Multiplier derived from ICalculator
  15. class Adder : public ICalculator{
  16. public:
  17.     int Calculate(int x, int y){
  18.  
  19.         int r;
  20.         r = x + y;
  21.  
  22.         return r;
  23.  
  24.     }
  25.  
  26. };
  27.  
  28. class Multiplier : public ICalculator{
  29. public:
  30.     int Calculate(int x, int y){
  31.  
  32.         int r;
  33.         r = x*y;
  34.  
  35.         return r;
  36.  
  37.     }
  38. };
  39.  
  40. //ICalculator lightly associated via m_pCalculator
  41. class Problem{
  42. private:
  43.     int m_x;
  44.     int m_y;
  45.  
  46.     ICalculator* m_pCalculator;
  47.  
  48. public:
  49.     int Calculate(){
  50.    
  51.         return m_pCalculator->Calculate(m_x, m_y);
  52.     };
  53.  
  54.     //usual setter functions
  55.     void SetX(int inValX)
  56.     {
  57.         m_x = inValX;
  58.     };
  59.     void SetY(int inValY)
  60.     {
  61.         m_y = inValY;
  62.     };
  63.  
  64.     //setICalculator takes in pointer
  65.     void setICalculator(ICalculator* inVal)
  66.     {
  67.         m_pCalculator=inVal;
  68.     };
  69.  
  70. };
  71.  
  72.  
  73.  
  74. int main(){
  75.  
  76.     Problem a;
  77.  
  78.     //always make heap array for this
  79.     //make for both add and mul
  80.     ICalculator *pAdd = new Adder();
  81.     Adder pAdder; //remember Adder is a class
  82.  
  83.     ICalculator *pMul = new Multiplier();
  84.     Multiplier pMulti;
  85.  
  86.  
  87.     int x;
  88.     int y;
  89.     cout << "Enter X value: ";
  90.     cin >> x;
  91.     cout << "Enter Y value: ";
  92.     cin >> y;
  93.  
  94.     a.SetX(x);
  95.     a.SetY(y);
  96.  
  97.     //calls in Adder
  98.     a.setICalculator(&pAdder);
  99.     cout << "Addition result: "<< a.Calculate() << endl;
  100.  
  101.     //calls in Multiplier
  102.     a.setICalculator(&pMulti);
  103.     cout << "Multiplication result: " << a.Calculate() << endl;
  104.  
  105.  
  106.  
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement