- •1. Метод структурного проектирования
- •2.Основные концепции ооп
- •3.Методика объектно-ориентированного проектирования
- •4. Обзор языков объектно-ориентированного программирования.
- •5. Методика объектно-ориентированного проектирования. Унифицированный язык моделирования uml
- •6. Диаграммы. Диаграммы классов
- •8. Определение класса. Объявление объектов класса. Обращение к объектам
- •Называется определением класса, потому что она определяет новый тип.
- •9.Инициализация полей объектов. Конструкторы. Конструктор по умолчанию
- •Конструктор по умолчанию
- •10.Копирующий конструктор
- •11. Конструктор с параметром
- •15. Множественное наследование.
- •16. Виртуальные функции.
- •18 . Наследование классов, полей и методов. Поведение производных классов.
- •19. Виртуальные методы класса
- •20. Статические методы класса
- •22. Абстрактное наследование
- •23.24.Полиморфизм. Простой полиморфизм. Сложный полиморфизм
- •26.Перегрузка функций.
- •28.Виртуальные функция
- •Void friend Bar(Foo & foo);
- •Int data;
- •Void Bar(Foo & foo)
- •30. Дружественные классы.
- •31. Работа динамической памятью. Особенности работы конструкторов и деструкторов.
- •32. Шаблоны функций. Описание и использование
- •33.Шаблоны классов
- •34. Стандартные шаблонные контейнерные классы. Основные методы.
- •35. Итераторы
- •36. Основные понятия о потоках ооп
- •37. Стандартные классы потоков ввода вывода
- •38. Файловые потоки
- •Методы файловых потоков
- •39. Строковые потоки Особой разновидностью потоков являются строковые потоки, представленные классом strstream:
- •40.Организация ввода-вывода для пользовательских классов.
- •41. Использование файлов и буферов в памяти для ввода-вывода.
- •42. Средства форматного вывода, манипуляторы.
- •43.Средства возбуждения исключительных ситуаций
- •44. Обработка исключительных ситуаций
- •45. Обработка иерархии классов исключительных ситуаций.
- •46. Единицы компиляции программы, файлы заголовков и реализации
- •47. Директивы препроцессора, макросы и условная компиляция.
- •48. Организация пространств имен.
- •49. Пространство имен для стандартной библиотеки.
- •50. Контейнерные классы.
22. Абстрактное наследование
Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).
В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, содержащий хотя бы один абстрактный метод, он описан в программе, имеет поля, методы и не может использоваться для непосредственного создания объекта. То есть от абстрактного класса можно только наследовать. Объекты создаются только на основе производных классов, наследованных от абстрактного. Например, абстрактным классом может быть базовый класс «сотрудник вуза», от которого наследуются классы «аспирант», «профессор» и т. д. Так как производные классы имеют общие поля и функции (например, поле «год рождения»), то эти члены класса могут быть описаны в базовом классе. В программе создаются объекты на основе классов «аспирант», «профессор», но нет смысла создавать объект на основе класса «сотрудник вуза».
23.24.Полиморфизм. Простой полиморфизм. Сложный полиморфизм
При создании иерархии классов некоторые свойства объектов, сохраняя названия изменяются по существу. Для реализации таких иерархий в языке программирования предусмотрен полиморфизм.
Полиморфизм - обеспечивает возможность задания различных реализаций некоторого единого по названию метода для классов различных уровней иерархий. В ООП такой полиморфизм называется простым, а методы имеющие одинаковое название статическими полиморфными.
Конкретные механизмы реализации полиморфизма:
1. Чистый полиморфизм – один код функции по разному интерпретируется в зависимости от типов аргумент:
2. Перезагрузка – определение нескольких функций с одним именем (С++);
3. Переопределение (простой полиморфизм) – конкретный метод определяется телом объекта при компиляции программы (ранее связывание).
4. Полиморфные объекты (сложный полиморфизм) – конкретный метод определяется топим объекта в процессе выполнения программы (позже связывание).
5. Обобщение функции (шаблоны) – используются при реализации в языке параметризованных классов (С++).
25.Полиморфизм. Реализация механизма позднего связывания осуществляется с использованием специальной таблицы, таблицы виртуальных методов (ТВМ).
ТВМ – создается для каждого класса и содержит адреса виртуальных методов. При вызове виртуального метода для объекта происходит обращение к ТВМ класса, по которой определяется требуемый метод. Вызов виртуального метода, в отличие от обычных методов и функций, выполняется через дополнительный этап получения адреса метода из таблицы. Это несколько замедляет выполнение программы
26.Перегрузка функций.
Предоставление компилятору выбора среди нескольких функций называется перегрузкой. В этом уроке вы научитесь использовать перегруженные функции. К концу данного урока вы освоите следующие основные концепции:
• Перегрузка функций позволяет вам использовать одно и то же имя для нескольких функций с разными типами параметров.
• Для перегрузки функций просто определите две функции с одним и тем же именем и типом возвращаемого значения, которые отличаются количеством параметров или их типом.
Перегрузка функций является особенностью языка C++, которой нет в языке С. Как вы увидите, перегрузка функций достаточно удобна и может улучшить удобочитаемость ваших программ.
27.Перегрузка операторов (англ. оverloading - перегрузка) — один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются.
Перегрузка операций предполагает введение в язык двух взаимосвязанных особенностей: возможности объявлять в одной области видимости несколько процедур или функций с одинаковыми именами и возможности описывать собственные реализации бинарных операторов (то есть знаков операций, обычно записываемых в инфиксной нотации, между операндами).