I. Motivations for OO Why do people like OO? A. History (skip) 1. Researchers in the 60's wanted to put their code and data together. 2. Simula 67 3. Rediscovery by Alan Kay's group at Xerox PARC 4. How AI research spinoffs helped OOP 5. change is important Is change important in software in general? why? What kinds of changes are most common? B. Why OO is exciting? How were you taught to go about programming? How do you actually do it? 1. Older approaches to programming don't deal with change well ------------------------------------------ PRACTICAL LIMITATIONS OF TOP-DOWN DESIGN (STEPWISE REFINEMENT) Designed to fix decisions: requirements -> specs -> code -> test -> deliver change in requirements ==> redesign ------------------------------------------ 2. why is change hard to deal with? Why is change hard to deal with in programming? 3. OO deals with complexity through abstraction How can you design software to avoid unnecessary coupling? 4. OO deals with extension of behavior and data through inheritance What OO features help you make small changes, like keeping extra information? 5. summary C. The downside of OOP 1. Slows down programs 2. Learning curve