Object-oriented programming concepts