SlideShare a Scribd company logo
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

More Related Content

What's hot

Abstraction and Encapsulation
Abstraction and EncapsulationAbstraction and Encapsulation
Abstraction and Encapsulation
Haris Bin Zahid
 
Introduction to objective c
Introduction to objective cIntroduction to objective c
Introduction to objective cSunny Shaikh
 
The Object Model
The Object Model  The Object Model
The Object Model
yndaravind
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
NSCoder Mexico
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
Amit Soni (CTFL)
 
Disco API - OpenJDK distributions as a service
Disco API - OpenJDK distributions as a serviceDisco API - OpenJDK distributions as a service
Disco API - OpenJDK distributions as a service
Gerrit Grunwald
 
Design patterns
Design patternsDesign patterns
Design patterns
abhisheksagi
 
Oop java
Oop javaOop java
Oop java
Minal Maniar
 
Java reflection
Java reflectionJava reflection
Java reflection
NexThoughts Technologies
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
LivePerson
 
Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4
MOHIT TOMAR
 
Jetpack Compose beginner.pdf
Jetpack Compose beginner.pdfJetpack Compose beginner.pdf
Jetpack Compose beginner.pdf
AayushmaAgrawal
 
Software architecture in practice
Software architecture in practiceSoftware architecture in practice
Software architecture in practice
ErwannWernli
 
Java Course 11: Design Patterns
Java Course 11: Design PatternsJava Course 11: Design Patterns
Java Course 11: Design Patterns
Anton Keks
 
OOP and FP
OOP and FPOOP and FP
OOP and FP
Mario Fusco
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
Sergey Nemchinsky
 
Remote Method Innovation (RMI) In JAVA
Remote Method Innovation (RMI) In JAVARemote Method Innovation (RMI) In JAVA
Remote Method Innovation (RMI) In JAVA
Prankit Mishra
 
Dip(dependency inversion principle) presentation
Dip(dependency inversion principle) presentationDip(dependency inversion principle) presentation
Dip(dependency inversion principle) presentation
qamar mustafa
 

What's hot (20)

Abstraction and Encapsulation
Abstraction and EncapsulationAbstraction and Encapsulation
Abstraction and Encapsulation
 
Introduction to objective c
Introduction to objective cIntroduction to objective c
Introduction to objective c
 
The Object Model
The Object Model  The Object Model
The Object Model
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Disco API - OpenJDK distributions as a service
Disco API - OpenJDK distributions as a serviceDisco API - OpenJDK distributions as a service
Disco API - OpenJDK distributions as a service
 
Characteristics of oop
Characteristics of oopCharacteristics of oop
Characteristics of oop
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Oop java
Oop javaOop java
Oop java
 
Java reflection
Java reflectionJava reflection
Java reflection
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4
 
Jetpack Compose beginner.pdf
Jetpack Compose beginner.pdfJetpack Compose beginner.pdf
Jetpack Compose beginner.pdf
 
Software architecture in practice
Software architecture in practiceSoftware architecture in practice
Software architecture in practice
 
Java Course 11: Design Patterns
Java Course 11: Design PatternsJava Course 11: Design Patterns
Java Course 11: Design Patterns
 
Generics
GenericsGenerics
Generics
 
OOP and FP
OOP and FPOOP and FP
OOP and FP
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
Remote Method Innovation (RMI) In JAVA
Remote Method Innovation (RMI) In JAVARemote Method Innovation (RMI) In JAVA
Remote Method Innovation (RMI) In JAVA
 
Dip(dependency inversion principle) presentation
Dip(dependency inversion principle) presentationDip(dependency inversion principle) presentation
Dip(dependency inversion principle) presentation
 

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

МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
Unguryan Vitaliy
 
Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияVasiliy Sabadazh
 
ооп
оопооп
ооп
LidiKashka
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7Technopark
 
Ситуационная инженерия методов
Ситуационная инженерия методовСитуационная инженерия методов
Ситуационная инженерия методов
Anatoly Levenchuk
 
введение в ооп
введение в оопвведение в ооп
введение в ооп
drova10
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
Mister_Lee
 
rubashkin
rubashkinrubashkin
rubashkin
NLPseminar
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
Unguryan Vitaliy
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8Technopark
 
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...
ITMO University
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Alexey Neznanov
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
SQALab
 
А.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышлениеА.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышление
Anatoly Levenchuk
 
Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...
Aimurat Adilbekov
 
введение в объектно ориентированный анализ
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализ
Maksim Nikitin
 
Управление данными (модели данных)
Управление данными (модели данных)Управление данными (модели данных)
Управление данными (модели данных)
Ural Federal University named after First President of Russia B.N. Yeltsin
 
Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5Бизнес и системный анализ весна 2013 лекция 5
Бизнес и системный анализ весна 2013 лекция 5Technopark
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
Levon Avakyan
 

Similar to Составные части объектного подхода (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
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 

More from Ural Federal University named after First President of Russia B.N. Yeltsin

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

More from 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