Слайд 2Цели дисциплины
После изучения дисциплины студенты должны:
Знать:
Общие принципы объектно-ориентированного программирования;
Реализацию объектной модели в

языке программирования С++;
Средства обобщенного программирования: классы и шаблоны
Уметь:
Составлять объектные программы на языке С++;
Эффективно использовать возможности языка С++ в программах;
Пользоваться стандартной библиотекой С++
Быть ознакомленными:
С особенностями объектной модели в других языках программирования;
С основами объектно-ориентированного проектирования
Слайд 3Краткое содержание дисциплины
Классы и объекты. Поля и методы. Конструкторы
Дружественные функции. Перегрузка операторов
Производные

классы
Виртуальные функции. Полиморфизм
Обработка исключений
Множественное наследование
Шаблоны функций
Средства ввода-вывода
Контейнерные классы и итераторы
Слайд 4Основная литература
Х. Дейтел, П.Дейтел. Как программировать на С++. 5-е издание. М.: «Бином»,

2018.- 1456 с.
П.Франка. С++. Учебный курс. 2-е издание. СПб.: «Питер», 2015.- 496 с.
С.Прата. Язык программирования С++. Лекции и упражнения. 6-е издание. М.: «Диалектика-Вильямс», 2012.- 1248 с.
С.Липпман и др. Язык программирования С++. Вводный курс. 5-е издание. М.: «Вильямс», 2014.
Слайд 5Дополнительная литература
Г.Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 2-е

издание. М.: «Бином», 2014.- 506 с.
Б.Страуструп. Язык программирования С++. М.: «Бином», 2011.- 1136 с.
Слайд 6Сложность программного обеспечения
Технологии ООП возникли как ответ на нарастающую сложность ПО
Не

все программные системы сложны.
Промышленные программные продукты - диспетчеризация транспорта, складской учет, учет кадров, бухгалтерский учет
Промышленная программа имеет такой уровень сложности, что один разработчик не в состоянии охватить все детали системы
Слайд 7Причины сложности ПО
Сложность ПО вызывается следующими причинами:
Сложность реального мира
Предприятие –

огромный механизм.
Сложность часто возникает из-за нестыковок между пользователями системы и разработчиками
Требования к программной системе меняются в ходе разработки
2. Трудность управления процессом разработки
Размер промышленных программных систем – десятки и сотни тысяч строк
Слайд 8Термины
Сопровождение ПО – устранение ошибок в ходе эксплуатации.
Эволюция ПО – внесение

изменений в ответ на изменившиеся требования.
Сохранение ПО – поддержание работоспособности разрушающейся системы.
Слайд 9Признаки сложной системы
Сложные системы являются иерархическими и состоят из подсистем, которые

тоже могут быть разделены на подсистемы.
2. Выбор, какие компоненты системы считаются простейшими, зависит от разработчика
Слайд 10Признаки сложной системы
3. Сложные системы обычно состоят из немногих типов подсистем,

но по-разному скомбинированных и организованных.
4. Любая работающая сложная система является развитием работавшей более простой системы
Слайд 11Алгоритмическая декомпозиция
Это разделение системы на подсистемы и алгоритмы, где каждый модуль выполняет

один из этапов
Слайд 12Объектно-ориентированная декомпозиция
Критерий объектно-ориентированной декомпозиции – принадлежность элементов к различным абстракциям предметной области
Объект

1
Объект 2
Объект 3
Объект 4
Слайд 13Преимущества объектной декомпозиции
1. Уменьшается размер программных систем за счет повторного использования

кода.
2. Объектно-ориентированные системы более гибки и проще эволюционируют
Объектно-ориентированное проектирование – это методология проектирования, основанная на процессе объектной декомпозиции системы
Слайд 14Иерархия
Способ, позволяющий снизить уровень сложности – организация иерархии
Необходимо организовать внутри системы

иерархию классов и объектов
Структура классов определяет общность объектов и их поведения внутри системы
Слайд 15История программирования
Программирование в машинных кодах
Процедурные языки программирования (FORTRAN, ALGOL)
Структурное программирование

Объектно-ориентированное программирование