Lecture Notes on 28 Aug 2023 * Principles of Object-Oriented Programming - Abstraction - find the attributes and behaviors of the object - Encapsulation - put the attributes and the behaviors together to define a class Information Hiding: Make attributes private and functions public - Inheritance - organization of classes into a hierarchy How to determine inheritance relationship? Test if the expression classA "is a(n)" classB makes sense. "has-a(n)" - is a test of composition What is the child inheriting from the parent? - All of the attributes and all of the methods or functions of the parent. The child class then adds to the attributes and adds to the methods. In the child class you can override the methods inherited from the parent class. You cannot eliminate an attribute that you inherited from your parent but you can effectively hide it. - Polymorphism (poly = many, morphos = forms) Through polymorphism we achieve a plug-and-play ability. Polymorphism allows us to standardize our software. In Python we can achieve polymorphism through inheritance! `