Java implementation of the Payroll Case Study from Agile Software Development: principles, patters and practices, by Robert C. Martin