**Цель работы:** - Изучить способы определения классов, правила доступа к элементам - Приобрести практические навыки работы с объектами класса - Изучить принципы и механизмы создания абстрактных типов данных - Изучить синтаксис и семантику определения и вызова конструкторов и деструкторов - Приобрести практические навыки создания и уничтожения объектов - Изучить особенности применения различных видов конструкторов. **Задание:** Разработайте алгоритм и программу, реализующую абстрактный тип данных (АТД) - класс, согласно варианту задания (*вариант 14 - устройства передачи данных*): - Предусмотрите закрытую реализацию и открытый интерфейс. - Интерфейс должен содержать функции вывода содержимого и функции доступа к некоторым полям. - Элементы данных должны быть представлены из 5 полей, один из которых должен быть статическим, второй иметь тип указатель, а третий тип перечисление, остальные на свое усмотрение. - Примените основные виды конструкторов и определитесь с деструктором класса. - Проверьте работоспособность АТД на тестовом наборе данных. **Контрольные вопросы:** 1. Дайте определение понятия «класс». Сформулируйте правила   доступа к его элементам. 2. С какой целью в классе объединены компонентные данные и компонентные функции? 3. Каким образом осуществляется доступ к открытым и закрытым элементам? 4. Опишите назначение дружественных функций, назовите их разновидности. 5. Что понимается под указателем **this**? 6. Каковы особенности использования статических компонентных данных? 7. В чем заключается синтаксис и семантика компонентных функций static и const? 8. Каким образом могут изменяться компонентные данные объектов, объявленных константами? 9. Каковы особенности создания вложенных классов?