
- •1. Понятие 00п. Причины появления 00п.
- •2. Инкапсуляция св-в объекта
- •3. Насл-е св-в
- •4. Полиморфизм поведенческих св-в объектов
- •5. Роль типов даных в яп
- •6. Этапы 00п.
- •8. Заголовочные файлы.
- •10. Константы, парамы по умолчанию.
- •11. Ссылки.
- •12. Перегрузка функций.
- •13. Классы и объекты.
- •14. Члены класса.
- •15. 0Писание класов.
- •16. Конст-ры, деструкторы.
- •17. Конст-р копирования, Конст-р присваивания.
- •18. Друзья класса.
- •19. 0Бъекты с автоматически распределяемой памятью.
- •20. 0Бъекты с динамически распределяемой памятью
- •21. Производные классы: одиночное насл-е.
- •22. Модификаторы доступа.
- •23. Переопределение функций в производном класе. Вирт-ые функции.
- •24. 0Ператор разрешения контекста.
- •25. Приведение типов объектов.
- •26. Абстр-ые классы. Чисто вирт-ые функции.
- •27. Множвеное насл-е. Сравнение множвеного насл-я с одиночным.
- •28. "Правильное" множвеное насл-е. Понятие интерфейса.
- •29. Парамизованые классы.
- •30. Парамизованые функции.
- •31. Перегрузка операций. Перегрузка унарных операторов.
- •32. Перегрузка операций. Перегрузка бинарных операторов.
- •33. Исключения и их обработка.
- •34. 0Бщая характеристика стандартной библиотеки шаблонов.
- •35. Ввод-вывод с исп-нием потоков stl.
- •46. Классы Control, ScrollableControl, ContainerControl.
- •47. Классы WinForms Application, Screen.
- •48. Классы-контейнеры List, ArrayList.
- •49. Классы Pen, Brush, Font, Graphics.
- •50. Класс Form.
- •51. Классы WinForms для реализации кнопок.
- •52. Классы WinForms для реализации строк редактирования.
- •53. Классы WinForms для реализации списков и выпадающих списков.
- •54. Классы WinForms для реализации меню и инструментальных панелей
- •55. Классы WinForms для реализации контейнеров управляющих элементов.
- •56. Методика работы с диалоговыми окнами.
- •57. Сериализация, десериализация.
- •58.Разработка компонентов.
26. Абстр-ые классы. Чисто вирт-ые функции.
Механизм абстр-ых класов служит для представления абстр-ых понятий. Абстр-ый класс можно также употреблять как определение интерфейса, для которого производные классы обеспечивают разнообразие реализаций. Чистая вирт функция — функция, кот не реализована и используется только для создания абстр-ого класса. Ее синтаксис: virtual тип имя функции(парамы) = 0; Абстр-ый класс - класс, содержащий хотя бы одну чистую вирт-ую функцию. Создание объекта абстр-ого класса невозможно, но все остальные манипуляции с типом разрешаются. Чтобы произ от абстр-ого класс избавился от качества абстракции необходимо в нем переопределить все чистые вирт-ые функции. В противном случае этот произ класс также останется абстр-ым. Абстр-ые классы очень часто находятся близко к началу иер-и. Пример использования абстр-ого и производного к нему класов: class abstract {public: abstract() {}; virtual ~abstract() {}; virtual void draw 0=0; }; class hello: public abstract {public: virtual void draw() {cout<<".."<<endl; }; };
27. Множвеное насл-е. Сравнение множвеного насл-я с одиночным.
В C++ класс может быть порожден из любого числа базовых класов. Для порождения нового класса от нескольких базовых класов используется следующая форма записи: class имя класса: public|protected|private имя баз класа1, public | protected | private имя баз класа2 и т.д. {объявления членов}. В этом случае объект производного класса будет содержать поля всех базовых класов плюс поля своего класса. Наличие нескольких непосредственых базовых класов назется множвеным насл-ем (multiple inheritance). Класс не может быть задан в качестве непосредственого баз класса более одного раза, но он может быть более одного раза косвеным базовым класом. Класс не может появляться дважды в списке базовых класов, т.к. каждая ссылка на него была бы неоднозначна. Сравнение: Насл-е св-в только одного баз класса назется одиночным (простым) насл-ем, а паралёльное насл-е св-в сразу нескольких- базовых класов назется множвеным (кратным) насл-ем.
28. "Правильное" множвеное насл-е. Понятие интерфейса.
Употребление множвеного насл-я может привести к излишней сложности и взаимосвязи класов. Множвеное насл-е - лучший и безопасный путь определения класов протокола. Класс протокола или интерфейс - класс, состоящий из чисто вирт-ых функций и не содержащий даных. 0тсутствие членов даных в базовом класе полностью устраняет наиболее известные проблемы, связаные с исп-нием множвеного насл-я. Так в производном класе должен быть только один баз класс, содержащий даные, в то время как все остальные базовые классы должны быть интерфейсами.
Предпочтительно использовать соответствующий контейнерный класс (т.е., класс, предназначеный для хранения произвольного кол-ва эл-тов не обязательно одинакового типа, обеспечивая доступ к эл-там по их номеру, а также дополнительные возможности, такие как сортировка, поиск, вставка новых эл-тов, удаление эл-тов и др.). При разработке класса желательно: 0бъявление класса должно обеспечивать клиента информацией, необходимой для успешной работы и ни какой др; Методам должна быть доступна вся информация, необходимая для выполнения их обязаностей, и никакая другая. Представление об объекте - интерфейс.(interface), оно описывает как объект взаимодействует с внешним миром. 0братная сторона объекта связана с его реализацией (implementation). Юзеру разрешен доступ только к тому, что описано в интерфейсной части. Реализация определяет, как достигается выполнение обязаностей, заявленых в интерфейсной части.