Классы и объекты Практика 2
Задача 1 На рис. Представлены шаблонные интерфейсы Map и Entry. Интерфейс Map позволяет по ключу типа К получить значение типа V. Интерфейс Entry представляет собой пару значений. Измените модель так, чтобы шаблон Entry использовал параметры шаблона Map. Определите интерфейс Map_StringInteger, который указывает String типом ключа и Integer типом значения в шаблоне Map. Сколько операций содержит интерфейс Map_StringInteger? Ответ поясните.
Задача 2 Интерфейс работы с ассоциативным массивом Map с своем пространстве имет содержит интерфейс работы с элементом массива Entry. При этом реализации интерфейса Map включают несколько реализаций интерфейса Entry. Добавьте в модель класс HashMap, реализующий ассоциативный массив с помощью хэш-таблицы, и класс HashEntry, реализующий интерфейс работы с элементом массива. Пусть в классе HashMap определена частная операция увеличения размера resize. При каких условиях данная операция будет доступна классу HashEntry? Используя шаблоны, укажите, что тип ключа и тип значения интерфейса ассоциативного массива должны совпадать с типов ключа и типом значения в интерфейсе работы с элементов массива.
Задача 3 Узел дерева Node может иметь несколько дочерних child узлов того же класса Node. Используя модель, приведите пример бинарного дерева, состоящего из семи узлов Node. Постройте модель дерева, в котором каждый узел имеет от двух до пяти дочерних узлов. Разработайте модель дерева, узлы которого могут быть двух видов: узел Oden и узел Enod.
Задача 4 Диск Disk содержит несколько папок Folder которые могут содержать файлы File и папки. Произведения Content хранятся на дисках несколькими файлами. Используя классы ассоциаций, постройте модель хранения произведений на дисках. Дополните модель, укажите, что произведение может быть либо картиной Picture, либо музыкой Music, либо фильмом Movie. Может ли произведение храниться на одном диске в разных файлах? Ответ поясните.
Задача 5 Каждый экземпляр абстрактного класса контроллер Controller связан по ассоциации Seтыщк с несколькими датчиками поезда TrainSensor. В ассоциации контроллер играет роль управляющего controller. Датчик поезда участвует в ассоциации как датчик sensor с частной видимостью. Используя квалификаторы, укажите, что каждому значению индекса index типа String соответствовало не более одного датчика в ассоциации Sensor. Уточните класс контроллера, укажите, что класс принимает сигналы приближения поезда TrainSpotted и отдаления поезда TrainLeft, имеет общедоступную операцию выполнения команд execute с параметром cmd типа данных Command и возвращает значение типа данных Result. Определите класс цифрового контроллера DigitalController, уточняющий класс контроллера. В классе цифрового контроллера определена операция executeDigital, которая переопределяет операцию выполнения команд контроллера и возвращает цифровой результат DigitalResult. Используя экземпляры классов, приведите пример контроллера с двумя датчиками.
Задача 6 В файловой системе данные сохраняются в цепочках кластеров, записанных в таблице размещения файлов FAT. Таблица содержит кластеры Cluster, при этом кластер является индексом следующего кластера в цепочке. Кластер директории Folder содержит lists упорядоченный набор записей Entry о файлах и директориях. Каждая их записей указывает размер size, имя name, атрибуты attrs и начальный кластер Cluster. Уточните модель, укажите, что у кластера может не быть следующего в таблице размещения файлов. Используя ограничения, определите тип данных целое Инеу с диапазоном значений от 0 до 255. Добавьте новый вид кластера – кластер данных Data, содержащий данные файловю Операция getData позволяет получить данные класса в виде массива с элементами типа Byte. Укажите, что кроме Folder и Data кластеры бывают только испорченными Bad и резервными Reserved. Приведите пример таблицы размещения файлов на пять кластеров с одной директорией folder и двумя файлами file1 и file2. File1 размещен в кластере с номером 3, file 2 – в кластерах 2 и 4ю Таблица размещается в первом кластере, он резервный.