Можно и по-другому рассматривать иерархию объектов, расположив простейшие из них на самом верхнем уровне. В таком случае между объектами более верхнего уровня и связанными с ними объектами нижних уровней существуют отношения "принадлежит к…". Такой тип иерархии присущ таксономии (системы классификации). Примат принадлежит к животным, а человек - к приматам. Такая иерархия уже использовалась раньше при рассмотрении методов проецирования. Параллельная проекция принадлежит к проекциям на плоскость, а косоугольная проекция принадлежит к параллельным. Отношение "принадлежит к…" позволяет описать, как сложный объект состоит из более простых, а также организовать наследование сложным объектом свойств более простых. Таким образом, если разработать программу обобщенного параллельного проецирования, то программа косоугольного проецирования может использовать фрагменты ранее разработанной программы и изменить только те ее части, которые касаются специфики косоугольного варианта параллельного проецирования. При работе с геометрическими объектами можно определить базовый класс, в котором имеется набор свойств, присущих всем геометрическим объектам данного вида, например цвет и свойства материала. В классах объектов частного вида можно использовать этот же набор свойств или добавить к нему новые, специфичные для данного вида объекта. Эта концепция поддерживается практически во всех объектно-ориентированных языках, таких как С++, в виде механизма наследования классов.

8.7.4. Геометрические объекты

А теперь рассмотрим, как можно реализовать идеи объектно-ориентированного программирования в графической системе. Прежде всего, следует задуматься над вопросом, а какие объекты (классы) имеет смысл включить в такую систему? Совершенно очевидно, что в ней должны присутствовать классы точек, векторов, многоугольников, прямоугольников, треугольников (два последних, скорее всего, должны быть оформлены как подклассы класса "многоугольник"). Менее очевидно, как следует поступить с атрибутами, источниками света и камерами (наблюдателями). Например, неясно, стоит ли ассоциировать свойства материалов с объектом, таким как куб, или они должны представлять собой отдельный класс? Имеет право на существование и первый, и второй варианты. Можно так определить класс куба, что в нем будут отдельные члены, представляющие оптические свойства для фоновой, диффузной и зеркальной составляющих отраженного света, которые используются в модели Фонга,


⇐ Предыдущая| |Следующая ⇒