It’s a fact of life that objects are quite often composed of other objects (or, in other words, they aggregate other objects). Remember, we agreed to equate aggregation and composition at the start of this part of the book.
There are a few ways for an object to advertise that it’s composed of something. The most obvious approach is for an object to either implement IEnumerable<T> (where T is whatever you’re prepared to expose) or, alternatively, to expose public members that themselves implement IEnumerable<T>.
Another option for advertising being a composite is to inherit ...