
- •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.Разработка компонентов.
29. Парамизованые классы.
Шаблон класса задает способ построения отдельных класов. Шаблоны класса vector:
template <class T> class vector {private:T* fitems; int fcount; public: vector(int);T& operator[](const int index);T&getitem(const int index){. . . return fitems[index];}; Префикс template <class T> указывает, что объявл шаблон с типовым парамом Т. Теперь посредством замены типового парама конкретным типом можно образовать конкретный класс, кот далее может использоваться для описания переменых, как и любой др тип даных: Класс, сгенерированый из шаблона явл совершено нормальным класом. Поэтому исп-ние шаблона не подразумевает каких-либо дополнительных механизмов (и связаных с ними расходов памяти и времени) на этапе выполнения проги по сравнению с тем, что использовалось бы, если бы необходимый конкретный класс был написан «вручную». С др стороны, исп-ние шаблонов не подразумевает обязательного уменьшения объема объектного кода. Компоненты шаблона объявл и описываются точно так же, как и компоненты обычного класса, т.е. либо внутри, либо вне класса. Компонентная функция шаблона класса явл шаблоном функции, парамизованом парамами шаблона класса. Ее внешнее описание осуществляется согласно следующему синтаксису: template <список-парамов-шаблона> тип-рез-та имя-шаблона-класса<список-парамов-шаблона>::описание-функции.Процес генерации объявления конкретного класса из шаблона класса - конкретизация шаблона (template instantiation). Класс, сгенерированый из шаблона (напр, класс, обозначаемый именем vector<int>), назется шаблоным класом (template class). Парамами шаблонов класов могут быть типовые парамы, обычные парамы и парамы-шаблоны. При конкретизации шаблона типы фактических парамов отождествляются с соответствующими (по порядку) типами из списка-парамов-шаблона и должны соответствовать им по кол-ву. У шаблона может быть несколько парамов. Парам шаблона может быть использован для описания следующих парамов. Парамы целого типа обычно исп-ются для задания размеров и границ. Простые контейнеры с ограничеными возможностями могут быть полезными, когда компактность кода и эфективность во время выполнения проги имеют первостепеное значение. Передача размера буфера в качестве аргумента шаблона позволяет его разработчику избежать использования лишней памяти. Арг-ты целого типа всегда должны быть константными выражениями. Нетиповый парам шаблона явл константой в теле шаблона, и потому попытка изменения его значения явл ошибкой.
30. Парамизованые функции.
Шаблон функций определяет потенциально неограниченое множво функций, генерируемых из шаблона. Все параметры шаблона функции должны быть типовыми. Семейство функций сортировки: template <class T> void sort(vector<T>); В противовес конкретизации шаблонов класов типовые арг-ты шаблона функ при его конкретизации явным образом обычно не задаются, а выводятся из типов арг-тов функ, поэтому шаблон функц расматривается как множво функц с совмещеным именем. Если типовые арг-ты не могут быть выведены из типов арг-тов функции, они должны задаваться явно, как при конкретизации шаблонов класов. Функция, сгенерированая из шаблона, назется шабл функцией (template function). Шабл функция может совмещать имя с дри шабл и обык функциями. Распознавание функции выполняется в три шага: 1. Поиск обыч функции, парамы кот в точности соответствуют требуемым; если таковая находится, обращение производится к ней. 2.Поиск шабл функц, из кот может быть сгенерирована функ при точном соответствии парамов; если она найдена, она вызывается. 3. Поиск обыч функ, типы формальных парамов кот лучше всего соответствуют фактическим парамам вызова; если она найдена, она вызывается. Если отождествление не найдено, фиксируется ошибка. При отождествлении с шабл не применяются даже тривиальные преобразования. Если на каком-либо, этапе будет найдено больше одного подходящего определения, также фиксируется ошибка. Для генерации отдельных версий шабл необходимо описание шабл; для порождения обращений к этим отдельным версиям достаточно объявления шабл. Компонентная функция шабл класса неявно оказывается шабл функцией, парамами шабл кот явл парамы шаблона класса. Конкретизация такой функции осуществляется вместе с конкретизацией самого шаблона класса независимо от того, описана ли функция в шаблоне или вне его.