An overview of object oriented programming , definitions of class and objects, Encapsulation, data abstraction, inheritance, polymorphism and an easy coding example in C++. This presentation includes visual aids to make the concepts easier to understand.
An overview of object oriented programming , definitions of class and objects, Encapsulation, data abstraction, inheritance, polymorphism and an easy coding example in C++. This presentation includes visual aids to make the concepts easier to understand.
It is a specialized case of ‘Abstraction’, such that it is a mechanism to hide irrelevant details of one object from another, while exposing only the relevant details that the other object might need. E.g. a Manager object may only be concerned with professional skills and availability timings of an employee, not his personal life details.
Chapter 2 The Object Model
2.1 The Evolution of the Object Model
2.2 Foundations of the Object Model
2.3 Elements of the Object Model
2.4 Applying the Object Model
Disco API - OpenJDK distributions as a serviceGerrit Grunwald
At foojay.io we've spent some time creating a little api that should help you to discover builds of OpenJDK from different distributions in a general way. In this session, I will give a short introduction to what the Disco API is and how it can help you find the JDK/JRE of your choice. At the moment Disco can help you getting builds from the following distributions: AdoptOpenJDK, Corretto, Dragonwell, GraalVM, Liberica, Liberica Native, Mandrel, Microsoft, OJDK Build, OpenLogic, Oracle, Oracle OpenJDK, RedHat, SAP Machine, Trava and Zulu. I will show examples on how to use the API and about plugins and tools that already use the API like browser extensions, ide plugins etc...
A reflection-oriented program component can monitor the execution of an enclosure of code and can modify itself according to a desired goal related to that enclosure.
Reflection is one of those things like multi-threading where everyone with experience of it says “Don’t use it unless you absolutely have to”.
In this Meetup Victor Perepelitsky - R&D Technical Leader at LivePerson leading the 'Real Time Event Processing Platform' team , will talk about Java 8', 'Stream API', 'Lambda', and 'Method reference'.
Victor will clarify what functional programming is and how can you use java 8 in order to create better software.
Victor will also cover some pain points that Java 8 did not solve regarding functionality and see how you can work around it.
Lecture 11 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Describes goods and bads of software architecture as well as common design patterns.
It is a specialized case of ‘Abstraction’, such that it is a mechanism to hide irrelevant details of one object from another, while exposing only the relevant details that the other object might need. E.g. a Manager object may only be concerned with professional skills and availability timings of an employee, not his personal life details.
Chapter 2 The Object Model
2.1 The Evolution of the Object Model
2.2 Foundations of the Object Model
2.3 Elements of the Object Model
2.4 Applying the Object Model
Disco API - OpenJDK distributions as a serviceGerrit Grunwald
At foojay.io we've spent some time creating a little api that should help you to discover builds of OpenJDK from different distributions in a general way. In this session, I will give a short introduction to what the Disco API is and how it can help you find the JDK/JRE of your choice. At the moment Disco can help you getting builds from the following distributions: AdoptOpenJDK, Corretto, Dragonwell, GraalVM, Liberica, Liberica Native, Mandrel, Microsoft, OJDK Build, OpenLogic, Oracle, Oracle OpenJDK, RedHat, SAP Machine, Trava and Zulu. I will show examples on how to use the API and about plugins and tools that already use the API like browser extensions, ide plugins etc...
A reflection-oriented program component can monitor the execution of an enclosure of code and can modify itself according to a desired goal related to that enclosure.
Reflection is one of those things like multi-threading where everyone with experience of it says “Don’t use it unless you absolutely have to”.
In this Meetup Victor Perepelitsky - R&D Technical Leader at LivePerson leading the 'Real Time Event Processing Platform' team , will talk about Java 8', 'Stream API', 'Lambda', and 'Method reference'.
Victor will clarify what functional programming is and how can you use java 8 in order to create better software.
Victor will also cover some pain points that Java 8 did not solve regarding functionality and see how you can work around it.
Lecture 11 from the IAG0040 Java course in TTÜ.
See the accompanying source code written during the lectures: https://github.com/angryziber/java-course
Describes goods and bads of software architecture as well as common design patterns.
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОД...ITMO University
Описано решение задачи преобразования исходного кода на объектно-ориентированном языке в формат RDF средствами семантического анализа. Рассмотрены основные принципы семантического анализа объектноориентированного кода и предложен архитектурный прототип программного продукта, осуществляющего преобразование кода в RDF.
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
Лекция на школе учителей 2018-11-05. Название слишком забористое, но в целом это более-менее системное и актуальное рассмотрение того, что происходит с языками программирования. Лекция прочитана перед изучением языка Питон (Python). Много ссылок
Понятия технологии разработки объектно-ориентированных информационных систем ...Aimurat Adilbekov
ПЛАН:
1. Причины неудачных проектов
2. Отсутствие моделей при разработке ПО
3. Лучшие практики разработки ПО
4. Что такое визуальное моделирование?
5. Основные понятия визуального моделирования
6. Классификация проектов по сложности
7. Основные понятия ООП
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Similar to Составные части объектного подхода (20)
Выпускная квалификационная работа бакалавра Черемискиной Н.А. Тема "Разработка компьютерной модели в пакете ANSYS для исследования работы пластинчатого теплообменника и проведения лабораторных работ" (УрФУ, 2016). Руководитель профессор, д.т.н. Лавров В.В. http://vlavrov.com
Выпускная квалификационная работа бакалавра Гребневой Н.В. Тема "Разработка компьютерной модели в пакете ANSYS для исследования работы водо-воздушных теплообменных аппаратов и проведения лабораторных работ" (УрФУ, 2016). Руководитель профессор, д.т.н. Лавров В.В. http://vlavrov.com
Выпускная квалификационная работа бакалавра Имашева А.А. Тема "Разработка программного обеспечения систем размещения и визуализации показаний датчиков мониторинга распределения концентрации газов на земной поверхности" (УрФУ, 2016). Руководитель профессор, д.т.н. Лавров В.В. http://vlavrov.com
Магистерская программа 09.04.02 «Информационные системы и технологии в металлургии». Профиль «Информационные системы и технологии в металлургии». Квалификация (степень) выпускника – «магистр». Базовая кафедра для подготовки – кафедра «Теплофизика и информатика в металлургии» Уральского федерального университета.
(с) Кафедра «Теплофизика и информатика в металлургии» УрФУ, 2016 г.
Магистерская программа 22.04.02 - «Теплофизические основы конструирования и эксплуатации промышленных печей». Профиль «Металлургия».
Базовая кафедра для подготовки – кафедра «Теплофизика и информатика в металлургии» Уральского федерального университета.
(с) Кафедра «Теплофизика и информатика в металлургии» УрФУ, 2015 г.
Курсовой проект по дисциплине "Проектирование баз данных" (УрФУ, 2014). Автор Мищенко К.В. Руководитель доцент, к.т.н. Лавров В.В. http://vlavrov.professorjournal.ru
Курсовой проект по дисциплине "Проектирование баз данных" (УрФУ, 2014). Автор Пильщиков С.Н. Руководитель доцент, к.т.н. Лавров В.В. http://vlavrov.professorjournal.ru
More from Ural Federal University named after First President of Russia B.N. Yeltsin (20)
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
14. 14
1.1. Абстрагирование
Абстракция выделяет существенные характеристики некоторого
объекта, отличающие его от всех других видов объектов и, таким
образом, четко определяет его концептуальные границы с точки
зрения наблюдателя.
Абстрагирование концентрирует внимание на внешних особенностях
объекта и позволяет отделить самые существенные особенности
поведения от несущественных.
С точки зрения программирования, абстракция – это правильное
разделение программы на объекты.
() Владислав Лавров, vlavrov.com
17. 17
1.2. Инкапсуляция
Инкапсуляция (лат. in capsula) – размещение в оболочке, изоляция,
закрытие чего-либо инородного с целью исключения влияния на
окружающее.
В программировании инкапсуляция – это процесс отделения друг от
друга элементов объекта, определяющих его устройство и
поведение; инкапсуляция служит для того, чтобы изолировать
контрактные обязательства абстракции от их реализации.
() Владислав Лавров, vlavrov.com
18. 18
Полет на самолете с точки зрения пассажира
Инкапсуляция. Пример.
() Владислав Лавров, vlavrov.com
20. 20
1.3. Модульность
Модульность – это разделение программы на фрагменты, которые
компилируются по отдельности, но могут устанавливать связи с
другими модулями. Связи между модулями – это их представления
друг о друге.
В программировании модули выполняют роль физических
контейнеров, в которые помещаются определения классов и
объектов при логическом проектировании системы.
() Владислав Лавров, vlavrov.com
22. 22
1.4. Иерархичность
Иерархия – это упорядочение абстракций, расположение
их по уровням.
В ООП основными видами иерархических структур
применительно к сложным системам являются:
• структура классов (иерархия "is-a", быть)
• структура объектов (иерархия "part of", часть).
() Владислав Лавров, vlavrov.com
25. 25
Наследование по типу «part of» (продолжение)
Иерархичность. Пример.
() Владислав Лавров, vlavrov.com
26. 26
1.5. Наследование
Наиболее оптимальная стратегия создания объекта в реальной
жизни: берем существующее хорошее решение, немного его
дорабатываем, подгоняем под свои нужды и используем.
В программировании наследование – это специальное отношение
между двумя классами.
Есть возможность создавать один класс на основе другого. Новый
класс становится потомком (наследником) уже существующего, при
этом содержит 80%-90% нужных нам данных и методов.
() Владислав Лавров, vlavrov.com
27. 27
1.6. Типизация и полиформизм
Тип – точная характеристика свойств, включая структуру
и поведение, относящуюся к некоторой совокупности
объектов.
Типизация – это способ защититься от использования
объектов одного класса вместо другого, или, по крайней
мере, управлять таким использованием.
() Владислав Лавров, vlavrov.com
30. 30
Полиморфизм
Понятие типизации связано с полиморфизмом: одно и то же имя
может означать объекты разных типов, но, имея общего предка, все
они имеют и общее подмножество операций, которые можно над
ними выполнять.
Полиморфизм описывает ситуацию, когда за одним интерфейсом
скрываются разные реализации. Он позволяет единообразно
обращаться к объектам различных классов (обычно имеющих
общего предка)
() Владислав Лавров, vlavrov.com
33. 33
1.7. Параллелизм
Параллелизм позволяет различным объектам действовать
одновременно. Параллелизм – это свойство, отличающее активные
объекты от пассивных.
В параллельных системах недостаточно определить поведение
объекта, надо еще принять меры, гарантирующие, что он не будет
разрушен несколькими независимыми процессами.
() Владислав Лавров, vlavrov.com
35. 35
1.8. Сохраняемость
– это способность объекта существовать во времени, переживая
породивший его процесс, и (или) в пространстве, перемещаясь из
своего первоначального адресного пространства.
Например:
• Промежуточные результаты вычисления выражений.
• Локальные переменные в вызове процедур.
• Собственные переменные, глобальные переменные и динамически
создаваемые данные.
• Данные, сохраняющиеся между сеансами выполнения программы.
• Данные, сохраняемые при переходе на новую версию программы.
() Владислав Лавров, vlavrov.com
37. 37
Объектно-ориентированное программирование
(object-oriented programming, OOP)
– это методология программирования, основанная на представлении
программы в виде совокупности объектов, каждый из которых является
экземпляром определенного класса, а классы образуют иерархию
наследования.
В данном определении можно выделить три части:
1) OOP использует в качестве базовых элементов объекты,
а не алгоритмы;
2) каждый объект является экземпляром какого-либо определенного
класса;
3) классы организованы иерархически.
() Владислав Лавров, vlavrov.com