SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Есть ли жизнь без ООП?
Evolution
of
programming
Evolution
of
programming
Turing machine
Long time ago in a galaxy far far away…
Binary code
Operation code Op1 Op2
10101100 01100010 00101011
11001001 01011100 00101011
00001001 00101110 11001101
01010111 01111100 11100110
10111010 01011101
10101011 11011110 01100101
00110110 11100111 11100011
Binary code
Use chars, Luke!
Assembler
section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;our dear string
len equ $ - msg ;length of our dear string
Place for your ads here 
I
don’t
care
about
all
these
hardware
stuff!
High-level languages
program hello
print *, "Hello World!"
end program hello
Code reuse
Procedure programming
procedure print_hello()
Begin
writeln(‘Hello, World!’);
End;
Code and data
as one single
thing
Object-oriented programming
Class
Properties : data
Methods : code
Representation
of
smth
real
Class example
public class HelloClass {
String hello = "Hello, World!";
public void printHello() {
System.out.println(hello);
}
}
Object is a
class instance
Dangerous abstraction
Abstraction
Weird abstraction
About me
{
“First name”: “Taras”,
“Last name”: “Slipets”,
“Occupation”: [
“4+ years in enterprise software engineering”,
“3+ years in teaching”
],
“LinkedIn Profile”: “http://www.linkedin.com/pub/taras-slipets/48/466/516”,
“Interests”: [
“Music”,
“Skiing”
]
}
Методы абстракции
• Параметризация
• Спецификация
Абстракция через параметризацию
f(𝑥) = sin(𝑥)
f
𝜋
6
= sin
𝜋
6
=
1
2
Абстракция через спецификацию
Виды абстракции
• Процедурная
• Абстракция данных
• Абстракция итерации
Модель
2 атомарных понятия:
• Объект
• Отношение
Что важнее?
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
What???
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением (реальным
или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Понятие объекта
Объект является конкретным распознаваемым
предметом, сущностью или явлением
(реальным или абстрактным), которое имеет четко
определенное функциональное назначение в
данной проблемной области.
Объекты обладают целостностью, которую не
следует нарушать. Объект может только менять
состояние, поведение, управляться или
становиться в определенное отношение к другим
объектам.
Exactly!
Характеристики объекта
• Состояние
• Поведение
• Идентичность
(индивидуальность)
Состояние
Перечень всех возможных свойств объекта, а также их
текущие значения (обычно динамические).
Поведение
Характеризует то, как объект воздействует или
подвергается воздействию других объектов с точки
зрения изменения состояния этих объектов и передачи
сообщений.
Поведение
Поведение объекта полностью определяется его действиями
Идентичность
Операция
Влияние одного объекта на другой
Метод
Операции, выполняемые над данным объектом или
выполняемые данным объектом, называются методами
(методической частью объекта) и входят составной
частью в определение объекта.
Основные виды операций
• Модификатор (set-метод)
• Селектор (get-метод)
• Итератор
• Конструктор
• Деструктор
Понятие класса
Объект, свойства которого не имеют конкретных значений,
фактически является классом, т.е. класс – это множество
объектов, связанных общностью структуры и поведения.
Unified Modeling Language (UML)
Описание класса
Лекция
тема
интересность
продолжительность
прослушать()
забить_и_пойти_на_пиво()
Описание класса
Лекция
тема
интересность
продолжительность
прослушать()
забить_и_пойти_на_пиво()
Имя класса
Описание класса
Лекция
тема
интересность
продолжительность
прослушать()
забить_и_пойти_на_пиво()
Имя класса
Поля
Описание класса
Лекция
тема
интересность
продолжительность
прослушать()
забить_и_пойти_на_пиво()
Имя класса
Поля
Методы
Описание класса
Лекция
тема
интересность
продолжительность
прослушать()
забить_и_пойти_на_пиво()
Имя класса
Поля
Методы
Описание объекта
Математический анализ: Лекция
тема = Понятие многомерного
интеграла. Поверхностный
интеграл
интересность = АГОНЬ
продолжительность= 90 хвилин
Имя объекта
Поля
Основные принципы ООП
58
Инкапсуляция
Инкапсуляция
Инкапсуляция
Наследование
Наследование
Полиморфизм
Полиморфизм
Есть ли жизнь без ООП

Weitere ähnliche Inhalte

Mehr von Taras Slipets

Mehr von Taras Slipets (8)

Seven Cloud Sins of DevOps
Seven Cloud Sins of DevOpsSeven Cloud Sins of DevOps
Seven Cloud Sins of DevOps
 
Evolution of AWS infrastructure for ML: from Zero to Hero
Evolution of AWS infrastructure for ML: from Zero to HeroEvolution of AWS infrastructure for ML: from Zero to Hero
Evolution of AWS infrastructure for ML: from Zero to Hero
 
DevOps applied: Survival guide
DevOps applied: Survival guideDevOps applied: Survival guide
DevOps applied: Survival guide
 
Full stack, Full run, Full test
Full stack, Full run, Full testFull stack, Full run, Full test
Full stack, Full run, Full test
 
Java Developers
Java DevelopersJava Developers
Java Developers
 
Testing in Legacy
Testing in LegacyTesting in Legacy
Testing in Legacy
 
Testing in Legacy: From Rags to Riches
Testing in Legacy: From Rags to RichesTesting in Legacy: From Rags to Riches
Testing in Legacy: From Rags to Riches
 
What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?
 

Есть ли жизнь без ООП

Hinweis der Redaktion

  1. Абстракция памяти как двухмерной модели
  2. Абстракция переменных; абстракция регистров и сегментов памяти; прерывания
  3. Абстракция части кода как самостоятельного элемента
  4. Абстракция – это упрощенное описание системы, при котором одни свойства и детали выделяются, а другие опускаются. Хорошей является такая абстракция, при которой подчеркиваются существенные для рассмотрения и использования детали и опускаются те, которые на данный момент несущественны или отвлекают внимание. Разумеется, различие между существенными и несущественными характеристиками зависит от решаемой проблемы, т.е. от контекста использования абстракции.
  5. «Абстракция через параметризацию позволяет, используя параметры, представить фактически неограниченный набор различных вычислений одной программой, которая есть абстракция всех этих наборов.» В абстракции через параметризацию мы абстрагируемся от конкретных используемых данных. Эта абстракция определяется в терминах формальных параметров. Фактически данные связываются с этими параметрами в момент использования такой абстракции. Значения конкретных используемых данных являются несущественными, важно лишь их количество и типы. Таким образом, всякий раз вызывая подпрограмму с параметрами, мы фактически пользуемся абстракцией через параметризацию.
  6. В абстракции через спецификацию мы фокусируем внимание на особенностях, от которых зависит пользователь, и абстрагируемся от подробностей реализации этих особенностей. Существенным является «поведение» - «то, что делается», а несущественным– то, «как» это делается. Например, в процедуре sort существенным является факт сортировки массива, а не сам алгоритм сортировки. Это достигается путем задания для каждой процедуры спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Спецификация описывает соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы.
  7. Наиболее известный в программировании тип абстракции - процедурная абстракция. Всякий, кто применял для выполнения функции подпрограмму, которая может быть использована в других программах, реализовывал тем самым процедурную абстракцию. Процедуры объединяют в себе методы абстракции через параметризацию и спецификацию, позволяя абстрагировать отдельную операцию или событие. 2 свойства: Локальность Модифицируемость Абстракция данных. Какие новые типы данных необходимы, зависит от области применения программы? Синонимом понятия «абстракция данных» является понятие «класс». Абстракция данных- наиболее важный метод в проектировании программ. … Выбор правильных структур данных играет решающую роль для создания эффективной программы. Итератор ответственен за получение элемента, а модуль, содержащий цикл, определяет то действие, которое будет над ним выполняться. Итератор может выполняться в различных модулях, которые выполняют разные действия над элементами, и он может быть реализован различными способами, не оказывая влияния на эти модули. Таким образом, итератор фактически является абстракцией доступа к элементам набора (коллекции).
  8. Преобладающая в настоящее время точка зрения заключается в том, что объекты обладают внутренней структурой и связаны с другими объектами посредством различных отношений. Это хорошо согласуется с нашими непосредственными наблюдениями. Расчленяя эти объекты на их составные части, мы видим, что казавшиеся единичными объекты имеют сложную структуру, распадающуюся на ряд отношений, существующих между этими более простыми компонентами. Продолжая расчленение, мы, в конце концов, приходим к простейшим объектам, которые уже в данной теории не обладают внутренней структурой и существуют в виде атомарных объектов, связанных отношениями с другими объектами. Данная модель(концепция) мира получила в программировании название объектно-ориентированного программирования.
  9. К числу свойств объекта относятся присущие ему или приобретаемые характеристики, черты, качества или способности, делающие данный объект самим собой. Совокупность свойств объекта называется его структурой. Все свойства объекта характеризуются парой тип-значение. Тип свойства может быть либо встроенным(элементарным) типом, т.е. непосредственно поддерживаться исполняющей средой, либо быть классом. Таким образом, как правило, объект имеет постоянные характеристики, но может менять свое состояние. (!) Объекты не существуют изолированно, а подвергаются воздействию или сами воздействуют на другие объекты.
  10. Вы еще ниче не успели рассказать, а за вас все решиили
  11. Это такие свойства объекта, которые имеют уникальное значение, т.е. значение, которое отличает объект от всех других подобных объектов. Например, все люди отличаются друг от друга рисунком линий на ладони, отпечатками пальцев или сетчаткой глаза.
  12. Слово «операция» предполагает наличие пассивных объектов, т.е. объектов, которые могут изменять свое состояние только под воздействием других объектов, или, другими словами, объектов, над которыми производятся действия. Активный объект в общем случае наоборот– автономен, т.е. он может реализовать свое поведение без воздействия со стороны других объектов, другими словами, он меняется под воздействием внутренних причин. Одну и ту же ситуацию можно описать как в терминах пассивных объектов, так и в терминах активных объектов. Когда один объект вызывает(активизирует) операцию другого объекта, то об этом еще говорят, что один объект передает сообщение другому объекту.
  13. забить_и_пойти_на_пиво() – к классу на самом деле не относиться
  14. верхнее отделение, содержащее имя объекта и имя класса, разделенные двоеточием; если имя объекта отсутствует, то представлен анонимный объект; имя класса можно опускать в том случае, когда оно очевидно(например, если объект класса Customer имеет имя myCustomer); в нотации UML объект легко отличить от класса– имя объекта всегда подчеркнуто; нижнее отделение, содержащее имена свойств и их текущие значения.
  15. Неформально, инкапсуляция (encapsulation) - это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Чтобы пользоваться холодильником, утюгом или, скажем, кондиционером– совсем необязательно знать их внутреннее устройство и принципы работы. Прежде всего, нас интересует– что делает объект, а не то– как он это делает.
  16. Инкапсуляция реализует принцип сокрытия информации следующим образом: • отсутствует прямой доступ к свойствам объекта, они доступны только через методы • объект контролирует доступ к своим данным • «опубликованный» функциональный интерфейс объекта позволяет другим объектам использовать его поведение
  17. Интерфейсная часть описания класса по способу доступа к ней может быть разделена на четыре составные части: • Общедоступная или общая (public) – операции, доступные всем остальным классам • Защищенная (protected) – доступ к таким операциям разрешен только самому классу и его подклассам • Обособленная или закрытая (private) – операции, недоступные ни одному другому классу • Пакетная (package) – операции доступны только классам данного пакета.
  18. Наследование– такое отношение между классами, когда один класс повторяет структуру и поведение другого (простое наследование) или других(множественное наследование) классов. Класс, структура и поведение которого наследуются, называется суперклассом. Производный от суперкласса класс называется его подклассом. Это означает, что наследование устанавливает между классами иерархическое отношение. Как правило, подкласс не только наследует структуру и поведение своего суперкласса, но и достраивает или переопределяет их.
  19. Слово полиморфизм- греческого происхождения и означает "имеющий много форм". Полиморфизм- это свойство, которое позволяет одно и тоже имя(действие) использовать для решения нескольких технически разных задач. Например, «забить мяч» в футболе можно ногой, головой и некоторыми другими частями тела.
  20. Применительно к объектно-ориентированному программированию, целью полиморфизма, является использование одного имени для задания общих для класса действий. На практике это означает способность объектов выбирать внутреннюю процедуру(метод) исходя из типа данных, принятых в сообщении. Таким образом, полиморфизм позволяет обойтись без операторов выбора, поскольку объекты сами знают свой тип.
  21. Вы еще ниче не успели рассказать, а за вас все решиили