programming in previous we've covered many of the defining features of object-oriented programming we now know the principles and paradigms of object-oriented designand we've covered the syntax of object-oriented programming in python yetwe don' know exactly how and when to utilize these principles and syntax in practice in this we'll discuss some useful applications of the knowledge we've gainedpicking up some new topics along the wayhow to recognize objects data and behaviorsonce again wrapping data in behavior using properties restricting data using behavior the don' repeat yourself principle recognizing repeated code treat objects as objects this may seem obviousyou should generally give separate objects in your problem domain special class in your code we've seen examples of this in the case studies in previous firstwe identify objects in the problem and then model their data and behaviors