Тема:Тема:
ВыходВыход
Технологические основы языков программирования высокого уровня
Проблемы: Трудно проектировать. Трудно реализовывать. Трудно отлаживать. Трудно сопровождать. Трудно модифицировать.
Сложные задачи Большие программы
Решение проблемы: Коллективная разработка
Один человек не в состоянии справиться
с задачей
ВыходВыход
Версия классиков (Grady Booch): Простые программные системы –
“разрабатываются и сопровождаются одним человеком. В случае необходимости внесения изменений проще создать систему заново”.
Сложные программные системы – “имеют большое время жизни, и большое количество пользователей оказывается в зависимости от их нормального функционирования”.
ВыходВыход
5
Классики выделяют следующие причины возникновения сложности (Grady Booch): сложность реальной предметной области, из которой исходит заказ на разработку; трудность управления процессом разработки; необходимость обеспечить достаточную гибкость программы; неудовлетворительные способы описания поведения больших систем (много состояний, невозможно отследить).
ВыходВыход
6
Как можно бороться со сложностью задач?
Ответ: применение новой специальной технологии –
объектно-ориентированной технологии.
3
ВыходВыход
7
Объектно-ориентированная технология основывается на так
называемой объектной модели.
Основными ее принципами являются: абстрагирование,
инкапсуляция, наследование, полиморфизм.
ВыходВыход
8
Начало: язык Simula (далее Smalltalk, Object Pascal и C++).
Общая тенденция в развитии языков программирования: смещение акцентов от
программирования отдельных деталей к программированию более крупных компонент;
развитие и совершенствование языков программирования высокого уровня.
Эволюция объектной модели
ВыходВыход
9
Главные строительные блоки – алгоритмы. Предметная область рассматривается как
совокупность алгоритмов, запускающихся в определенной последовательности.
ДЕКОМПОЗИЦИЯ
Алгоритмическая Объектно-ориентированная
ВыходВыход
10
Основные строительные блоки –
классы и объекты.
Система рассматривается как совокупность объектов, являющихся
экземплярами некоторых классов, выявленных в предметной области.
ДЕКОМПОЗИЦИЯ
Алгоритмическая Объектно-ориентированная
ВыходВыход
11
Модульный и структурный подходы
ВыходВыход
12
Объектно-ориентированный подход
ВыходВыход
ТерминологияПутаница с терминологией
в Российской и Западной литературе. ООП, OOP, OOD, OOA.
РФ и РБ: ООП – объектно-ориентированное программирование.
Западные теоретики:OOA – object-oriented analysis ;OOD – object-oriented design;OOP – object-oriented programming.
ВыходВыход
14
OOA – object-oriented analysisОО анализ (или OOA, object-oriented
analysis) направлен на создание моделей реальной действительности на
основе ОО мировоззрения.
ОО анализ – это методология, при которой требования к системе воспринимаются с точки зрения
классов и объектов, выявленных в предметной области.
ВыходВыход
15
OOD – object-oriented design Проектирование основное внимание
уделяет правильному и эффективному
структурированию сложных систем.
ОО проектирование – это методология
проектирования, соединяющая в себе
процесс объектной декомпозиции и
приемы представления моделей
проектируемой системы.
ВыходВыход
16
OOP – object-oriented programmingОО программирование – это
методология программирования, основанная на представлении
программы в виде совокупности объектов, каждый из которых является
экземпляром определенного класса, а классы образуют иерархию
наследования.
ВыходВыход
17
Взаимодействие OOA, AAD и OOP На результатах ООА формируются
модели, на которых основывается OOD;
OOD в свою очередь создает фундамент для окончательной
реализации системы. Реализация проводится с
использованием методологии OOP.
ВыходВыход
18
Абстрагирование является одним из основных методов, используемых для решения сложных задач.
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя (Grady Booch).
Выбор правильного набора абстракций для заданной предметной области представляет собой главную задачу ОО проектирования.
ВыходВыход
19
Абстрагирование
Абстракция фокусируется на существенных с точки зрения наблюдателя характеристиках объекта.
ВыходВыход
20
Инкапсуляция – это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации (Гради Буч).
под инкапсуляцией в литературе понимается:
Скрытие деталей реализации. Объединение данных и подпрограмм их
обработки в рамках одной синтаксической структуры языка программирования высокого уровня.
ВыходВыход
21
Инкапсуляция
Инкапсуляция скрывает детали реализации объекта
ВыходВыход
22
Иерархия (наследование) Абстракция - вещь полезная, но всегда,
кроме самых простых ситуаций, число абстракций в системе намного превышает наши умственные возможности.
Инкапсуляция позволяет в какой-то степени устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций.
Модульность также упрощает задачу, объединяя логически связанные абстракции в группы.
Но этого оказывается недостаточно!
ВыходВыход
23
Иерархия (наследование)Значительное упрощение в
понимании сложных задач достигается за счет
образования из абстракций иерархической структуры.
Иерархия – это упорядочение абстракций,
расположение их по уровням.ВыходВыход
24
Иерархия
Абстракции образуют иерархию ВыходВыход
25
Полиморфизм Полиморфный
(много смыслов, много значений) Общая идея: одинаковое
обозначение для схожих операций. Пример: операция ++ в языках
программирования высокого уровня – полиморфная операция.
ВыходВыход
26
Достоинства и недостатки ОО подходаДостоинства: проектирование; модификация; повторное использование; надежность; отладка.
В итоге: время и деньги.Недостатки: требует дополнительных навыков от
программиста, плохо сказывается на быстродействии
приложений.
ВыходВыход
27
Выводы Есть задачи, где возможностей
структурного и модульного программирования недостаточно.
Выход - объектно-ориентированный подход (технология).
В основе подхода – объектно-ориентированная декомпозиция.
3 части – OOA, OOD, OOP. Основные принципы: абстракция,
инкапсуляция, иерархия (наследование), полиморфизм.
ВыходВыход
Литература к лекции
Гради Буч. Объектно-ориентированный анализ и
проектирование.
Из книги заимствованы различные идеи, элементы текста и
часть иллюстраций к слайдам.
ВыходВыход