SlideShare une entreprise Scribd logo
1  sur  37
1
1. Составные части объектного подхода
Объектно-ориентированное программирование
() Владислав Лавров, vlavrov.com
2
Парадигма (стиль) программирования
– это совокупность идей и понятий, определяющих стиль
написания компьютерных программ
(подход к программированию).
Это способ построения программ, основанный на
определенных принципах программирования, и выбор
подходящего языка, который делает понятными
программы, написанные в этом стиле.
() Владислав Лавров, vlavrov.com
3
Основные парадигмы программирования:
1) процедурно-ориентированный (алгоритмы);
2) объектно-ориентированный (классы и объекты);
3) функциональный (функции);
4) логико-ориентированный (цели, часто выраженные в
терминах исчисления предикатов);
5) ориентированный на ограничения (инвариантные
соотношения)
() Владислав Лавров, vlavrov.com
4
Процедурно-ориентированный стиль
(императивный стиль, т.е. директивный, авторитарный)
• Программирование состоит из последовательности операторов
(инструкций), задающих процедуру (алгоритм) решения задачи.
В основе – принцип последовательного изменения вычислителя в
пошаговом режиме.
• Назначение: решение задач, для которых последовательное
исполнение каких-либо команд является естественным.
Например, управление современными аппаратными средствами
вычислительной техники
• Языки: Fortran (1954), Algol (1960), Basic (1963), Pascal (1970),
C (1972), Ada (1979).
Подробнее http://bourabai.ru/alg/system2.htm#2216
() Владислав Лавров, vlavrov.com
5
Объектно-ориентированный стиль
• Подход использует объектную декомпозицию, при которой
статическая структура системы описывается в терминах объектов и
связей между ними, а поведение системы описывается в терминах
обмена сообщениями между объектами.
• Назначение: любая предметная область
• Языки: Simula (1962), C++ (1983), Object Pascal (1984), Java (1995),
С # (2000).
Подробнее http://bourabai.ru/alg/system2.htm#222
() Владислав Лавров, vlavrov.com
6
Функциональный стиль
• Основан на способе составления программ, в которых
единственным действием является вызов функции. Функции
обмениваются между собой данными непосредственно, без
использования промежуточных переменных и присвоений.
• Назначение: обработка естественного языка, экспертные
консультирующие системы, проблемы зрительного восприятия.
• Языки: LISP (1958), РЕФАЛ (1968), Haskell (1990, 1998).
Подробнее http://bourabai.ru/alg/system2.htm#223
() Владислав Лавров, vlavrov.com
7
Логико-ориентированный стиль
• Программ содержит описание проблемы в терминах фактов и
логических формул (правил), а решение система выполняет с
помощью механизмов логического вывода.
• Назначение: экспертные системы, искусственный интеллект.
• Языки: Prolog (1971), LOGLISP (1982), T-Prolog (1983),
Mercury (1993)
Подробнее http://bourabai.ru/alg/system2.htm#224
() Владислав Лавров, vlavrov.com
8
Стиль, ориентированный на ограничения
• Подход, при котором в программах определяются тип данных
решения, предметная область решения и ограничения на значения
искомого решения. Программирование в терминах постановок
задач.
• Назначение: задачи исследования операций, искусственный
интеллект.
• Языки: УТОПИСТ (Универсальные Текстовые ОПИСания Терминов,
1980), OPL (1998).
Подробнее http://bourabai.ru/alg/system2.htm#225
() Владислав Лавров, vlavrov.com
9
• переход от расчетов по формулам к сложным задачам
моделирования систем
• увеличение объемов обрабатываемых данных
• повышение сложности программ, резкое увеличение объемов кода
(сотни тысяч и миллионы строк !)
Современные направления развития программ
() Владислав Лавров, vlavrov.com
Сложность современных
программ превышает
возможности одного человека !
10
Что делать?
() Владислав Лавров, vlavrov.com
• коллективная разработка;
• каждый делает свою часть независимо от других;
• части программы легко «собрать» вместе.
Как это сделать?
11
Борьба со сложностью
() Владислав Лавров, vlavrov.com
подзадача 1 подзадача 3
подзадача 2.1 подзадача 2.2 подзадача 2.3
задача
подзадача 2
Декомпозиция – это разбиение системы на подсистемы, каждая из
которых может изучаться и выполняться отдельно
> 100 000 строк???
«Техника борьбы со сложностью известна с античных
времен: “Divide et impera” (разделяй и властвуй)»
Э. Дейкстра
12
Описывает структуру объектов, составляющих систему,
их атрибуты, операции, взаимосвязи с другими
объектами.
В объектной модели должны быть отражены те понятия
и объекты реального мира, которые важны для
разрабатываемой системы.
Объектная модель
() Владислав Лавров, vlavrov.com
13
Принципы объектной модели:
• абстрагирование,
• инкапсуляция,
• модульность,
• иерархичность,
• типизация,
• параллелизм
• сохраняемость
главные
Дополнительные
(полезные)
() Владислав Лавров, vlavrov.com
14
1.1. Абстрагирование
Абстракция выделяет существенные характеристики некоторого
объекта, отличающие его от всех других видов объектов и, таким
образом, четко определяет его концептуальные границы с точки
зрения наблюдателя.
Абстрагирование концентрирует внимание на внешних особенностях
объекта и позволяет отделить самые существенные особенности
поведения от несущественных.
С точки зрения программирования, абстракция – это правильное
разделение программы на объекты.
() Владислав Лавров, vlavrov.com
15
Абстракция. Пример.
Структура компании
() Владислав Лавров, vlavrov.com
16
Абстракция. Пример.
Пользовательский интерфейс программных продуктов
() Владислав Лавров, vlavrov.com
17
1.2. Инкапсуляция
Инкапсуляция (лат. in capsula) – размещение в оболочке, изоляция,
закрытие чего-либо инородного с целью исключения влияния на
окружающее.
В программировании инкапсуляция – это процесс отделения друг от
друга элементов объекта, определяющих его устройство и
поведение; инкапсуляция служит для того, чтобы изолировать
контрактные обязательства абстракции от их реализации.
() Владислав Лавров, vlavrov.com
18
Полет на самолете с точки зрения пассажира
Инкапсуляция. Пример.
() Владислав Лавров, vlavrov.com
19
Авиаперелет (подготовка, управление, диспетчеризация и пр.)
Инкапсуляция. Пример.
() Владислав Лавров, vlavrov.com
20
1.3. Модульность
Модульность – это разделение программы на фрагменты, которые
компилируются по отдельности, но могут устанавливать связи с
другими модулями. Связи между модулями – это их представления
друг о друге.
В программировании модули выполняют роль физических
контейнеров, в которые помещаются определения классов и
объектов при логическом проектировании системы.
() Владислав Лавров, vlavrov.com
21
Структура программного модуля «Галактика. Транспорт»
Разделение на модули. Пример.
() Владислав Лавров, vlavrov.com
22
1.4. Иерархичность
Иерархия – это упорядочение абстракций, расположение
их по уровням.
В ООП основными видами иерархических структур
применительно к сложным системам являются:
• структура классов (иерархия "is-a", быть)
• структура объектов (иерархия "part of", часть).
() Владислав Лавров, vlavrov.com
23
Наследование по типу «is-a»
Иерархичность. Пример.
() Владислав Лавров, vlavrov.com
24
Наследование по типу «part of»
Иерархичность. Пример.
() Владислав Лавров, vlavrov.com
25
Наследование по типу «part of» (продолжение)
Иерархичность. Пример.
() Владислав Лавров, vlavrov.com
26
1.5. Наследование
Наиболее оптимальная стратегия создания объекта в реальной
жизни: берем существующее хорошее решение, немного его
дорабатываем, подгоняем под свои нужды и используем.
В программировании наследование – это специальное отношение
между двумя классами.
Есть возможность создавать один класс на основе другого. Новый
класс становится потомком (наследником) уже существующего, при
этом содержит 80%-90% нужных нам данных и методов.
() Владислав Лавров, vlavrov.com
27
1.6. Типизация и полиформизм
Тип – точная характеристика свойств, включая структуру
и поведение, относящуюся к некоторой совокупности
объектов.
Типизация – это способ защититься от использования
объектов одного класса вместо другого, или, по крайней
мере, управлять таким использованием.
() Владислав Лавров, vlavrov.com
28
Типизация. Пример.
=
Расстояние
Время
Скорость
Вес
() Владислав Лавров, vlavrov.com
29
Типизация. Пример.
Температура Х Сила = ?
Расстояние Х Сила = ? Работа
() Владислав Лавров, vlavrov.com
30
Полиморфизм
Понятие типизации связано с полиморфизмом: одно и то же имя
может означать объекты разных типов, но, имея общего предка, все
они имеют и общее подмножество операций, которые можно над
ними выполнять.
Полиморфизм описывает ситуацию, когда за одним интерфейсом
скрываются разные реализации. Он позволяет единообразно
обращаться к объектам различных классов (обычно имеющих
общего предка)
() Владислав Лавров, vlavrov.com
31
Полиформизм. Пример.
Водитель-доставки
() Владислав Лавров, vlavrov.com
32
Полиформизм. Пример.
Расчет объема геометрической фигуры
() Владислав Лавров, vlavrov.com
33
1.7. Параллелизм
Параллелизм позволяет различным объектам действовать
одновременно. Параллелизм – это свойство, отличающее активные
объекты от пассивных.
В параллельных системах недостаточно определить поведение
объекта, надо еще принять меры, гарантирующие, что он не будет
разрушен несколькими независимыми процессами.
() Владислав Лавров, vlavrov.com
34
Параллелизм. Пример.
Параллельные системы базы данных
() Владислав Лавров, vlavrov.com
35
1.8. Сохраняемость
– это способность объекта существовать во времени, переживая
породивший его процесс, и (или) в пространстве, перемещаясь из
своего первоначального адресного пространства.
Например:
• Промежуточные результаты вычисления выражений.
• Локальные переменные в вызове процедур.
• Собственные переменные, глобальные переменные и динамически
создаваемые данные.
• Данные, сохраняющиеся между сеансами выполнения программы.
• Данные, сохраняемые при переходе на новую версию программы.
() Владислав Лавров, vlavrov.com
36
Сохраняемость. Пример.
Сериализация в C#
() Владислав Лавров, vlavrov.com
37
Объектно-ориентированное программирование
(object-oriented programming, OOP)
– это методология программирования, основанная на представлении
программы в виде совокупности объектов, каждый из которых является
экземпляром определенного класса, а классы образуют иерархию
наследования.
В данном определении можно выделить три части:
1) OOP использует в качестве базовых элементов объекты,
а не алгоритмы;
2) каждый объект является экземпляром какого-либо определенного
класса;
3) классы организованы иерархически.
() Владислав Лавров, vlavrov.com

Contenu connexe

Tendances

острая кишечная непроходимость
острая кишечная непроходимостьострая кишечная непроходимость
острая кишечная непроходимость
Ерасыл Арапов
 
Клінічна фармакологія НПЗП
Клінічна фармакологія НПЗПКлінічна фармакологія НПЗП
Клінічна фармакологія НПЗП
Elyzaveta Tkach
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
Rafael Barbolo
 
токсичний гепатит
токсичний гепатиттоксичний гепатит
токсичний гепатит
Voyevidka_OS
 

Tendances (20)

острая кишечная непроходимость
острая кишечная непроходимостьострая кишечная непроходимость
острая кишечная непроходимость
 
Клінічна фармакологія НПЗП
Клінічна фармакологія НПЗПКлінічна фармакологія НПЗП
Клінічна фармакологія НПЗП
 
дихальна система.pdf
дихальна система.pdfдихальна система.pdf
дихальна система.pdf
 
гдн
гднгдн
гдн
 
Ohorona
OhoronaOhorona
Ohorona
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
Характеристи звуку
Характеристи звукуХарактеристи звуку
Характеристи звуку
 
Моделі даних в БД. ER-діаграми
Моделі даних в БД. ER-діаграмиМоделі даних в БД. ER-діаграми
Моделі даних в БД. ER-діаграми
 
Классификация зубных имплантатов
Классификация зубных имплантатовКлассификация зубных имплантатов
Классификация зубных имплантатов
 
Гемостаз
ГемостазГемостаз
Гемостаз
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
 
патофізіологія серця
патофізіологія серцяпатофізіологія серця
патофізіологія серця
 
Complex
ComplexComplex
Complex
 
токсичний гепатит
токсичний гепатиттоксичний гепатит
токсичний гепатит
 
Урок 14. Засоби автоматизації створення текстового документа
Урок 14. Засоби автоматизації створення текстового  документа Урок 14. Засоби автоматизації створення текстового  документа
Урок 14. Засоби автоматизації створення текстового документа
 
Аритмії серця
Аритмії серцяАритмії серця
Аритмії серця
 
Тема 14 Пошукова оптимізація. SEO оптимізація
Тема 14 Пошукова оптимізація. SEO оптимізаціяТема 14 Пошукова оптимізація. SEO оптимізація
Тема 14 Пошукова оптимізація. SEO оптимізація
 
Депресія
ДепресіяДепресія
Депресія
 

Similaire à Составные части объектного подхода

Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программирования
Vasiliy Sabadazh
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
Technopark
 
введение в ооп
введение в оопвведение в ооп
введение в ооп
drova10
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
Technopark
 
Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5
Technopark
 

Similaire à Составные части объектного подхода (20)

МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
МиСПИСиТ (введение)
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программирования
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
ооп
оопооп
ооп
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
 
Ситуационная инженерия методов
Ситуационная инженерия методовСитуационная инженерия методов
Ситуационная инженерия методов
 
введение в ооп
введение в оопвведение в ооп
введение в ооп
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 
rubashkin
rubashkinrubashkin
rubashkin
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
 
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
А.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышлениеА.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышление
 
Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...
 
введение в объектно ориентированный анализ
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализ
 
Управление данными (модели данных)
Управление данными (модели данных)Управление данными (модели данных)
Управление данными (модели данных)
 
Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5
 

Plus de Ural Federal University named after First President of Russia B.N. Yeltsin

Plus de Ural Federal University named after First President of Russia B.N. Yeltsin (20)

2016 ВКР Черемискина Н.А.
2016 ВКР Черемискина Н.А.2016 ВКР Черемискина Н.А.
2016 ВКР Черемискина Н.А.
 
2016 ВКР Гребнева Н.В.
2016 ВКР Гребнева Н.В.2016 ВКР Гребнева Н.В.
2016 ВКР Гребнева Н.В.
 
2016 ВКР Имашева А.А.
2016 ВКР Имашева А.А.2016 ВКР Имашева А.А.
2016 ВКР Имашева А.А.
 
Введение в методы agile
Введение в методы agileВведение в методы agile
Введение в методы agile
 
ООП. Рекомендуемые информационные ресурсы
ООП. Рекомендуемые информационные ресурсыООП. Рекомендуемые информационные ресурсы
ООП. Рекомендуемые информационные ресурсы
 
Методоллогии Agile
Методоллогии AgileМетодоллогии Agile
Методоллогии Agile
 
3. Общая характеристика АСУ
3. Общая характеристика АСУ3. Общая характеристика АСУ
3. Общая характеристика АСУ
 
3. Информация и ее роль
3. Информация и ее роль3. Информация и ее роль
3. Информация и ее роль
 
Образовательная программа ИСТ на кафедре ТИМ УрФУ
Образовательная программа ИСТ на кафедре ТИМ УрФУОбразовательная программа ИСТ на кафедре ТИМ УрФУ
Образовательная программа ИСТ на кафедре ТИМ УрФУ
 
1. Кафедра ТИМ УрФУ
1. Кафедра ТИМ УрФУ1. Кафедра ТИМ УрФУ
1. Кафедра ТИМ УрФУ
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
Интерфейсы
ИнтерфейсыИнтерфейсы
Интерфейсы
 
магистратура 09.04.02 ист на кафедре тим урфу+
магистратура 09.04.02 ист на кафедре тим урфу+магистратура 09.04.02 ист на кафедре тим урфу+
магистратура 09.04.02 ист на кафедре тим урфу+
 
магистратура 22.04.02 металлургия на кафедре тим+
магистратура 22.04.02 металлургия на кафедре тим+магистратура 22.04.02 металлургия на кафедре тим+
магистратура 22.04.02 металлургия на кафедре тим+
 
1.5 тп (технологические подходы)+
1.5 тп (технологические подходы)+1.5 тп (технологические подходы)+
1.5 тп (технологические подходы)+
 
1.4 тп (общие принципы разработки)+
1.4 тп (общие принципы разработки)+1.4 тп (общие принципы разработки)+
1.4 тп (общие принципы разработки)+
 
1.3 тп (источники ошибок)+
1.3 тп (источники ошибок)+1.3 тп (источники ошибок)+
1.3 тп (источники ошибок)+
 
2014 Сабиров Е.Р. презентация КП по ПБД
2014 Сабиров Е.Р. презентация КП по ПБД2014 Сабиров Е.Р. презентация КП по ПБД
2014 Сабиров Е.Р. презентация КП по ПБД
 
2014 Мищенко К.В. презентация КП по ПБД
2014 Мищенко К.В. презентация КП по ПБД2014 Мищенко К.В. презентация КП по ПБД
2014 Мищенко К.В. презентация КП по ПБД
 
2014 Пильщиков С.Н. презентация КП по ПБД
2014 Пильщиков С.Н. презентация КП по ПБД2014 Пильщиков С.Н. презентация КП по ПБД
2014 Пильщиков С.Н. презентация КП по ПБД
 

Составные части объектного подхода

  • 1. 1 1. Составные части объектного подхода Объектно-ориентированное программирование () Владислав Лавров, vlavrov.com
  • 2. 2 Парадигма (стиль) программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Это способ построения программ, основанный на определенных принципах программирования, и выбор подходящего языка, который делает понятными программы, написанные в этом стиле. () Владислав Лавров, vlavrov.com
  • 3. 3 Основные парадигмы программирования: 1) процедурно-ориентированный (алгоритмы); 2) объектно-ориентированный (классы и объекты); 3) функциональный (функции); 4) логико-ориентированный (цели, часто выраженные в терминах исчисления предикатов); 5) ориентированный на ограничения (инвариантные соотношения) () Владислав Лавров, vlavrov.com
  • 4. 4 Процедурно-ориентированный стиль (императивный стиль, т.е. директивный, авторитарный) • Программирование состоит из последовательности операторов (инструкций), задающих процедуру (алгоритм) решения задачи. В основе – принцип последовательного изменения вычислителя в пошаговом режиме. • Назначение: решение задач, для которых последовательное исполнение каких-либо команд является естественным. Например, управление современными аппаратными средствами вычислительной техники • Языки: Fortran (1954), Algol (1960), Basic (1963), Pascal (1970), C (1972), Ada (1979). Подробнее http://bourabai.ru/alg/system2.htm#2216 () Владислав Лавров, vlavrov.com
  • 5. 5 Объектно-ориентированный стиль • Подход использует объектную декомпозицию, при которой статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами. • Назначение: любая предметная область • Языки: Simula (1962), C++ (1983), Object Pascal (1984), Java (1995), С # (2000). Подробнее http://bourabai.ru/alg/system2.htm#222 () Владислав Лавров, vlavrov.com
  • 6. 6 Функциональный стиль • Основан на способе составления программ, в которых единственным действием является вызов функции. Функции обмениваются между собой данными непосредственно, без использования промежуточных переменных и присвоений. • Назначение: обработка естественного языка, экспертные консультирующие системы, проблемы зрительного восприятия. • Языки: LISP (1958), РЕФАЛ (1968), Haskell (1990, 1998). Подробнее http://bourabai.ru/alg/system2.htm#223 () Владислав Лавров, vlavrov.com
  • 7. 7 Логико-ориентированный стиль • Программ содержит описание проблемы в терминах фактов и логических формул (правил), а решение система выполняет с помощью механизмов логического вывода. • Назначение: экспертные системы, искусственный интеллект. • Языки: Prolog (1971), LOGLISP (1982), T-Prolog (1983), Mercury (1993) Подробнее http://bourabai.ru/alg/system2.htm#224 () Владислав Лавров, vlavrov.com
  • 8. 8 Стиль, ориентированный на ограничения • Подход, при котором в программах определяются тип данных решения, предметная область решения и ограничения на значения искомого решения. Программирование в терминах постановок задач. • Назначение: задачи исследования операций, искусственный интеллект. • Языки: УТОПИСТ (Универсальные Текстовые ОПИСания Терминов, 1980), OPL (1998). Подробнее http://bourabai.ru/alg/system2.htm#225 () Владислав Лавров, vlavrov.com
  • 9. 9 • переход от расчетов по формулам к сложным задачам моделирования систем • увеличение объемов обрабатываемых данных • повышение сложности программ, резкое увеличение объемов кода (сотни тысяч и миллионы строк !) Современные направления развития программ () Владислав Лавров, vlavrov.com Сложность современных программ превышает возможности одного человека !
  • 10. 10 Что делать? () Владислав Лавров, vlavrov.com • коллективная разработка; • каждый делает свою часть независимо от других; • части программы легко «собрать» вместе. Как это сделать?
  • 11. 11 Борьба со сложностью () Владислав Лавров, vlavrov.com подзадача 1 подзадача 3 подзадача 2.1 подзадача 2.2 подзадача 2.3 задача подзадача 2 Декомпозиция – это разбиение системы на подсистемы, каждая из которых может изучаться и выполняться отдельно > 100 000 строк??? «Техника борьбы со сложностью известна с античных времен: “Divide et impera” (разделяй и властвуй)» Э. Дейкстра
  • 12. 12 Описывает структуру объектов, составляющих систему, их атрибуты, операции, взаимосвязи с другими объектами. В объектной модели должны быть отражены те понятия и объекты реального мира, которые важны для разрабатываемой системы. Объектная модель () Владислав Лавров, vlavrov.com
  • 13. 13 Принципы объектной модели: • абстрагирование, • инкапсуляция, • модульность, • иерархичность, • типизация, • параллелизм • сохраняемость главные Дополнительные (полезные) () Владислав Лавров, vlavrov.com
  • 14. 14 1.1. Абстрагирование Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя. Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности поведения от несущественных. С точки зрения программирования, абстракция – это правильное разделение программы на объекты. () Владислав Лавров, vlavrov.com
  • 16. 16 Абстракция. Пример. Пользовательский интерфейс программных продуктов () Владислав Лавров, vlavrov.com
  • 17. 17 1.2. Инкапсуляция Инкапсуляция (лат. in capsula) – размещение в оболочке, изоляция, закрытие чего-либо инородного с целью исключения влияния на окружающее. В программировании инкапсуляция – это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации. () Владислав Лавров, vlavrov.com
  • 18. 18 Полет на самолете с точки зрения пассажира Инкапсуляция. Пример. () Владислав Лавров, vlavrov.com
  • 19. 19 Авиаперелет (подготовка, управление, диспетчеризация и пр.) Инкапсуляция. Пример. () Владислав Лавров, vlavrov.com
  • 20. 20 1.3. Модульность Модульность – это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями. Связи между модулями – это их представления друг о друге. В программировании модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы. () Владислав Лавров, vlavrov.com
  • 21. 21 Структура программного модуля «Галактика. Транспорт» Разделение на модули. Пример. () Владислав Лавров, vlavrov.com
  • 22. 22 1.4. Иерархичность Иерархия – это упорядочение абстракций, расположение их по уровням. В ООП основными видами иерархических структур применительно к сложным системам являются: • структура классов (иерархия "is-a", быть) • структура объектов (иерархия "part of", часть). () Владислав Лавров, vlavrov.com
  • 23. 23 Наследование по типу «is-a» Иерархичность. Пример. () Владислав Лавров, vlavrov.com
  • 24. 24 Наследование по типу «part of» Иерархичность. Пример. () Владислав Лавров, vlavrov.com
  • 25. 25 Наследование по типу «part of» (продолжение) Иерархичность. Пример. () Владислав Лавров, vlavrov.com
  • 26. 26 1.5. Наследование Наиболее оптимальная стратегия создания объекта в реальной жизни: берем существующее хорошее решение, немного его дорабатываем, подгоняем под свои нужды и используем. В программировании наследование – это специальное отношение между двумя классами. Есть возможность создавать один класс на основе другого. Новый класс становится потомком (наследником) уже существующего, при этом содержит 80%-90% нужных нам данных и методов. () Владислав Лавров, vlavrov.com
  • 27. 27 1.6. Типизация и полиформизм Тип – точная характеристика свойств, включая структуру и поведение, относящуюся к некоторой совокупности объектов. Типизация – это способ защититься от использования объектов одного класса вместо другого, или, по крайней мере, управлять таким использованием. () Владислав Лавров, vlavrov.com
  • 29. 29 Типизация. Пример. Температура Х Сила = ? Расстояние Х Сила = ? Работа () Владислав Лавров, vlavrov.com
  • 30. 30 Полиморфизм Понятие типизации связано с полиморфизмом: одно и то же имя может означать объекты разных типов, но, имея общего предка, все они имеют и общее подмножество операций, которые можно над ними выполнять. Полиморфизм описывает ситуацию, когда за одним интерфейсом скрываются разные реализации. Он позволяет единообразно обращаться к объектам различных классов (обычно имеющих общего предка) () Владислав Лавров, vlavrov.com
  • 32. 32 Полиформизм. Пример. Расчет объема геометрической фигуры () Владислав Лавров, vlavrov.com
  • 33. 33 1.7. Параллелизм Параллелизм позволяет различным объектам действовать одновременно. Параллелизм – это свойство, отличающее активные объекты от пассивных. В параллельных системах недостаточно определить поведение объекта, надо еще принять меры, гарантирующие, что он не будет разрушен несколькими независимыми процессами. () Владислав Лавров, vlavrov.com
  • 34. 34 Параллелизм. Пример. Параллельные системы базы данных () Владислав Лавров, vlavrov.com
  • 35. 35 1.8. Сохраняемость – это способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. Например: • Промежуточные результаты вычисления выражений. • Локальные переменные в вызове процедур. • Собственные переменные, глобальные переменные и динамически создаваемые данные. • Данные, сохраняющиеся между сеансами выполнения программы. • Данные, сохраняемые при переходе на новую версию программы. () Владислав Лавров, vlavrov.com
  • 36. 36 Сохраняемость. Пример. Сериализация в C# () Владислав Лавров, vlavrov.com
  • 37. 37 Объектно-ориентированное программирование (object-oriented programming, OOP) – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. В данном определении можно выделить три части: 1) OOP использует в качестве базовых элементов объекты, а не алгоритмы; 2) каждый объект является экземпляром какого-либо определенного класса; 3) классы организованы иерархически. () Владислав Лавров, vlavrov.com