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