
- •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.Разработка компонентов.
1. Понятие 00п. Причины появления 00п.
00П — основная парадигма прог-ния, кот сохранится и в течение текущего десятилетия (Парадигмы в програмировании определяют как проводить вычисления, как работа, выполняемая компьютером должна быть структурирована и организована). 0на явл рез-том тридцатилетнего опыта и практики, кот берут начало в языке Simula 67 и продолжаются в языках SmallТа1k, С++, 0biect Раsсаl, Javа, С# и др. Тот, кто решает задачу в 00П, мыслит в терминах, присущих самой задаче, а не языку прог-ния . 00П явл третьим крупным этапом (после структурного и модульного прог-ния) в процесе развития технологии прог-ния. В рамках процедурно-ориентированого стиля прог-ния исп-ние структурного подхода не давало желаемого эфекта. По мере увеличения числа компонентов в создаваемых сисмах число ошибок, связаных с неправильным исп-нием процедур и некорректным учетом взаимосвязей между компонентами, стало расти нелинейно. Уменьшить число подобных ошибок и упростить их обнаружение могла позволить алгоритмическая декомпозиция, ориентированая на естественые эл-ты решаемой задачи. Такую декомпозицию задачи будем назть 00ным анализом предметной области. Для описания рез-тов 00ного анализа и последующего програмного синтеза необходимы адекватные языковые средства, построеные на определеных принципах. 0сновным понятием 00П явл объект.
2. Инкапсуляция св-в объекта
И (дословно «заключение в оболочку») - локализация в рамках объекта всех даных об объекте, кот характер-ют его внутренюю структуру и поведение с запрещением непосредственого доступа к тем даным, кот нецелесообразно (или даже опасно) предоставлять в распоряжение юзера. 0тношения частей к целому и к др частям более ясны, когда все связано вместе. Это качество назется инкапсуляцией. Связывая код и описания даных вместе, объект помогает упорядочить их. Если требуется получение значения одного из атрибутов объекта, то вызывается метод, принадлежащий этому объекту, кот возвращает значение нужного атрибута. Если такой метод представлен в описании объектного типа. Чтобы задать значение атрибута, вызывается метод, кот присваивает этому атрибуту новое значение. В С++ атрибуты объекта назются эл-тами даных или полями, а операции - компонентными функциями, или методами. Компонентная функция, не вырабатывающая другого рез-та, кроме изменения состояния объекта, иногда назется процедурой. Разные 00ные языки прог-ния решают проблему инкапсуляции по-разному. В С++, Java и С# каждый компонент объекта (поле или метод) может помечаться одним из спецификаторов доступа private, protected или public. Компонент, помеченый как private (скрытый), может использоваться только в телах методов даного класса, компонент, помеченый как protected (защищеный), может еще использоваться в наследниках даного класса (т.е. в телах их методов), а компонент, помеченый как public (открытый) – в любом месте проги. Такое гибкое разграничение доступа к компонентам объекта позволяет избежать нежелательных искажений св-в объекта и допустить эфективный доступ к ним, когда это необходимо (прямой доступ к эл-ту даных объекта обычно более эфективен, чем доступ к нему посредством метода).