
- •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.Разработка компонентов.
5. Роль типов даных в яп
Паралельным явлением в совершенствовании техники прог-ния стало развитие концепции типа даных. Сталкиваясь в своей жизни с объектами различной природы, чел привык объединять в одну группу объекты со сходными признаками и применять к ним одни и те же способы обработки, наиболее им св-веные. Типы даных, порождаемые конст-рами типов, назются структурными типами даных. Их исп-ние позволяет упростить работу прог-иста при отображении структур обрабатываемых даных на структуры, предлагаемые ЯП. При работе со структурными даными конкретного типа даных прог-ист пользуется операциями, предоставляемыми этим типом даных. Тем не менее, ограниченое кол-во конст-ров типов не позволяет адекватно представить в проге любой необходимый тип даных с тем наборам операций, кот отражает семантику даного типа даных. Чтобы дать прог-исту возможность определять в проге нужные ему типы даных (в дополнение к стандартным и структурным типам даных), разработана концепция абстр-ых типов даных, обладающих интерфейсом и реализацией. Вся необходимая юзеру информация (имена операций, типы их парамов и типы рез-тов) сосредотачивалась в доступном ему интерфейсе, а детали реализации типа даных (представление его значений посредством значений известных типов даных и тела операций) были скрыты от него. Реализация типа даных в свою очередь, состоит из представления и тел операций. Интерфейс типа даных предоставляет юзеру информацию об именах и профилях операций. Имя операции — это либо идентификатор, либо — специальный символ (знак). Профиль операции указывает имена типов аргументов и типа рез-та операции. Если интерфейс типа даных фиксируется автором языка прог-ния, а реализация — разработчиком компилятора (интерпретатора), то такой тип даных назется встроеным, или стандартным. Если же и интерфейс и реализация создаются програмирующим на даном языке, то такой тип даных назется произвольным, или юзерским. Представление встроеного типа всегда выражается каким-то кол-вом байтов памяти. Т.к. представление юзерского типа в конечном итоге может быть выражено в байтах, имеет смысл операция определения размера типа даных. Как встроеные, так и юзерские типы даных разделяются, в свою очередь, на конкретные и родовые (парамизованые) типы. Конкретный тип характеризует определеное множво значений, он не требует дальнейшего уточнения и готов к непосредственому использованию. Родовой тип характеризует множво множв значений, он обладает парамами и требует конкретизации путем подстановки аргументов. Фактически, родовой тип — это функция высокого уровня (типовая функция), порождающая типы даных с родствеными интерфейсами. Др вариант родового типа даных — это макрос, кот в рез-те макроподстановки превращается в определение конкретного типа даных. По последнему варианту трактуются шаблоны в С++.
6. Этапы 00п.
Прога, решающая некот задачу, заключает в себе описание части мира, относящегося к этой задаче, или определеной предметной области. 0писание действительности в форме взаимодействующих объектов во многих случаях естественее, чем в форме иер-и подпрограм, и поэтому оно облегчает програмное моделирование такой предметной области.
В процесе прог-ния в 00ном стиле можно выделить следующие этапы:
1. 0пределение основных понятий предметной области и соответствующих им класов с соответствующими св-вами. 0боснование способов создания объектов. 2. 0пределение или формулирование принципов взаимодействия класов и взаимодействия объектов в рамках програмной сисмы. З. Установление иер-и взаимосвязи св-в родственых класов.
4. Реализация иер-и класов посредством механизма насл-я. 5. Реализация методов каждого класса. В рез-те такой работы создается 00-ная среда, или библиотека класов, позволяющая решать задачи моделирования в определеной предметной области. Первые три этапа явл 00ным анализом предметной области, а последние два — собствено 00П. В разработаных областях ясны классы, их иер-я и отношения взаимодействия. В неразработаных областях исп-ние 00П предусматривает гораздо большие затраты на первоначальных этапах разработки (00ный анализ, проектирование и создание библиотеки класов).
7. 0бщая характеристика языка С++.
С++ обеспечивает абстракцию даных, поддерживая понятия и возможности: - конст-р юзерских типов; -средства управления доступом (publiс, рrotected, private); -абстр-ые классы; -гарантированая инициализация и очистка объектов; -юзерские преобраз-ния типов объектов; -парамизованые (родовые) функции и типы даных; -обработка исключительных ситуаций. Ключевым понятием в С++ явл класс. Классы обеспечивают перечисленые выше возможности. Иер-ческая организация класов в С++ поддерживается понятиями: произ класс (подклас), вирт функция (подмена функций).