On the concepts of object-oriented design