(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 TestExplanation / 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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.