Tyler Hedrick October 16, 2012
1
Introduction
• Threads and Concurrency – Concurrency is a crucial system abstraction (bkgd process while interacting with user) – Concurrency is necessary for performance • Object-oriented programming – Flexible design and reusable code – Organize code bottom-up – Focus on concepts rather than operations • Analysis and Modeling – Practical specification techniques and verification tools – Address challenges of threading, correct library usage, etc. • Design – Proposing and evaluating alternatives – Modularity, information hiding, and planning for change – Patterns: well-known solutions to design problems • Objects – A package of state (data) and behavior (actions) – Data and actions ∗ Fields - holds an object’s data values · Like the fields of a struct in C · Access to fields can be restricted ∗ Methods - describe operations or actions on that data · like functions associated with an abstract data type · have access to all fields in the object · method calls can be though of as “messages” to the object 1
2
Vocabulary
Subtype polymorphism - the idea of having some sort of superclass that we can subclass giving the subclass a lot of characteristics of the superclass. Example: Bird class that gets inherited by Ostrich, Duck, and Cuckoo. Dynamic dispatch - process of code invocation done at runtime since it cannot be determined at compile time. This is used in object oriented programming where we have multiple methods of the same name which take in different types. The invocation of the correct method is only known at runtime. Abstract classes - abstracting code for maximum reuse. Each abstract method defined in an abstract class is inherited by any subclass, but can be overwritten. Abstract classes cannot be instantiated Interface - a “contract”. Any class that implements an interface must have every method detailed in the interface for it to compile. Superclass / bass class - parent class of a