Турбо Паскаль 6.0

         

Абстрактные объекты.


Многие типы объектов существуют как "абстрактная" основа, из которой могут порождаться более специализированные полезные типы объектов. Причина создания абстрактных типов частично концептуальная, но в большой степени служит практическим целям сокращения усилий по кодированию. Для примера возьмем типы TRadioButtons и TCheckBoxes. Каждый из них может быть прямо порожден от TView. Однако они разделяют ряд общих свойств: оба представляют набор элементов управления с аналогичной реакцией. Набор зависимых кнопок во многом похож на набор независимых кнопок, внутри которого только одна кнопка может быть выбрана, хотя существует несколько других технических различий. Эта общность включена в абстрактный класс TCluster. TRadioButtons и TCheckBoxes порождены от TCluster со специализированными методами, обеспечивающими их индивидуальность. Бессмысленно создавать экземпляр абстрактного типа. Например экземпляр MyCluster от TCluster не будет иметь полезного метода Draw. Он наследует TView.Darw без перекрытия так, что MyCluster.Draw будет просто выводить пустой прямоугольник умалчиваемого цвета. Если Вы хотите создать кластер элементов управления со свойствами, отличными от зависимых или независимых кнопок, Вы можете породить TMyCluster от TCluster или можно породить Ваш специальный кластер от TRadioButtons или TCheckBoxеs в зависимости от того, какой из них ближе к Вашим требованиям. В любом случае Вы будете добавлять новые поля и добавлять или перекрывать методы с минимальными затратами. Если Вы планируете включить целое семейство новых кластеров, может быть полезным создать промежуточный абстрактный тип объекта.



Содержание раздела