Abstraction is simplifying complex reality by modelling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem. For example, Lassiethr Dog may be treated as a Dog mush of the time, a Collie when necessary to access Collie-specific