TPayment = CLASS(TObject)

{ один элемент в амортизационной таблице )

FaymentNum : Integer;
PayPrincipal : Real ; PayInterest : Real; InterestSoFar : Real; ExtraPrincipal : Real; Balance : Real;
PROCEDURE GetStringForm(VAR StrPayNum, StrPayPrin, StrPaylnt, StrPrinSoFar, StrlntSoFar, StrExtraPrin StrBalance : Stringl5);
END;

Так как класс TPeyment наследует TObject, он содержит в себе все, что содержит TObject. Вы не видите ничего этого в определении его класса, показанном выше, но каждая последняя маленькая частица TObject находится непосредственно в полях как PeymentNum, Balance и так далее.

Здорово, скажете вы: я наследник Невидимого Человека. Как можно узнать, что находится внутри TObject и как его использовать? Чрезвычайно хороший вопрос, но еще в большей степени это может быть вопросом неправильным. Только пара вещей внутри TObject непосредственно используется вами - программистом в Delphi, в особености начинающим программистом. Эти использования задокументированы в руководствах по Delphi, а кроме того, я объясню это здесь. Существует универсальный метод просмотра ваших объектов, при котором видно все, находящееся у них внутри (Окно просмотра объекта Delphi - Delphi's Object Browser), но это более обширная тема, которую я не могу объяснить в деталях в этой небольшой книге. Тем не менее, когда я сказал, что вопрос "Как я могу использовать в моей программе возможности TObject?" - является неправильным вопросом, я имел в виду, что наследование из TObject не принесет вам выгоды. Это сделано для Delphi и, может быть, для того Грандиозного Проекта, который вы только начинаете чувствовать.

Общие и не обшие предки

Куда лучше будет следующий вопрос: "Что означает наследовать то, что есть в TObject, в мои классы?" Этот вопрос может показаться философским, но это не так, и ударяет в самое сердце того, что мы делаем с объектно-ориентированным программированием. Мы моделируем определенные вещи, создавая представление более крупных идей и, делая это, мы начинаем отходить от простого вопроса, типа - "А будет ли это компилироваться?" Гораздо более важный вопрос состоит в том, что объект действительно существует.

В этом случае ответом будет то, что объект TPayment является некоторой моделью платежа по закладной. Но так как он унаследован от TObject, он также является и TObject. Атак как он TObject, то является теперь частью Грандиозного Проекта в Delphi.

Все классы в Delphi унаследованы из TObject, и только TObject не унаследован не из чего, созданного ранее. Таким образом, TObject является корневым классом в иерархии классов Delphi. Это общий предок всех классов Delphi и общая нить, связывающая все классы Delphi в Грандиозный Проект.

Каркасом Грандиозного Проекта является иерархия классов объекта с TObject на вершине со всеми другими классами, происходящими от него. Классы TPayment и TMortgage происходят прямо от TObject. В большинстве случаев, предопределенные классы в Delphi являются частью общей семьи классов, происходящих от TObject, уровень за уровнем. От TObject происходит TPersistent, а от TPersistent происходит TCont-rol (и так далее). От TControl происходит TWîncontrol, от которого происходит TButtonControl, от которого, в свою очередь, (наконец-то!) происходит TButton, которые опускаются на ваши формы больше, чем что либо другое. На каждом уровне иерархии существует уровень функциональных возможностей, который разделяется всеми происходящими от него уровнями. На каждом уровне для новых классов существует новая возможность "отделиться" от существующей иерархии и, так или иначе, отличаться от каждого вышестоящего класса.


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

Программирование в среде 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