Upload
yandex
View
4.884
Download
10
Embed Size (px)
Citation preview
Объектно-ориентированное программирование
Бибилов Иван ВладимировичШРИ, Екатеринбург, осень-2013
Начнем издалека
Зачем нужны и что делают программисты?
Сильный ИИ еще не создан – компьютеры не понимают
естественный язык
Программисты пишут программы на языках программирования
6
Ада Лавлейс (1815-1852) – первый программист, графиня, дочь поэта Джорджа Байрона
Мы и «гуманитарии», и «технари»
7
Если сильно поковырять программирование – найдешь
математику
8
Теория вычислимости
Машина Тьюринга
Теория алгоритмов
Лямбда-исчисление
Математическая логика
Дискретная математика
Вычислительная сложность
9
Языки программирования бывают разные
10
ДРАКОН (Дружелюбный русский алгоритмический язык, который обеспечивает наглядность)
11
12
Разнообразие языков обусловлено желанием быстро писать эффективные, легко модифицируемые и понятные программы
13
Управление сложностью
Человек перестает понимать принципы работы системы, которую создал
14
Если бы строители строили здания так же, как программисты пишут программы, первый залетевший дятел разрушил бы цивилизацию.
Второй закон Вейнберга.
Проектирование
15
ООП, проектирование, шаблоны, рефакторинг
16
Данные
17
18
Все – последовательность байт
19
Интерпретирует всегда человек
20
65 или A?
21
Представление строк
?
22
BMP-файл
23
СтруктурыСтруктура — конструкция большинства языков программирования, позволяющая содержать в себе набор переменных различных типов. В языках семейства Pascal структуры традиционно называют записями (англ. record).
24
Процедурное програмирование – код (функции, процедуры) преобразует
данные
25
26
Закон Бенфорда
27
28
x = x + 1
30
ООП – объединение данных и кода по их обработке в одном объекте
У объекта есть свойства (атрибуты) и методы (сообщения, список понимаемых приказов, «API»)
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?
32
Объекты реального (и воображаемого) мира – в программу
33
Функция НайтиТовар(Наименование)Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Наименование ИЗ
Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления");Выборка = Запрос.Выполнить().Выбрать();Пока Выборка.Следующий() Цикл
Если СокрЛП(ВРег(Выборка.Наименование))=ВРег(Наименование) ТогдаВозврат Выборка.Ссылка;
КонецЕсли;КонецЦикла;
КонецФункции
34
У объекта богатый внутренний мирДоступны только публичные методы и свойства
35
Класс – чертеж (описание) будущих объектов
36
37
38
39
Наследование — механизм языка, позволяющий создать новый класс на основе уже существующего (родительского, базового) класса.
Fiat 124 и ВАЗ 2101
40
Инкапсуляция — механизм языка программирования, который ограничивает доступ к составляющим объект
компонентам (методам и переменным), делает их приватными, т.е. доступными только внутри объекта.
41
42
43
Полиморфизм (от греч. πολὺ- — много, и μορφή — форма) — возможность класса–потомка менять реализацию класса–родителя сохраняя при этом его интерфейс.
44
45
46
Шаблон «одиночка»
47
48
Антипаттерны. Магические кнопки
49
«Паблик Морозов» Класс-потомок, созданный в соответствии с этим антипаттерном, выдает по запросу все данные класса-предка, независимо от степени их сокрытия.
50
ООП – не всегда хорошо
?"Hello, world!"
class Program {static void Main(){
System.Console.WriteLine("Hello");}
}
51
А хотелось iPhone...
52
Хвалим, но не понимаем
53
Спасибо!