Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

(a) Draw a class diagram representing the classes declared below (b) Declare the

ID: 3755420 • Letter: #

Question

(a) Draw a class diagram representing the classes declared below (b) Declare these classes in a file entitled "BinaryOperators.h", inserting appropriate pre-compilation directives. Define all the non-abstract methods in a source file entitled "BinaryOperators.cpp". Include also the definition of the function Test0. In this function use polymorphism to compute the following: 3+7, 3-5, 3*7, 3/5, 3/0 (c) Define main() in a source file entitled "main.cpp". Call Test0 in main0 (d) Run you program and turn in the header files, source files, and the output of your program class Binaryoperator [ public: Binaryoperator double opl, double op2 virtual double DoOp const0 fopl opl fop2 op2) () protected: const double fopl; const double fop2; // class BinaryOperator class Adder public BinaryOperator i public: Adder double opl, double op2BinaryOperator opl, op2 virtual double DoOp const; // class Adder class Subtractor public BinaryOperator public: Subtractor double opl, double op2 virtual double DoOp const; BinaryOperator opl, op2) ) // class Subtractor class Multiplier public Binaryoperator [ public: Multiplier double opl, double op2 virtual double DoOp const : BinaryOperator opl, op2 I // class Multiplier class Divider public BinaryOperator t public: Divider double opl, double op2 virtual double DoOp const : BinaryOperator opl, op2 ) // class v void Test

Explanation / Answer

/*-----------BinaryOperators.h--------------*/

#ifndef BINARYOPERATIONS_H

#define BINARYOPERATIONS_H

#include <iostream>

#include <string>

#include <iostream>

#include <string>

using namespace std;

class BinaryOperator{

public:

BinaryOperator (double op1, double op2): fOp1(op1), fOp2(op2){}

virtual double DoOp () const = 0;

protected:

const double fOp1;

const double fOp2;

}; //class BinaryOPerator

class Adder: public BinaryOperator{

public:

Adder(double op1, double op2) : BinaryOperator(op1, op2){}

virtual double DoOp () const;

};//class Adder

class Subtractor: public BinaryOperator{

public:

Subtractor(double op1, double op2) : BinaryOperator(op1, op2){}

virtual double DoOp () const;

};//class Subtractor

class Multiplier: public BinaryOperator{

public:

Multiplier(double op1, double op2) : BinaryOperator(op1, op2){}

virtual double DoOp () const;

};//class Multiplier

class Divider: public BinaryOperator{

public:

Divider(double op1, double op2) : BinaryOperator(op1, op2){}

virtual double DoOp () const;

};//class Divider

void Test();

#endif

/*-----------BinaryOperators.cpp--------------*/

#include <iostream>

#include <string>

#include "BinaryOperators.h"

using namespace std;

double Adder::DoOp() const{

return fOp1 + fOp2 ;

}

double Subtractor::DoOp() const{

return fOp1 - fOp2 ;

}

double Multiplier::DoOp() const{

return fOp1 * fOp2 ;

}

double Divider::DoOp() const{

if (fOp2 == 0){

throw string("Divide by zero");

}

return fOp1 / fOp2 ;

}

void Test(){

BinaryOperator *bptr;

//3+7

Adder a(3,7);

bptr = &a;

cout <<"Adder output is " << bptr->DoOp() <<endl;

// 3-5

Subtractor s(3, 5);

bptr = &s;

cout <<"Subtractor output is " << bptr->DoOp() <<endl;

// 3*7

Multiplier m(3, 7);

bptr = &m;

cout <<"Multiplier output is " << bptr->DoOp() <<endl;

// 3/5

Divider d(3, 5);

bptr = &d;

cout <<"Divider output is " << bptr->DoOp() <<endl;

try{

// 3/0

Divider d1(3,0);

bptr = &d1;

cout <<"Divider output is " << bptr->DoOp() <<endl;

}

catch(string e) {

cout << e << endl;

}

}

/*-----------main_binary.cpp--------------*/

#include <iostream>

#include <string>

#include "BinaryOperators.h"

using namespace std;

int main(){

Test();

return 0;

}

-----------------output---------------------

Adder output is 10
Subtractor output is -2
Multiplier output is 21
Divider output is 0.6
Divide by zero