На этом шаге мы рассмотрим взаимосвязь объектов и модулей.
Разделенность описания классов и реализации объявленных в них методов гармонично соответствует оформлению в виде модуля, у которого также разделяется описание заголовков экспортируемых процедур в интерфейсном разделе и описание кода этих процедур в разделе реализации.
Поскольку классы вводятся чаще всего для того, чтобы их могли использовать при написании других программ, то они, как правило, описываются в разделе interface.
Описание же реализации методов идеально соответствует размещению в разделе implementation, так как по самой сути объектов требуется, чтобы конкретика работы их методов была скрыта от пользователя. В целом, общие принципы области видимости переменных, принятые для модулей, распространяются и на объекты: в разделе реализации можно использовать все, что описано в интерфейсном разделе.
Для демонстрации сказанного приведем примера класса TPosition, описывающего позицию шахматной доски:
unit ChessMod; interface Type { Экспортируемые типы и классы. } TColumns = 'а'..'h'; TRows = 1..8; { Позиция на доске. } TPosition = class private Column : TColumns; Row : TRows; public function GetColumn : TColumns; function GetRow : TRows; end; implementation { Реализация методов. } function TPosition.GetColumn : TColumns; begin GetColumn := Column; end; function TPosition.GetRow : TRows; begin GetRow := Row; end; end.
На следующем шаге мы сравним старую и новую ООП-модель .