Lecture Notes on 23 Jan 2023 * Principles of Object Oriented Programming - Abstraction - extract the attributes and behaviors of a real world object to represent in software - Encapsulation - put attributes and functionalities together to form a class - information hiding - make attributes private and methods public - Inheritance - test by using the phrase "is-a(n)" - Polymorphism - many forms * Difference between "is-a" (inheritance) and "has-a" (composition) * Inheritance achieved through polymorphism