Skip to content

Instantly share code, notes, and snippets.

@unclebob
Created September 17, 2010 17:21
Show Gist options
  • Save unclebob/584581 to your computer and use it in GitHub Desktop.
Save unclebob/584581 to your computer and use it in GitHub Desktop.
package payroll;
public class ContractorCalculator extends PayCalculator {
public double calculate(double hours, double rate) {
validateHours(hours);
return hours * rate;
}
}
package payroll;
public class HourlyCalculator extends PayCalculator {
public double calculate(double hours, double rate) {
validateHours(hours);
double overtime = Math.max(0, hours - 40);
return hours * rate + overtime * rate * 0.5;
}
}
package payroll;
public abstract class PayCalculator {
public abstract double calculate(double hours, double rate);
protected void validateHours(double hours) {
if (hours < 0 || hours > 80) {
throw new RuntimeException("Hours out of range: " + hours);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment