An Object-Oriented Approach to Programming Logic and Design