CS3 CONSULTATION TIME, FINAL EXAM TIME, STUDY TOPICS CS3 final: 7:45 - 10:00 a.m. Mon. May 6 MSB 228 Post exam consultation: 10am-12pm, Fri May 10, MSB 356 (my office) TOPICS (not an exhaustive list) STL * enhanced iterator functions: reverse iterators, iterator adapters, iterator movement functions Notions - UML class, object and state diagrams - base/derived classes, inheritance, virtual functions, abstract functions, abstract classes, access methods invoking overriden function in an overriding function - overloading vs. overriding - idioms vs. design patterns vs. frameworks - multiple inheritance; private vs. public inheritance, making a private method of base class public - type covariance - push and pull implementation methods - (forward) class declaration, elaborated type specifier - delegation - C++11 style type casting, static_cast vs. dynamic_cast; reinterpret_cast; const_cast - C++11 enum classes - resource pool: reasons, situations - multiple, double dispatch - god object, anti-pattern Patterns - singleton: Meyers and classic versions, precluding object copying, specifying behavior at shutdown - template method: hooks, primitive operations, template method - abstract factory: factory method, abstract vs. concrete factories/products - bridge: delegation, handle, body - adapter: adaptee, adapter, interface; class and object implementation - prototype: clone - state: context, state abstract/concrete - decorator: decoration, component - observer: subject, observer, subscribing, registry, message (notification) - visitor: concrete/abstract element/visitor - composite: component, composite, leaf - chain of responsibility: handler, successor - command: (abstract/concrete) command, client, receiver, invoker, execute()/unexecute() - memento: originator, memento, caretaker, saving/restoring object state - flyweight: intrinsic/extrinsic state, abstract/concrete flyweight, client, factory - registry: canonical vs. non-canonical pattern, use, implementation - mediator: abstract/concrete mediator, colleague, push/pull for mediator - strategy: strategy, context, push/pull for strategy NOT COVERED - facade: facade, subsystem - nested classes - PIMPL idiom, motivation, handle/body - smart pointers: unique_ptr, make_unique, managing arrays with unique_ptr, shared_ptr, use_count(), weak_ptr and reference cycle, lock() and expired()