A view is a wrapper type that makes a concrete type
appear to be an abstract type.
For example, we might want to view a planet as being a circle.
There may be multiple views of a concrete type, including multiple
views as the same abstract type.
- A view is purely gedanken; it does not change the concrete data.
Views allow a concrete type to be thought of as
another type without being that type.
- A view type has the concrete type as its stored form.
- A view type defines properties that express what the abstract
type expects in terms of what the concrete type has.
- Other data of the concrete type are hidden.
- The abstract type is a superclass of the view type.
- Procedures of the abstract type can be inherited and specialized
through the view.