代写data程序、代做Java语言编程
1.1  Introduction

Volunteer work is admirable, but many people enjoy being paid
for the work they do for an employer. Depending on the type of
employee, said employee may be paid by the hour, a fifixed rate
(salaried), or be on some bonus/commission payment scale.

For this assignment, I provide an interface called IEmployee. Do
not modify, extend, or in any way alter this interface - other than
to embellish the JavaDoc if required to pass the checkStyle tests.

You will create two concrete classes that implement this
interface: HourlyEmployee and SalariedEmployee. You will
also provide a test class that will test your code. This class must
be named IEmployeeTest.

1.2  What to do

EMPLOYEES

All of your assets for this assignment must be placed in a
package named student.

We're dealing with money for this example (US dollars). Consider
investigating the BigDecimal and DecimalFormat classes to
help you deal with fractional items. The rounding mode you
should use for this assignment is RoundingMode.HALF_UP (in
other words, round up the fractional parts beyond the second
decimal place)

You must implement the provided IEmployee interface.

package student;
/**
* An interface representing the concept of Employees.
Note: This assignment is a bit difffferent from the previous homework, and asks you to
practice with JUnit 5. Ensure you read the instructions carefully and submit what is
required. */
public interface IEmployee {
// NOTES (you may remove these notes after you understand the assignment if they
cause checkStyle issues):
// The max HOURLY base salary is $50.00 (per hour).
// The max Salaried base salary is $1 million per year.
// HourlyEmployees earn 1.5x base salary for any time worked > 40 hours in a
period.
// SalariedEmployees are paid monthly. For one pay period their salary should be
baseSalary/12

/**
* @return the employee's pay for the given period.
* Hourly employees are paid weekly based on the number of hours worked.
* Salaried employees are paid monthly, with a given paycheck of 1/12 their yearly
salary
*
*/
double getPayForThisPeriod();
/**
* @return the employee's base salary.
* Hourly employees answer their hourly rate.
* Salaried employees answer their yearly salary
*/
double getBaseSalary();
/**
* @param raisePercent raises the employee's base salary from 0% (minimum) to 10%
maximum.
* The parameter is a value between 0.0 and 10.0. This method converts that value
to a decimal value
* 0 - 0.10 when required for calculations.
*/
void giveRaiseByPercent(double raisePercent);
/**
* @return Returns employee ID.
*/
String getID();
/**
* @return Returns employee name.
*/
String getName();
}
Create two concrete classes (remember, both of these classes
should be created in the student package as
well): HourlyEmployee and SalariedEmployee.
Your HourlyEmployee class must include a constructor that
follows this signature:

public HourlyEmployee(String name, String id, double hourlySalary, double normalHours)
HourlyEmployees also have an additional method NOT listed
in the shared interface:

/**
* This method allows HourlyEmployees to supersede the number of hours worked for the
week.
*/
public void setSpecialHours(double hours)
HourlyEmployees have a name, ID, and an hourly salary. When
created, these employees specify the "normal" number of hours
they typically work each week. The weekly hours cannot be  less
than zero (0) and cannot be more than 80.0. If this constraint is
not met, your HourlyEmployee should throw
an IllegalArgumentException.

An HourlyEmployee also gets paid "time and one-half" (1.5x)
for any hours worked over 40.0
hours. HourlyEmployees override their "normal" hours by
calling the setSpecialHours() method. By calling this
method, an HourlyEmployee temporarily sets their "hours for
the week" to the value passed to this method (same constraints
as described above - the value must be between 0 and 80.0
hours).
This "override" does not persist, so after the
method getPayForThisPeriod() is called, the employee's
"normal hours" are re-activated for any subsequent payments.

Your SalariedEmployee class must include a constructor that
follows this signature:

public SalariedEmployee(String name, String id, double yearlySalary)
For both types of employees, if their constructors are given a
salary less than zero (0) or greater than the maximum allowable
salary (based on the type of employee), throw
an IllegalArgumentException.For both types of employees, if their constructors are given null
or an empty String ("") for either the name or ID, throw
an IllegalArgumentException.

When the giveRaiseByPercent() method is called for either
type of employee, the base salary for the employee object should
be increased by the percentage specifified by the parameter
passed in. Allowable values for the raise percentage is any
number between 0 and 10.0. Any value outside of this range
should raise an IllegalArgumentException.
Note: The maximum salary constraint must be maintained during
this operation. Therefore, if a "raise" request would take the
employee's salary above the maximum, this request should be
ignored. Do NOT throw an exception. Instead, leave the
employee's salary unchanged.

void giveRaiseByPercent(double raisePercent);
 

IEmployeeTest

Design your IEmployeeTest class to be a JUnit5 test class.
Here is some starter code - you may opt to use this if you wish:

// This is a placeholder for student code.
package student;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
public class IEmployeeTest {
   HourlyEmployee snoopyHours = new HourlyEmployee("Snoopy", "111-CHLY-BRWN", 17.50,
20);
SalariedEmployee lucy = new SalariedEmployee("Lucy", "222-22-2222", 70000.00);
IEmployee woodStock = new SalariedEmployee("Woodstock", "33-CHIRP", 180000.50);;
// sample test provided to students
@Test
public void testGetErrorWhenCreatingEmployee() {
Assertions.assertThrows(IllegalArgumentException.class, () -> { IEmployee e = new HourlyEmployee(null, null, 15.51, 30);
});
Assertions.assertThrows(IllegalArgumentException.class, () -> {
IEmployee e = new HourlyEmployee("Part-timer", "PT-TIME", -1, 30);
});
}
@Test
public void testGetHappyDayEmployee() {
}
@Test
public void testGetPayForThisPeriod() {
}
@Test
public void testGetBaseSalary() {
}
@Test
public void testGetID() {
}
@Test
public void testGetName() {
}
}
Note: Unlike our the assignments we'll be doing for the rest of
the semester, I'm asking you to place ALL of your assets in the
same package (the one called student).

You need to have the six methods prefifixed by "testGet" methods
above. The automated grader we're using for this assignment is
difffferent than the one used on homework 1 & 2, so your test
methods need to follow this form. Spelling and case-sensitivity is
important here so I suggest you copy the template given above.

You should write more tests than what I've given you here.
However, at the very least, be sure you develop the six "starter
tests" I've given you.
Notes:

For this assignment, we'll be running your JUnit tests against
your code, our exemplar code (what we think is correct) and a
sample of code in which we have purposely injected some bugs/
defects. Of course, your tests should validate your code (and
your solution should pass your tests). Additionally, your JUnit
tests will be evaluated on how well it exercises our code (and
detects the errors we have in the "buggy" solution). We'll also be
running a test code coverage analyzer to see how much of your
solution code you test with your JUnit. Part of your grade will be
calculated based on code coverage (of your own code, not of
ours).

You should provide a suitable .toString() method for
Employees:
Name: Clark Kent
ID: SUPS-111
Base Salary: $416.50
As part of your submission, remember:

• Create a UML class diagram that describes your solution
and include it with your submission

热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图