The problem domain features a large population of named snarks. Some of the snarks are boojums.
There are at least two ways to model this:
// as a property: class Snark { string name; bool is_boojum; }; // as a list: class Snark { typedef long Id; Id id; string name; }; tree<Snark::Id> boojums;
It seems intuitive that if we determined that snarks come in male and female, we would add a "sex" property to the snark class definition; and if we determined that all but five snarks were vanquished subjects, we would make a list of royals.
Are there principles one can apply, or is it a matter of architectural preference?