Cognitive Activities and Levels of Abstraction in Procedural and Object-Oriented Design