
- •8. Массивы переменного размера
- •11. Элементарные операции
- •12. Операции для структур данных: создание/удаление структур
- •15. Управление последовательностью выполнения инструкций
- •16. Подпрограммы. Правила копирования
- •17. Рекурсивные подпрог.
- •21. Передача параметров в подпрог.
- •24.Базовое управление памятью
- •25.Инкапсуляция. Структурные типы данных и их реалызация
- •27. Абстрактные типы данных
- •28. Наследование
- •29. Связь языков программирования окружающей средой
25.Инкапсуляция. Структурные типы данных и их реалызация
Инкапсулированные типы данных можно рассматривать как средство разработки программ, которое позволяет создавать новые типы данных с операциями, выполняющимися только над объектами этих новых типов.
Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс.
Структура данных — это такой объект данных, который содержит другие объекты данных в качестве своих элементов или компонентов. Компонентом этой структуры может быть элементарный объект данных или структура данных.
Основные атрибуты структур данных следующие.
1. Количество компонентов. Структура данных может иметь фиксированный размер, если количество входящих в нее компонентов неизменно в течение времени жизни этой структуры (Массивы и записи), либо переменный размер, если это количество динамически изменяется (стеки, списки, множества, таблицы и файлы). Для типов структур данных переменного размера обычно определены операции вставки и удаления компонентов. Часто используются указатели, позволяющие явным образом связывать объекты данных фиксированного размера для получения объектов данных переменной длины.
2. Тип каждого компонента. Структура данных является однородной (гомогенной), если все ее компоненты одного типа. В противном случае она называется неоднородной (гетерогенной). Массивы, множества и файлы обычно однородны, в то время как записи и списки, как правило, неоднородны.
3. Имена, используемые для выбираемых компонентов. Тип, определяющий структуру данных, должен быть снабжен механизмом выборки, позволяющим идентифицировать и выбирать отдельные компоненты структуры данных. Для массива именем отдельного компонента может являться целочисленный индекс или последовательность индексов; в случае записи именем обычно служит определенный программистом идентификатор.
4. Максимальное количество компонентов. Для структуры данных переменной длины, например для стека, может быть указан максимальный размер (максимальное число входящих компонентов).
5. Организация компонентов. Наиболее распространенным видом организации компонентов в структуре данных является их простая линейная последовательность (векторы, записи, стеки, списки и файлы). Но массив, список и запись, однако, обычно расширяются до многомерных форм, которые могут рассматриваться как отдельные типы или просто как базовые последовательные типы, в которых компонентами являются структуры данных того же типа. Например, двухмерный массив (матрицу) можно рассматривать как отдельный тип.
Операции над структурами данных
Спецификация области определения и диапазона значения для операций над структурами данных задается почти так же, как и в случае элементарных типов данных. Большое значение имеют следующие новые классы операций, специфические для структур данных.
1. Операции выборки компонента.
2. Операции над всей структурой даниых.
3. Вставка/удаление компонентов.
4. Создание/уничтожение структур данных.
26. Инкапсуляция при помощи подпрог.
Инкапсуляция имеет большое значение при модификации программ, поскольку она существенно упрощает этот процесс. Если нам удалось инкапсулировать тип данных, то можно изменять представление объектов этого типа в любой момент, просто модифицируя подпрограммы, которые манипулируют объектами этого типа, так чтобы они могли работать с их новым представлением взамен старого. Но если тип данных группа не инкапсулирован, то другие части программы могут продолжать использовать его старое представление. Поэтому любые изменения в представлении этого типа данных привели бы к тому, что эти другие части программы не смогли функционировать. Часто очень трудно определить все подпрограммы, на которые (в отсутствие инкапсуляции) может повлиять изменение способа представления конкретных объектов данных. Поэтому изменения в их представлении могут повлечь за собой ошибки в программе.
Подпрограммы формируют основной механизм инкапсуляции, который присутствует почти во всех языках. Сокрытие информации — возможно в любой правильно спроектированной программе вне зависимости от используемого языка. Инкапсуляция — вопрос разработки конкретного языка; абстракция может быть эффективно инкапсулирована только в том случае, если язык запрещает доступ к скрытой в абстракции информации.