53
Объектно-ориентированное программирование Бибилов Иван Владимирович ШРИ, Екатеринбург, осень-2013

Иван Бибилов: Основы ООП

  • Upload
    yandex

  • View
    4.884

  • Download
    10

Embed Size (px)

Citation preview

Page 1: Иван Бибилов: Основы ООП

Объектно-ориентированное программирование

Бибилов Иван ВладимировичШРИ, Екатеринбург, осень-2013

Page 2: Иван Бибилов: Основы ООП

Начнем издалека

Page 3: Иван Бибилов: Основы ООП

Зачем нужны и что делают программисты?

Page 4: Иван Бибилов: Основы ООП

Сильный ИИ еще не создан – компьютеры не понимают

естественный язык

Page 5: Иван Бибилов: Основы ООП

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

Page 6: Иван Бибилов: Основы ООП

6

Ада Лавлейс (1815-1852) – первый программист, графиня, дочь поэта Джорджа Байрона

Мы и «гуманитарии», и «технари»

Page 7: Иван Бибилов: Основы ООП

7

Если сильно поковырять программирование – найдешь

математику

Page 8: Иван Бибилов: Основы ООП

8

Теория вычислимости

Машина Тьюринга

Теория алгоритмов

Лямбда-исчисление

Математическая логика

Дискретная математика

Вычислительная сложность

Page 9: Иван Бибилов: Основы ООП

9

Языки программирования бывают разные

Page 10: Иван Бибилов: Основы ООП

10

ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность)

Page 11: Иван Бибилов: Основы ООП

11

Page 12: Иван Бибилов: Основы ООП

12

Разнообразие языков обусловлено желанием быстро писать эффективные, легко модифицируемые и понятные программы

Page 13: Иван Бибилов: Основы ООП

13

Управление сложностью

Человек перестает понимать принципы работы системы, которую создал

Page 14: Иван Бибилов: Основы ООП

14

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

Второй закон Вейнберга.

Проектирование

Page 15: Иван Бибилов: Основы ООП

15

ООП, проектирование, шаблоны, рефакторинг

Page 16: Иван Бибилов: Основы ООП

16

Данные

Page 17: Иван Бибилов: Основы ООП

17

Page 18: Иван Бибилов: Основы ООП

18

Все – последовательность байт

Page 19: Иван Бибилов: Основы ООП

19

Интерпретирует всегда человек

Page 20: Иван Бибилов: Основы ООП

20

65 или A?

Page 21: Иван Бибилов: Основы ООП

21

Представление строк

?

Page 22: Иван Бибилов: Основы ООП

22

BMP-файл

Page 23: Иван Бибилов: Основы ООП

23

СтруктурыСтруктура — конструкция большинства языков программирования, позволяющая содержать в себе набор переменных различных типов. В языках семейства Pascal структуры традиционно называют записями (англ. record).

Page 24: Иван Бибилов: Основы ООП

24

Процедурное програмирование – код (функции, процедуры) преобразует

данные

Page 25: Иван Бибилов: Основы ООП

25

Page 26: Иван Бибилов: Основы ООП

26

Закон Бенфорда

Page 27: Иван Бибилов: Основы ООП

27

Page 28: Иван Бибилов: Основы ООП

28

Page 29: Иван Бибилов: Основы ООП

x = x + 1

Page 30: Иван Бибилов: Основы ООП

30

ООП – объединение данных и кода по их обработке в одном объекте

У объекта есть свойства (атрибуты) и методы (сообщения, список понимаемых приказов, «API»)

Page 31: Иван Бибилов: Основы ООП

31

Есть специальные методы. Например, констуктор

Try to relax.This will feel a little weird.This. . .. . .is the Construct.lt's our loading program.We can load anything, from clothing. . .. . .to equipment. . .: : :weapons: : :. . .training simulations. . .. . .anything we need.Right now we're inside a computer program?ls it really so hard to believe?

Page 32: Иван Бибилов: Основы ООП

32

Объекты реального (и воображаемого) мира – в программу

Page 33: Иван Бибилов: Основы ООП

33

Функция НайтиТовар(Наименование)Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Наименование ИЗ

Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления");Выборка = Запрос.Выполнить().Выбрать();Пока Выборка.Следующий() Цикл

Если СокрЛП(ВРег(Выборка.Наименование))=ВРег(Наименование) ТогдаВозврат Выборка.Ссылка;

КонецЕсли;КонецЦикла;

КонецФункции

Page 34: Иван Бибилов: Основы ООП

34

У объекта богатый внутренний мирДоступны только публичные методы и свойства

Page 35: Иван Бибилов: Основы ООП

35

Класс – чертеж (описание) будущих объектов

Page 36: Иван Бибилов: Основы ООП

36

Page 37: Иван Бибилов: Основы ООП

37

Page 38: Иван Бибилов: Основы ООП

38

Page 39: Иван Бибилов: Основы ООП

39

Наследование — механизм языка, позволяющий создать новый класс на основе уже существующего (родительского, базового) класса.

Fiat 124 и ВАЗ 2101

Page 40: Иван Бибилов: Основы ООП

40

Инкапсуляция — механизм языка программирования, который ограничивает доступ к составляющим объект

компонентам (методам и переменным), делает их приватными, т.е. доступными только внутри объекта.

Page 41: Иван Бибилов: Основы ООП

41

Page 42: Иван Бибилов: Основы ООП

42

Page 43: Иван Бибилов: Основы ООП

43

Полиморфизм (от греч. πολὺ- — много, и μορφή — форма) — возможность класса–потомка менять реализацию класса–родителя сохраняя при этом его интерфейс.

Page 44: Иван Бибилов: Основы ООП

44

Page 45: Иван Бибилов: Основы ООП

45

Page 46: Иван Бибилов: Основы ООП

46

Шаблон «одиночка»

Page 47: Иван Бибилов: Основы ООП

47

Page 48: Иван Бибилов: Основы ООП

48

Антипаттерны. Магические кнопки

Page 49: Иван Бибилов: Основы ООП

49

«Паблик Морозов» Класс-потомок, созданный в соответствии с этим антипаттерном, выдает по запросу все данные класса-предка, независимо от степени их сокрытия.

Page 50: Иван Бибилов: Основы ООП

50

ООП – не всегда хорошо

?"Hello, world!"

class Program {static void Main(){

System.Console.WriteLine("Hello");}

}

Page 51: Иван Бибилов: Основы ООП

51

А хотелось iPhone...

Page 52: Иван Бибилов: Основы ООП

52

Хвалим, но не понимаем

Page 53: Иван Бибилов: Основы ООП

53

Спасибо!