An Introduction to Programming and Object-Oriented Design Using Java