- •3. Ұсынылатын әдебиеттер тізімі / список рекомендуемой литературы
- •1.Обзор стилей программирования
- •1.1. Процедурное программирование
- •1.2. Структурное программирование
- •1.3. Функциональное программирование
- •1.4. Логическое программирование
- •1.5. Объектно-ориентированное программирование
- •2. Основные принципы объектно-ориентированного программирования
- •3.1. Объявление классов и объектов
- •3.2. Конструкторы и деструкторы
- •3.3. Область видимости компонент класса
- •3.4. Определение компонентных функций класса
- •3.5. Статические компоненты классов
- •3.6. Дружественные функции
- •3.7. Перегрузка операций
- •4. Наследование классов
- •4.1. Повторное использование классов: наследование и агрегирование
- •4.3. Множественное наследование
- •4.4. Виртуальные классы
- •4.5. Виртуальные функции. Полиморфизм
- •4.6. Абстрактные классы
- •Методические указания по выполнению лабораторных работ
- •1. Краткие теоретические сведения
- •1.1. Структура программы
- •1.2. Константы и переменные
- •1.3. Операции
- •1.4. Выражения
- •1.5. Ввод и вывод
- •1.5.1. Ввод и вывод в стандартном Си
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Краткие теоретические сведения
- •Составные операторы
- •Операторы выбора
- •Операторы циклов
- •Операторы перехода
- •2. Постановка задачи
- •3. Варианты
- •3. Содержание отчета
- •4. Методические указания
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Краткие теоретические сведения
- •1.1. Определение массива
- •1.2. Инициализация массива
- •1.3. Указатели
- •1.4. Указатели и массивы
- •2. Варианты заданий
- •3. Методические указания
- •4. Содержание отчета
- •Краткие теоретические сведения
- •1.1. Функции
- •1.2. Массивы и строки как параметры функций
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Задания на лабораторные работы Классы. Протокол класса. Конструкторы и деструкторы
- •Краткие теоретические сведения Виртуальные функции и полиморфизм План
- •Задания для самостоятельной работы
- •Лабораторная работа №8 "Производные классы: множественное наследование"
- •Задания на лабораторные работы по Объектно-ориентированному программированию, множественное наследование
- •Экзаменационные вопросы
1.5. Объектно-ориентированное программирование
Объектно-ориентированная технология разработки программ состоит из объектно-ориентированного анализа, объектно-ориентированного проектирования и объектно-ориентированного программирования.
Объектно-ориентированный анализ состоит в объектной декомпозиции предметной области, т.е. информационная система представляется не набором функций, а совокупностью объектов, взаимодействующих друг с другом. Декомпозиция – это разделение сложной программной системы на все меньшие и меньшие подсистемы, каждую из которых можно совершенствовать независимо[1]. Структурное проектирование предполагает алгоритмическую декомпозицию, понимаемую как разделение алгоритмов, где каждый модуль системы выполняет один из этапов общего процесса.
Объекты обладают поведением, состоянием, свойствами, которые в программе реализуются в виде подпрограмм (функций). Таким образом, объектно-ориентированная технология включает в себя возможности структурного подхода, но объектно-ориентированное проектирование в большей степени реализует модель реального мира и соответствует естественной логике человеческого мышления. По мнению автора С++, Бьерна Страуструпа[2], различие между процедурным и объектно-ориентированным стилями программирования заключается примерно в следующем: программа на процедурном языке отражает "способ мышления" процессора, а на объектно-ориентированном - способ мышления программиста. Отвечая требованиям современного программирования, объектно-ориентированный стиль программирования делает акцент на разработке новых типов данных, наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения.
Сравнивая объектно-ориентированный и процедурный стиль программирования (подробно остановимся на этих двух технологиях, поскольку для остальных характерна некоторая функциональная ограниченность, не позволяющая использовать их для решения широкого круга задач), необходимо выбрать критерий сравнения. Основной критерий в оценке программных продуктов – сложность[1], а основными требованиями к методологиям разработки являются: удобство сопровождения, возможность безболезненного наращивания уже существующей программы, способность разработанных программных объектов к повторному использованию. При этом на второй план отступает такое требование, как быстрое проектирование первоначальной версии программы, потому что его воплощение обычно не позволяет соблюсти все остальные условия. Дело в том, что процесс разработки программного обеспечения не заканчивается первой версией. Он сводится к итеративному расширению предыдущих версий, что, в некоторой степени, и помогает решать проблему сложности. В борьбе с проблемами, определяемыми сложностью программ, дальше всех продвинулась объектно-ориентированная технология, которая и получила наибольшее распространение. В настоящее время она успешно развивается по самым разным направлениям, затрагивая как анализ и проектирование программных систем, так и написание самих программ. Последнее определяется как объектно-ориентированное программирование и связано с использованием соответствующих объектно-ориентированных языков. В качестве примера языков, поддерживающих объектно-ориентированный стиль программирования, можно привести С++, Object Pascal, Smalltalk, Ada, Eiffel.
Развитие ООП практически вытеснило процедурное программирование из разработки сложных программных систем.
