Think about computation in terms of a collection of collaborating OBJECTS * Objects can send messages to each other * Objects have mechanisms for responding to messages What is an object? * A collection of * Data * Message handlers More important stuff * We group objects into CLASSES * Classes provide the general characteristics and handlers * All humans have a height * Objects have individual details * The Human SamR is 5'11" tall * We can provide a hierarchy of classes * All humans are mammals * All mammals are animals * All animals are living creatures * Three important chacteristics of oop * Encapsulation: We group data and algorithm and therefore hide the inner workings * Inheritance: Support code reuse by using the hierarchy * Polymorphism: We can write a method that works with multiple kinds of things OOP Languages need: * Way to define classes * Data (fields) * Handlers (methods) * Way to instantiate objects in classes * Way to specify inheritance hierarchy * Way to invoke handlers / call methods / send messages * Way to OVERRIDE methods WHAT IS THIS JUNK?