Due: 11:59pm on Monday, March 18
Purpose – Implement the following two classes
Class 1 – MonetaryUnit
Create a MonetaryUnit class that holds the name (a string), monetary symbol (a string) and the amount of the monetary unit that is equivalent to one US dollar (a double) as private data members.
The class must include the following public member functions:
A SetName function that has a string as its parameter and sets the name of the monetary unit to the string as long as the string isn’t empty (has a length of at least 1). The function should return true if the name is set to the function’s argument, and false otherwise.
A GetName function that returns a copy of the name of the monetary unit.
A SetSymbol function that takes a has as its parameter and sets the monetary symbol to the string as long as the string isn’t empty (has a length of at least 1). The function should return true if the symbol is set to the function’s argument, and false otherwise.
A GetSymbol function that returns a copy of the monetary unit’s symbol.
A SetAmountEquivalentTo1Dollar function that has a double as its parameter and sets the double data member equal to the function’s argument as long as the argument is positive. The function should return true if the data member is set to the function’s argument, and false otherwise.
A GetAmountEquivalentTo1Dollar function that returns a copy of the double data member.
A constructor that takes a string for the name, a string for the symbol, and a double for the amount equivalent to one dollar as parameters. The parameters should have default arguments of “US dollars”, “$”, and 1, respectively.
The class must include the following overloaded operator:
Overload the == operator to return true if two MonetaryUnit objects hold the same private data member values.
Review initial tests for the functionality of the class in the following files:
testMonetaryUnitName.cc, testMonetaryUnitSymbol.cc,
testMonetaryUnitAmountEquivalentTo1Dollar.cc, testMonetaryUnitConstructor.cc, and
testMonetaryUnitEquivalent.cc.
If you place all of the attached files in the same directory, you can run the initial tests with the commands
make testMonetaryUnitName
make testMonetaryUnitSymbol
make testMonetaryUnitAmountEquivalentTo1Dollar
make testMonetaryUnitConstructor
make testMonetaryUnitEquivalent
You are strongly encouraged to create more rigorous tests.
Class 2 – MonetaryAmount
Create a MonetaryAmount class that has a value (a double) and a monetary unit (a MonetaryUnit object) as data members.
The class must include the following public member functions:
A GetValue and GetUnit accessor functions that return copies of the MonetaryAmount’s value and MonetaryUnit data members, respectively.
A constructor that takes a double and a constant reference to a MonetaryUnit as parameters. The parameters should have default arguments of 0 and US dollars (MonetaryUnit(“US dollars”, “$”, 1)), respectively. The constructor should set up the new MonetaryAmount object with the parameters’ values.
A ConvertToUnit function that has a constant reference to a MonetaryUnit as its parameter. The function should update the value and the MonetaryUnit data members so that the object holds an equivalent monetary amount in the updated units. For example, assume that an object originally holds 3 US dollars, and that 0.92 Euros is equivalent to 1 US dollar. Converting the object to Euros should update the monetary unit of the object to Euros and it should update the value of the object to 2.76. See testMonetaryAmountConvertToUnit.cc for additional examples.
The class must include the following public static data member:
A public static boolean data member named display_unit_name that holds the value true if monetary amounts are to display with the value followed by a space and the monetary unit name (e.g. “3.25 US dollars”) and false if monetary amounts display with the monetary symbol followed by the numeric value (e.g. “$3.25”). Initialize the value of this data member to false.
This data member is used by the << operator and will be tested in
The class must include the following overloaded operators:
Overload the == operator to return true if two MonetaryAmount objects hold the equivalent amounts, and false if they do not. See testMonetaryAmountEquivalent.cc for examples.
Overload the < operator to return true if the MonetaryAmount object on the left of the operator represents a smaller monetary amount than the MonetaryAmount on the right, and false otherwise. See testMonetaryAmountLessThan.cc for examples.
Overload the > operator to return true if the MonetaryAmount oject on the left of the operator represents a larger monetary amount than the MonetaryAmount on the right, and false otherwise. See testMonetaryAmountGreaterThan.cc for examples.
Overload the << operator to output a MonetaryAmount object in the format specified by the static data member display_unit_name. See testMonetaryAmountCreateOutput.cc and expectedoutput.txt for example output statements and the output they should create.
Overload the + operator to take two MonetaryAmount objects as operands and returns a MonetaryAmount object holding the sum of the two objects in the units of the left operand. See testMonetaryAmountAddition.cc for examples.
Review initial tests for the functionality of the class in the following attached files: testMonetaryAmountConstructor.cc, testMonetaryAmountConvertToUnit.cc, testMonetaryAmountEquivalent.cc, testMonetaryAmountLessThan.cc, testMonetaryAmountGreaterThan.cc, testMonetaryAmountCreateOutput.cc, expectedoutput.txt, and testMonetaryAmountAddition.cc
If you place all of the attached files in the same directory, you can run the initial tests with the commands
make testMonetaryAmountConstructor
make testMonetaryAmountConvertToUnit
make testMonetaryAmountEquivalent
make testMonetaryAmountLessThan
make testMonetaryAmountGreaterThan
make testMonetaryAmountOutput
make testMonetaryAmountAddition
You are strongly encouraged to create more rigorous tests.
Specifications
- Add all code for the definition of the MonetaryUnit class in a header file named MonetaryUnit.h
- Include all of the necessary code for the MonetaryUnit class, including the implementations of the public member functions and the overloaded == operator, in a source file named MonetaryUnit.cc
- Add all code for the definition of the MonetaryAmount class in a header file named MonetaryAmount.h
- Include all of the necessary code for the MonetaryAmount class, including the implementations of the public member functions and operators, in a source file named MonetaryAmount.cc
- You will submit a zip file (only a zip file will be accepted) containing MonetaryUnit.h, MonetaryUnit.cc, MonetaryAmount.h and MonetaryAmount.cc to the assignment in Blackboard.
- Source files must compile and run on a computer of the instructor’s choosing in the Linux lab (see your course syllabus for additional details).
- Your programming assignment will be graded with modified versions of the test files
Grade Breakdown
Style MonetaryUnit.h: 0.25 points
Style MonetaryUnit.cc: 0.25 points
Style MonetaryAmount.h: 0.25 points
Style MonetaryAmount.cc: 0.25 points
Documentation: 1 point
Clean compilation of MonetaryUnit.cc: 0.5 points
Clean compilation of MonetaryAmount.cc: 0.5 points
Passes instructor’s modified testMonetaryUnitName.cc tests: 0.5 points
Passes instructor’s modified testMonetaryUnitSymbol.cc tests: 0.5 points
Passes instructor’s modified testMonetaryUnitAmountEquivalentTo1Dollar.cc tests:
0.5 points
Passes
instructor’s modified
testMonetaryUnitConstructor.cc tests: 0.5 points
Passes
instructor’s modified
testMonetaryUnitEquivalent.cc tests: 0.5 points
Passes
instructor’s modified
testMonetaryAmountConstructor.cc tests: 0.5 points
Passes
instructor’s modified
testMonetaryAmountConvertToUnit.cc tests: 1 point
Passes
instructor’s modified
testMonetaryAmountEquivalent.cc tests: 0.5 points
Passes
instructor’s modified
testMonetaryAmountLessThan.cc tests: 0.5 points
Passes
instructor’s modified
testMonetaryAmountGreaterThan.cc tests: 0.5 points
Passes instructor’s modified MonetaryAmount << operator tests: 1 point
Passes instructor’s modified testMonetaryAmountAddition.cc.cc tests: 0.5 point
The penalty for late program submissions is 10% per day, with no submission accepted after 3 days.
请加QQ:99515681 邮箱:99515681@qq.com WX:codehelp