работы. Если в процессе работы вы обнаружите, что выполнить работу затруднительно без показа несколько большей части модуля, переместите это немногое из раздела реализации в раздел интерфейса.

Модуль MortUnit дает один-два небольших урока того, что скрывать и что показывать. Как я упоминал ранее, функция CalcPayment является приватной для модуля, и она скрыта для всех ссылок на нее, внешних по отношению к данному модулю. Доводы за это были относительно просты Я спросил себя: Найдется ли какой-либо код, который использует "механизм обработки" закладных, и которому потребуется вычислить свои собственные платежи? Я не смог представить себе подобных обстоятельств, поэтому и не определял CalcPayment в разделе интерфейса модуля.

Это было, как говорится, без проблем. Более сложным вопросом является следующий: Почему Recalc должна быть видима снаружи модуля? Как вы можете видеть в Листинге 8.1, Recalc определяется в разделе интерфейса и, таким образом, является доступной снаружи модуля. Чем это полезно?

Я рассудил, что любое изменение в таблице закладных вообще-то требовало пере счета таблицы (даже изменения, которые я мог и не предусмотреть в наборе процедур, созданных мной для обработки информации по закладным). Беря мой модуль и делая что-либо с таблицей закладных, чего я не предусмотрел, программист будет вынужден пересчитать таблицу закладных, что и выполняет Recalc. Без Recalc ничто не может быть сделано с переменной TMortgage, не являющейся уже определенной в существующих процедурах в MortUnit. Если я выставил Recalc для внешнего мира, программисты, желающие использовать MortUnit, могут расширить ее в своих программах, даже если я и не включил исходный текст в модуль. Recalc - сердце MortUnit. Без Recalc ничего полезного не происходит внутри модуля, и все процедуры, манипулирующие закладными, тем или иным образом, зависят от нее. Создание Recalc видимой позволяет другим программистам создавать дополнительные процедуры, манипулирующие закладными, моделируемыми посредством TMortgage. В этом заключается различие между закрытым и открытым "механизмом обработки". Возможно, в некоторых случаях вы захотите ограничить расширяемость модуля. Что ж, тогда ограничение используемости может будет досадным. Помните, если вы не приводите исходный текст модуля, другой программист не может изменять подпрограммы в нем, видимы они или нет. Recalc работает и правильно, поэтому, делая ее вызываемой, вы не создаете предпосылку того, что программист попытается написать Recalc и использовать ее заново.

Никто не говорит, что эти решения просты или очевидны. Однако, чем больше вы зададите подобных вопросов, тем лучше.

Присоединение Интерфейса Пользователя к основывающемуся на модуле "механизму обработки11

Листинг 8.1 - полностью функциональный "механизм обработки" вычисления закладных, включающий почти все, необходимое для создания и поддержки в памяти амортизационной таблицы закладных. Однако, в этом мало пользы, так как вы не можете просто заглянуть в память, чтобы увидеть, что находится в таблице. (В действительности вы можете просматривать таблицу закладных в памяти с помощью Integrated Debugger (Интегрированного Отладчика) 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