Tools for Structured and Object-Oriented Design: An Introduction to Programming Logic