June 17, 2004
Overview and Introductions
Design recipes in HtDP
Structure of data: containment, union
Self-referential data
Classes: data definitions, class diagrams, constructors
Making examples of objects
Composition
Union: data definitions, class diagrams, examples
Design recipes for class hierarchies
Self-referential data - lists, trees, ...
Mutually referential data
Methods for simple classes
Design recipes for methods
Methods for classes with containment
Methods for union
More methods for unions:
Abstract vs. concrete methods in the abstract class
Methods for self-referential class hierarchies
Accumulator style methods for self-referential data
Abstractions over the data item type: Object
Abstracting behavior: interfaces
Function objects: Comparator, Selector, IObj2Int
State - programming with effects
Mutating structures
Equality
Abstracting traversals: iterators
Design recipe for abstractions
Designing loops with function objects and iterators
Implementing iterators
What have we learned
Where do we go from here