lecture 8: object-oriented programming (OOP)