While is-a and has-a are two important types of abstraction, there are others.
Composition is one example; a form of has-a; characterized by the following
- Primitive forms
- Rules for combining old values to create new values
- The idea that new values can also be subject to further combination
Examples include regular expressions, type systems, windows, lots of other
complex systems.