Libraries for C++
\comment{See [BV90].}
\sli{
C++ Booch Components
- reusable component library
basic collection/container abstractions\n
template for templates\n
tradeoff of inheritance structures
{\footnotesize
Goals\n
Efficiency -- minimal runtime/memory overhead\n
Ease of use -- clear and consistent organization\n
Extensibility -- e.g. new storage mechanisms\n
Adaptability -- local tailoring
}
Scope:\n
-- like NIH Class Library \zline{ [GOP90]}\n
-- not like Interviews \zline{ [LVC89]}
Support for concurrency\n
{\em multiple threads, multiprocessing }
\n
}
\sli{
Design -- Key Abstractions
\nl
{\footnotesize
{\bf 1. Datastructures}: List, Set, Bag\n
{\bf 2. Storage}: Un/Bounded, Managed, Controlled\n
{\bf 3. Concurrency Managers}: Semaphore, Monitor\n
{\bf 4. Exceptions}: Over/Underflow, Null, Position_Error\n
{\bf 5. Tools}: pipes, filters, sorts, searches\nl
\indent \fbox{5} \fbox{1} \fbox{2} \fbox{3}
\nl
\indent \fbox{}
}
Inheritance {\em -- forest}
{\footnotesize
- structure, complexity/overhead, ontology
Layered abstractions -- reuse\n
Polymorphism -- virtual functions, redefinition\n
Design structure -- interfaces\n
Composition -- private use
\n
}
}
\sli{
Using type parametrization
- {\em Template Class Object }
Implementation mechanisms
\zline{\bf [reuse]}\n
Classes/inheritance \xline{} \n
Templates -- type parametrization \xline{-}\n
Exceptions -- uniform error reporting \xline{-}\n
Task library -- concurrency control \xline{}
Exceptions
-- in type system\n
{\rm non-fatal user errors}\n
{\rm fatal resource/corruption errors}
Tasking
{\em -- in C++ library}
\zline{[AT\&T 2.0]}\n
Assume: Semaphore, Monitor\n
Forms: Concurrent, Multiple, Controlled\n
Primitives: {\em Lock, Read_Lock, Write_Lock}
\n
}