
Concept explainers
Program Plan:
We will implement the BasePlusCommissionEmp class using composition instead of inheritance and invoke different functions in the test program subsequently.
Explanation of Solution
Explanation:
Program Description:
The program demonstrates composition as an alternate way of implementing functionality in Object oriented
Program:
// BasePlusCommissionEmp class definition .
#ifndef BP_COMMISSION_H
#define BP_COMMISSION_H
#include<string>// C++ standard string class
usingnamespace std;
classBasePlusCommissionEmp
{
public:
BasePlusCommissionEmp(conststring&, conststring&, conststring&,
double = 0.0,double = 0.0, double = 0.0 );
//For generic attributes of Employee
voidsetFirstName( conststring& ); // set first name
stringgetFirstName() const; // return first name
voidsetLastName( conststring& ); // set last name
stringgetLastName() const; // return last name
voidsetSocialSecurityNumber( conststring& ); // set SSN
stringgetSocialSecurityNumber() const; // return SSN
// additional functions for attributes of CommisionEmployee
voidsetGrossSales( double ); // set gross sales amount
doublegetGrossSales() const; // return gross sales amount
voidsetCommissionRate( double ); // set commission rate
doublegetCommissionRate() const; // return commission rate
//additional functions for baseSalary
voidsetBaseSalary( double ); // set base salary
doublegetBaseSalary() const; // return base salary
// Generic functions of Employee
doubleearnings() const;
voidprint() const;
private:
//Generic attributes of Employee
stringfirstName; // composition: member object
stringlastName; // composition: member object
stringsocialSecurityNumber; //composition: member object
//attributes of CommisionEmployee
doublegrossSales; // gross weekly sales
doublecommissionRate; // commission percentage
//attribute for BaseSalary
doublebaseSalary; // base salary
}; // end class BasePlusCommissionEmp
#endif
BasePlusCommisionEmp.cpp
/* BasePlusCommissionEmp.cpp using composition Created on: 31-Jul-2018 :rajesh@acroknacks.com */
#include<string>// C++ standard string class
#include"BasePlusCommissionEmp.h"
#include<iostream>
usingnamespace std;
BasePlusCommissionEmp::BasePlusCommissionEmp(conststring&fname, conststring&lname, conststring&ssn1,
doublebaseSalary, doublegrossSales , doublecomRate )
:firstName (fname), lastName ( lname),socialSecurityNumber (ssn1 )
{
setBaseSalary(baseSalary ); // validate and store base salary
setGrossSales(grossSales);//validate and store gross sales
setCommissionRate(comRate);//validate and store commision rate
}// end constructor
/&Functions Below are specific to This class */
// set gross sales amount
voidBasePlusCommissionEmp::setGrossSales( double sales )
{
if ( sales **gt;= 0.0 )
grossSales = sales;
else
throwinvalid_argument( "Gross sales must be >= 0.0" );
} // end function setGrossSales
// return gross sales amount
doubleBasePlusCommissionEmp::getGrossSales() const
{
returngrossSales;
} // end function getGrossSales
// set commission rate
voidBasePlusCommissionEmp::setCommissionRate( double rate )
{
if ( rate > 0.0 && rate < 1.0 )
commissionRate = rate;
else
throwinvalid_argument( "Commission rate must be > 0.0 and < 1.0" );
} // end function setCommissionRate
doubleBasePlusCommissionEmp::getCommissionRate() const
{
returncommissionRate;
} // end function getCommissionRate
voidBasePlusCommissionEmp::setBaseSalary( double salary )
{
if ( salary >= 0.0 )
baseSalary = salary;
else
throwinvalid_argument( "Salary must be >= 0.0" );
} // end function setBaseSalary
// return base salary
doubleBasePlusCommissionEmp::getBaseSalary() const
{
returnbaseSalary;
} // end function getBaseSalary
//compute earnings
doubleBasePlusCommissionEmp::earnings() const
{
return ( (getCommissionRate() * getGrossSales()) + getBaseSalary()) ;
} // end function earnings
// print CommissionEmployee object
voidBasePlusCommissionEmp::print() const
{
cout<<"\nBasePlusCommission employee: ";
cout<<lastName<<", "<<firstName<<endl;
cout<<"SSN : "<<socialSecurityNumber<<endl;
cout<<"\n gross sales: $ "<<getGrossSales()
<<"\n Base Salary: $ "<<getBaseSalary()
<<"\n commission rate: "<<getCommissionRate() ;
} // end function print
/&Generic Employee functions **/
// set first name
voidBasePlusCommissionEmp::setFirstName( conststring**first )
{
firstName = first; // should validate
} // end function setFirstName
// return first name
stringBasePlusCommissionEmp::getFirstName() const
{
returnfirstName;
} // end function getFirstName
// set last name
voidBasePlusCommissionEmp::setLastName( conststring&last )
{
lastName = last; // should validate
} // end function setLastName
// return last name
stringBasePlusCommissionEmp::getLastName() const
{
returnlastName;
} // end function getLastName
// set social security number
voidBasePlusCommissionEmp::setSocialSecurityNumber( conststring&ssn )
{
socialSecurityNumber = ssn; // should validate
} // end function setSocialSecurityNumber
// return social security number
stringBasePlusCommissionEmp::getSocialSecurityNumber() const
{
returnsocialSecurityNumber;
} // end function getSocialSecurityNumber
Test Program
// Testing class BasePlusCommissionEmp.
#include<iostream>
#include<iomanip>
#include"BasePlusCommissionEmp.h"// BasePlusCommissionEmp class definition
usingnamespace std;
intmain()
{
// instantiate a BasePlusCommissionEmp object
BasePlusCommissionEmpemployee("Sue", "Jones", "222-22-2222",1500,10000,0.16 );
// get commission employee data
cout<<"Employee information obtained by get functions: \n"
<<"\nFirst name is "<<employee.getFirstName()
<<"\nLast name is "<<employee.getLastName()
<<"\nSocial security number is "
<<employee.getSocialSecurityNumber()
<<"\nBase Salary is $"<<employee.getBaseSalary()
<<"\nGross sales is $"<<employee.getGrossSales()
<<"\nCommission rate is $"<<employee.getCommissionRate() <<endl;
cout<<"Earnings based on current Data : $"<<employee.earnings();
//Modify Sales data
employee.setGrossSales( 8000 ); // set gross sales
employee.setCommissionRate( .1 ); // set commission rate
cout<<"\nUpdated employee information output by print function: \n"
<<endl;
employee.print(); // display the new employee information
// display the employee's earnings
cout<<"\n\n Updated Employee's earnings: $"<<employee.earnings() <<endl;
} // end main
Employee information obtained by get functions:
First name is Sue
Last name is Jones
Social security number is 222-22-2222
Base Salary is $1500
Gross sales is $10000
Commission rate is $0.16
Earnings based on current Data : $3100
Updated employee information output by print function:
BasePlusCommission employee: Jones, Sue
SSN : 222-22-2222
gross sales: $ 8000
Base Salary: $ 1500
commission rate: 0.1
Updated Employee's earnings: $2300
Want to see more full solutions like this?
Chapter 11 Solutions
C++ How To Program Plus Mylab Programming With Pearson Etext -- Access Card Package (10th Edition)
- No AI solutions pleasearrow_forwardNo AI solutions pleasearrow_forwardCreate an original network topology consisting of at least seven routers and twelve links, assigning arbitrary positive weights to each link. Using this topology, apply Dijkstra's Link-State Algorithm to compute the shortest paths from a source router of your choice to all other routers in the network. Your topology must be entirely your own design and should not resemble any examples from the textbook, lecture slides, or other students' work. Al-generated topologies are not permitted. Create a PowerPoint presentation that follows the format and style of slides 11 to 23 from Lecture Slide Set 06 (LS06). You should copy those slides and make any necessary changes, additions, or deletions to reflect your own topology, shortest-path calculations, and update tables. Do not alter the original slide style, layout, or formatting.arrow_forward
- Create an original network topology consisting of at least seven routers and twelve links, assigning arbitrary positive weights to each link. Using this topology, apply Dijkstra's Link-State Algorithm to compute the shortest paths from a source router of your choice to all other routers in the network. Your topology must be entirely your own design and should not resemble any examples from the textbook, lecture slides, or other students' work. Al-generated topologies are not permitted. Createarrow_forwardx3003 x3008 1110 0000 0000 1100 1110 0010 0001 0000 0101 0100 1010 0000 x3004 0010 0100 0001 0011 x3005 0110 0110 0000 0000 X3006 0110 1000 0100 0000 x3007 0001 0110 1100 0100 0111 0110 0000 What does the following LC-3 program do? Trace Step by Step, SHOW ALL YOUR WORK. x3001 x3002 0000 x3009 0001 0000 0010 0001 X300A 0001 0010 0110 0001 x300B 0001 0100 1011 1111 x300C 0000 0011 1111 1000 X300D 1111 0000 0010 0101 x300E 0000 0000 0000 0101 x300F 0000 0000 0000 0100 x3010 0000 0000 0000 0011 x3011 0000 0000 0000 0110 x3012 0000 0000 0000 0010 x3013 x3014 0000 0000 0000 0000 0000 0100 0000 0111 x3015 0000 0000 0000 0110 x3016 0000 0000 0000 1000 x3017 0000 0000 0000 0111 x3018 0000 0000 0000 0101arrow_forward2) Assume a local area network has four host computers (h1, h2, h3 & h4) and they are connected to the internet through a NAT router (s1). The host computers use private IP address space: 192.168.2/24. Each host is trying to establish 2 TCP connections to a remote webserver through the NAT router. The IP address of the webserver is: 130.12.11.9. Now do the following: 1 a. Assign IP addresses to the interfaces of the hosts and the router. For the router, assign arbitrary addresses. List these addresses. b. Now create a NAT translation table as taught in the class for all TCP connections. Assign arbitrary port numbers as required.arrow_forward
- 1) Consider the following network. Host h6 10.3.0.6 Host h5 10.3.0.5 Host h1 10.1.0.1 OpenFlow controller m 2 3 4 Host h4 10.2.0.4 Host h2 10.1.0.2 Host h3 10.2.0.3 The desired forwarding behavior for the datagrams arriving at s2 is as follows: a) any datagrams arriving on input port 1 from hosts h5 or h6 that are destined to hosts h1 or h2 should be forwarded over output port 2; b) any datagrams arriving on input port 2 from hosts h1 or h2 that are destined to hosts h5 or h6 should be forwarded over output port 1; c) any arriving datagrams on input ports 1 or 2 and destined to hosts h3 or h4 should be delivered to the host specified; d) hosts h3 and h4 should be able to send datagrams to each other. Create a flow table for s2 that implement these forwarding behaviors. Your table should have 2 columns one for match and the other for actions, as taught in the class.arrow_forwardBased on the last digit of your Kean ID: Create an LC-3 program that compares 3 personally assigned to you numbers stored in memory and finds the maximum of them. Compile and run on https://wchargin.com/lc3web/. Screenshot and explain your result. ID 0 A 7 B с -3 12 1 0 5 -1 Expected max 12 5 2 -8 -2 6 9 My Kean ID: 1233321 3 14 3 6 14 4 -5 -6 -1 -1 сл 5 10 0 4 10 6 2 11 1 11 7 -9 7 -4 7 8 00 66 00 8 5 13 13 9 -2 3 0 3arrow_forward8 9 See the program below that we worked on in class and that multiplies A=4 by B=5, the result 20 is stored in a particular register: Address 15 14 པPy"BI" ༦ དད་པས་ས་་ 12 11 11 10 9 8 7 6 109876543210 13 12 x3000 0 0 0 0 0 1000 000110 x3001 0 0 1 0 0 1 0000 000110 x3002 0 1 0 1 0 1 101 1 100000 x3003 0 0 0 1 0 1 x3004 0 0 0 1 0 101 1 000001 10010 111111 x3005 0 0 0 0 1 01 1 11 1 1 1 1 0 1 x3006 1 1 1 1 0 00000100101 x3007 0 0 0 0 0 00000000101 x3008 0 00 00 0 0000 0000100 Based on the last digit of your Kean ID, you need to modify it to multiply the personally assigned A and B to you and store the result exactly in the register assigned. Write a program in machine language (in binary) so it looks similar to the above. 3 4 ID 0 A 3 B Result Register 6 R4 1 4 7 R5 2 7 3 R6 My Kean ID: 1233321 2 2 00 8 6 5 9 1 6 R7 33 34 R4 6 0 7 R5 55 7 5 5 R6 6 1 12 R7 RR 7 R3 Trace the program/loop step by step and provide the result of your tracing. SHOW ALL YOUR WORK.arrow_forward
- You are tasked with developing a portable system that can be worn to collect health and fitness data. The challenge is to integrate all functions into the smaller form of an ear clip. The device should include heart rate, movement and temperature sensor and wireless communication with a mobile app. Draw a diagram- hardware architecture of the system- including the selection of suitable sensors, communication modules, and an energy-efficient microcontroller. (visualize the components and their connections)arrow_forwardDraw out an example of 3 systems using Lamport’s logical clock and explain the steps in words.arrow_forward“Systems have become very powerful and sophisticated, providing quality information fordecisions that enable the firm to coordinate both internally and externally.”With reference to the above statement compare the operations of any three data gatheringsystems today’s organisations use to aid decision making.arrow_forward
Microsoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,
C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT- Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage
C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr
Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning




