The Fundamental Concepts of Object-Oriented Programming