Top Banner
28

ооп

Mar 22, 2017

Download

LidiKashka
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ооп
Page 2: ооп

Тема:Тема:

ВыходВыход

Page 3: ооп

Технологические основы языков программирования высокого уровня

Проблемы: Трудно проектировать. Трудно реализовывать. Трудно отлаживать. Трудно сопровождать. Трудно модифицировать.

Сложные задачи Большие программы

Решение проблемы: Коллективная разработка

Один человек не в состоянии справиться

с задачей

ВыходВыход

Page 4: ооп

Версия классиков (Grady Booch): Простые программные системы –

“разрабатываются и сопровождаются одним человеком. В случае необходимости внесения изменений проще создать систему заново”.

Сложные программные системы – “имеют большое время жизни, и большое количество пользователей оказывается в зависимости от их нормального функционирования”.

ВыходВыход

Page 5: ооп

5

Классики выделяют следующие причины возникновения сложности (Grady Booch): сложность реальной предметной области, из которой исходит заказ на разработку; трудность управления процессом разработки; необходимость обеспечить достаточную гибкость программы; неудовлетворительные способы описания поведения больших систем (много состояний, невозможно отследить).

ВыходВыход

Page 6: ооп

6

Как можно бороться со сложностью задач?

Ответ: применение новой специальной технологии –

объектно-ориентированной технологии.

3

ВыходВыход

Page 7: ооп

7

Объектно-ориентированная технология основывается на так

называемой объектной модели.

Основными ее принципами являются: абстрагирование,

инкапсуляция, наследование, полиморфизм.

ВыходВыход

Page 8: ооп

8

Начало: язык Simula (далее Smalltalk, Object Pascal и C++).

Общая тенденция в развитии языков программирования: смещение акцентов от

программирования отдельных деталей к программированию более крупных компонент;

развитие и совершенствование языков программирования высокого уровня.

Эволюция объектной модели

ВыходВыход

Page 9: ооп

9

Главные строительные блоки – алгоритмы. Предметная область рассматривается как

совокупность алгоритмов, запускающихся в определенной последовательности.

ДЕКОМПОЗИЦИЯ

Алгоритмическая Объектно-ориентированная

ВыходВыход

Page 10: ооп

10

Основные строительные блоки –

классы и объекты.

Система рассматривается как совокупность объектов, являющихся

экземплярами некоторых классов, выявленных в предметной области.

ДЕКОМПОЗИЦИЯ

Алгоритмическая Объектно-ориентированная

ВыходВыход

Page 11: ооп

11

Модульный и структурный подходы

ВыходВыход

Page 12: ооп

12

Объектно-ориентированный подход

ВыходВыход

Page 13: ооп

ТерминологияПутаница с терминологией

в Российской и Западной литературе. ООП, OOP, OOD, OOA.

РФ и РБ: ООП – объектно-ориентированное программирование.

Западные теоретики:OOA – object-oriented analysis ;OOD – object-oriented design;OOP – object-oriented programming.

ВыходВыход

Page 14: ооп

14

OOA – object-oriented analysisОО анализ (или OOA, object-oriented

analysis) направлен на создание моделей реальной действительности на

основе ОО мировоззрения.

ОО анализ – это методология, при которой требования к системе воспринимаются с точки зрения

классов и объектов, выявленных в предметной области.

ВыходВыход

Page 15: ооп

15

OOD – object-oriented design Проектирование основное внимание

уделяет правильному и эффективному

структурированию сложных систем.

ОО проектирование – это методология

проектирования, соединяющая в себе

процесс объектной декомпозиции и

приемы представления моделей

проектируемой системы.

ВыходВыход

Page 16: ооп

16

OOP – object-oriented programmingОО программирование – это

методология программирования, основанная на представлении

программы в виде совокупности объектов, каждый из которых является

экземпляром определенного класса, а классы образуют иерархию

наследования.

ВыходВыход

Page 17: ооп

17

Взаимодействие OOA, AAD и OOP На результатах ООА формируются

модели, на которых основывается OOD;

OOD в свою очередь создает фундамент для окончательной

реализации системы. Реализация проводится с

использованием методологии OOP.

ВыходВыход

Page 18: ооп

18

Абстрагирование является одним из основных методов, используемых для решения сложных задач.

Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя (Grady Booch).

Выбор правильного набора абстракций для заданной предметной области представляет собой главную задачу ОО проектирования.

ВыходВыход

Page 19: ооп

19

Абстрагирование

Абстракция фокусируется на существенных с точки зрения наблюдателя характеристиках объекта.

ВыходВыход

Page 20: ооп

20

Инкапсуляция – это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации (Гради Буч).

под инкапсуляцией в литературе понимается:

Скрытие деталей реализации. Объединение данных и подпрограмм их

обработки в рамках одной синтаксической структуры языка программирования высокого уровня.

ВыходВыход

Page 21: ооп

21

Инкапсуляция

Инкапсуляция скрывает детали реализации объекта

ВыходВыход

Page 22: ооп

22

Иерархия (наследование) Абстракция - вещь полезная, но всегда,

кроме самых простых ситуаций, число абстракций в системе намного превышает наши умственные возможности.

Инкапсуляция позволяет в какой-то степени устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций.

Модульность также упрощает задачу, объединяя логически связанные абстракции в группы.

Но этого оказывается недостаточно!

ВыходВыход

Page 23: ооп

23

Иерархия (наследование)Значительное упрощение в

понимании сложных задач достигается за счет

образования из абстракций иерархической структуры.

Иерархия – это упорядочение абстракций,

расположение их по уровням.ВыходВыход

Page 24: ооп

24

Иерархия

Абстракции образуют иерархию ВыходВыход

Page 25: ооп

25

Полиморфизм Полиморфный

(много смыслов, много значений) Общая идея: одинаковое

обозначение для схожих операций. Пример: операция ++ в языках

программирования высокого уровня – полиморфная операция.

ВыходВыход

Page 26: ооп

26

Достоинства и недостатки ОО подходаДостоинства: проектирование; модификация; повторное использование; надежность; отладка.

В итоге: время и деньги.Недостатки: требует дополнительных навыков от

программиста, плохо сказывается на быстродействии

приложений.

ВыходВыход

Page 27: ооп

27

Выводы Есть задачи, где возможностей

структурного и модульного программирования недостаточно.

Выход - объектно-ориентированный подход (технология).

В основе подхода – объектно-ориентированная декомпозиция.

3 части – OOA, OOD, OOP. Основные принципы: абстракция,

инкапсуляция, иерархия (наследование), полиморфизм.

ВыходВыход

Page 28: ооп

Литература к лекции

Гради Буч. Объектно-ориентированный анализ и

проектирование.

Из книги заимствованы различные идеи, элементы текста и

часть иллюстраций к слайдам.

ВыходВыход