An Introduction to Object-Oriented Programming with Java