На Рисунке 10.2 я частично представил иерархию классов Delphi. Она не полная, я показал лишь часть крошечного уголка иерархии классов, которых насчитывается больше сотни. Что важно понять из того, что изображено на Рисунке 10.2, так это то, что иерархия объектов - это не просто линия от абстрактного к специфическому, но линия, которая разветвляется, и вновь образованные ответвления - разветвляются снова и снова. Каждый класс может иметь много классов-потомков. У TPersistent их великое множество, из которых я показал лишь несколько.

Ваши классы самые специфические

Вы можете подумать, что это с вами делают, если вы еще только вышли в путь; это могло случиться еще, когда вы начали определять свои классы от простейших, таких как - TMortgage или TPayment, которые я обсуждал в Главе 8. Но дело в том, что вы определяете новые классы с самой первой программы, которую вы написали на Delphi. Когда вы спустили новую форму и начинаете накладывать на нее компоненты, вы создаете новый класс. Это полностью визуальное создание, но после завершения проекта, если вы посмотрите на код Object Pascal, созданный вместе с проектом, вы увидите определение что-то вроде следующего:

type

TForml = class(TForm) MortgageGrid: TString; Buttonl: TButton;

procedure ButtonlClick(Sender. TObject); procedure FormCreate(Sender: TObject); private

{приватные объявления} public

{публичные объявления} end;

Вы создали этот класс - Delphi просто записал его для вас, в файле Object Pascal для вашего класса. Этот специфический класс определяет форму, использованную для простого калькулятора закладных, представленного в Главе 8 и который можно увидеть в Листинге 8.5, но созданное вами здесь выглядит очень похоже.

Создавая новую форму, вы начинаете с абстрактного класса - TForm и тут же начинаете надстраивать его. Пока вы накладываете компоненты на форму, Delphi находится за сценой и добавляет некоторое поле к создаваемому вами новому классу формы. (Это другая "странность" объектов: компилятор, который пишет для вас часть вашего исходного кода! Эй, ребята, мы в будущем!) Когда вы выполните двойной щелчек на некотором событии и создадите новый обработчик событий, Delphi добавит тело процедуры к тому же файлу с кодом Object Pascal и позволит вам вставить содержимое этой процедуры обработчика событий. Вы начинаете с очень общего абстрактного класса формы и имеете все, что необходимо всем формам, но ни чуточки больше. Вы придаете ей специфический вид, такой, который будет выполнять нужную вам работу. Таким образом, ваши классы форм более специфические из всего большого количества классов Delphi, поскольку они созданы специально для вас одного, обособленно от сотен тысяч других пользователей Delphi.

Программирование в среде Delphi

Созерцай грандиозный проект!

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


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31