Print This Page
iLab 4 of 7: Composition and Class Interfaces
Connect to the iLab here.
Submit your assignment to the Dropbox located on the silver tab at the top of this page.
(See Syllabus “Due Dates for Assignments & Exams” for due dates.)
i L A B O V E R V I E W
Scenario and Summary
The objective of the lab is to modify the Employee class to demonstrate composition and a class interface. An employee typically has benefits, so we will make the following changes:
1. Create a Benefits class.
2. Integrate the Benefit class into the Employee class.
3. Create an iEmployee abstract class to guarantee that calculatePay is implemented in the Employee class. A tutorial on interfaces can be downloaded here.
Deliverables
Due this week:
• Capture the console output window and paste it into a Word document.
• Zip the project folder files.
• Put the zip file and screen shots (Word document that contains programming code and screen shots of program output) in the Dropbox.
i L A B S T E P S
STEP 1: Understand the UML Diagram

The only change to the Employee class is that there is a new attribute:
+benefit : Benefit
Notice that there is a “+” for this attribute, meaning that it is public. Make sure to examine the multi-arg constructor’s signature!
Also, the dotted directed line between Employee and iEmployee specifies that the Employee class must implement the iEmployee abstract class, and thus provide an implementation for the calculatePay method.
STEP 2: Create the Project
You will want to use the Week 3 project as the starting point for the lab. To do this, you will want to create a new project by following these steps:
1. Open the same workspace you created for the Week 3 project.
2. Create a new project and name it “CIS247B_WK4_Lab_LASTNAME”.
3. Copy all the source files from the Week 3 project into the Week 4 project.
4. Before you move on to the next step, build and execute the Week 4 project.
STEP 3: Modify the Employee Class
1. Using the UML Diagrams from Step 1, create the Benefit class. To get an idea of how to format displayBenefits, take a look at the output in Step 5.
2. Add a Benefit attribute to the Employee class.
3. Initialize the new Benefit attribute in both Employee constructors. Again, take note of the multi-arg constructors parameter list!
4. Create the iEmployee interface.
5. Modify the Employee class to implement the new interface so that Employee will have to implement the calculatePay method.
6. Modify the Employee class to call displayBenefit when displaying Employee information.
STEP 4: Modify the Main Method
Notice that the Employee class now has a public benefit object inside it. This means that you can access the set methods of the Benefit object with the following code:
As an example, to set the lifeInsurance attribute inside an Employee object called emp, we could execute the following code:
emp.benefit.setLifeInsurance(lifeInsurance);
The steps required to modify the Main class are below. New steps are in bold.
1. Create an Employee object using the default constructor.
2. Prompt for and then set the first name, last name, and gender. Consider using your getInput method from Week 1 to obtain data from the user for this step as well as Step 3.
3. Prompt for and then set the dependents and annual salary using the overloaded setters that accept Strings.
4. Prompt for and set healthInsurance, lifeInsurance, and vacation.
5. Using your code from Week 1, display a divider that contains the string “Employee Information”.
6. Display the Employee Information.
7. Display the number of employees created using getNumEmployees(). Remember to access getNumEmployees using the class name, not the Employee object.
8. Create a Benefit object called benefit1 using the multi-arg constructor. Use any information you want for health insurance, life insurance, and vacation.
9. Create another Employee object and use the constructor to fill it with the following:
“Mary”, “Noia”, ‘F’, 5, 24000.0, benefit1
10. Using your code from Week 1, display a divider that contains the string “Employee Information”.
11. Display the employee information.
12. Display the number of employees created using getNumEmployees(). Remember to access getNumEmployees using the class name, not the Employee object.
STEP 5: Compile and Test
When done, compile and execute your code. Debug any errors until your code is error-free.
Check your output to ensure that you have the desired output, modify your code as necessary, and rebuild.
Your output should resemble the following:
Screenshot of program that reads: ************** Employee Information ************** First Name: John Last Name: Doe Gender: M Dependents: 2 Annual Salary: $73,000.00 Weekly Pay: $1,403.85 Health Insurance: Partial Life Insurance: 500.0 Vacation: 10 Total employees: 1 *************** Employee Information *************** First Name: Mary Last Name: Noia Gender: F Dependents: 5 Annual Salary: $24,000.00 Weekly Pay: $461.54 Health Insurance: Full Life Insurance: 100.0 Vacation: 5 Total employees: 2
STEP 6: Submit Deliverables
• Capture the Console output window and paste it into a Word document.
• Put the zip file and screen shots (Word document) in the Dropbox.
Submit your lab to the Dropbox located on the silver tab at the top of this page. For instructions on how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial.
See Syllabus “Due Dates for Assignments & Exams” for due date information.
* You can also use 2CO option if you want to purchase through Credit Cards/Paypal but make sure you put the correct billing information otherwise you wont be able to receive any download link.
* Your paypal has to be pre-loaded in order to complete the purchase or otherwise please discuss it with us at [email protected].
* As soon as the payment is received, download link of the solution will automatically be sent to the address used in selected payment method.
* Please check your junk mails as the download link email might go there and please be patient for the download link email. Sometimes, due to server congestion, you may receive download link with a delay.
* All the contents are compressed in one zip folder.
* In case if you get stuck at any point during the payment process, please immediately contact us at [email protected] and we will fix it with you.
* We try our best to reach back to you on immediate basis. However, please wait for atleast 8 hours for a response from our side. Afterall, we are humans.
* Comments/Feedbacks are truely welcomed and there might be some incentives for you for the next lab/quiz/assignment.
* In case of any query, please donot hesitate to contact us at [email protected].
* MOST IMPORTANT Please use the tutorials as a guide and they need NOT to be used for any submission. Just take help from the material.
******************************************** Good Luck ***************************************************
Any personal information received will only be used to fill your order. We will not sell or redistribute your information to anyone.
We will try our best to resolve the issue and if still persists we can discuss for a refund in case its required.