Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_ООТ.doc
Скачиваний:
4
Добавлен:
28.05.2015
Размер:
126.46 Кб
Скачать

Модульность

Модульность – это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями.

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

Модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы.

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

Модульность – это свойство системы, которая была разложена на внутренние связные, но слабо связанные между собой модули.

Структура модуля в Object Pascal

В ObjectPascal модуль – это самостоятельная языковая конструкция. В этом языке интерфейс модуля отделен от его реализации. Т.е. модульность и инкапсуляция ходят рука об руку.

Структура модуля имеет следующий вид:

Unit<имя библиотечного модуля>;

Interface{интерфейсная секция}

<заголовок процедуры с указанием параметров>;

<заголовок функции с указанием параметров>;

Implementation {секция реализации}

<заголовок и тело процедуры с указанием параметров>;

<заголовок и тело функции с указанием параметров>;

Раздел Unitсодержит имя библиотечного модуля.

В интерфейсной секции описываются те константы, типы, переменные, процедуры и функции, которые являются глобальными, т.е. доступны основной программе или модулю, которые используют данный модуль.

В секции реализации определяются тела всех глобальных процедур и функций. В ней также описываются константы, переменные, процедуры и функции, являющиеся локальными, т.е. недоступными основной программе.

Области видимости

При описании нового класса важен разумный компромисс. С одной стороны, требуется скрыть от других методы и поля, представляющие собой внутреннее устройство класса (для этого и придуманы свойства). Маловажные детали на уровне пользователя объекта будут бесполезны и только помешают целостности восприятия.

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

В модели объектов языка ObjectPascalсуществует механизм доступа к составным частям объекта, определяющий области, где ими можно пользоваться (области видимости). Это можно делать с помощью директив Private, Protected и Public.

Поля, свойства и методы, находящиеся в секции Public не имеют ограничений на видимость. Они доступны из других функций и методов объектов, как в данном модуле, так и во всех прочих, ссылающихся на него.

Поля, свойства и методы, находящиеся в секции Private доступны только в методах класса и функциях, содержащихся в том же модуле, что и описываемый класс. Такая директива позволяет полностью скрыть детали внутренней реализации класса. Свойства и методы из секции private можно изменять, и это не будет сказываться на программы, работающих с объектами этого класса.

Поля, свойства и методы секции protected также доступны только внутри модуля с описываемым классом. Но – и это самое главное – они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях.