Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
WHO WE ARE —PLARIUM GLOBAL
We’re one of the world’s fastest growing developers of mobile, socialand web-based games with over 250M registrations and 3M DAU.
● Founded in 2009● HQ in Israel● 8 Offices & Studios
We’re home to some of the best talent in the social and mobile gaming industry.
Over 1200 professionals in eight offices and development studios across Europe and United States.
Проектированиеобъектов: как открыть
бутылку с водойIgor StepanovRPG DepartmentClient Development Team Lead
Copyright Plarium Global LTD. 2019Do not distribute
Что такое хороший объект?
Copyright Plarium Global LTD. 2019Do not distribute
Что такое объект?
Copyright Plarium Global LTD. 2019Do not distribute
6Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Философская категория,
выражающая нечто, на что
направлена практическая
или познавательная деятельность
субъекта (наблюдателя). Это нечто
может существовать как в реальной
действительности, так и в
вымышленном мире; а объектом
может быть и сам субъект.
ОПРЕДЕЛЕНИЕ
Copyright Plarium Global LTD. 2019Do not distribute
7Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
ОПРЕДЕЛЕНИЕ
Философская категория,
выражающая нечто, на что
направлена практическая
или познавательная деятельность
субъекта (наблюдателя). Это нечто
может существовать как в реальной
действительности, так и в
вымышленном мире; а объектом
может быть и сам субъект.
Copyright Plarium Global LTD. 2019Do not distribute
8Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Некоторая сущность в виртуальном
пространстве, обладающая определенным
состоянием и поведением, имеет заданные
значения свойств (атрибутов) и операций
над ними (методов).
В ПРОГРАММИРОВАНИИ
Copyright Plarium Global LTD. 2019Do not distribute
9Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Некоторая сущность в реальном
пространстве, обладающая определенным
состоянием и поведением; состоит из
плоти и костей.
ЧЕЛОВЕК
Copyright Plarium Global LTD. 2019Do not distribute
10Проектирование объектов: как открыть бутылку с водой
Технически верно...
Copyright Plarium Global LTD. 2019Do not distribute
11Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Copyright Plarium Global LTD. 2019Do not distribute
12Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Copyright Plarium Global LTD. 2019Do not distribute
13Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Copyright Plarium Global LTD. 2019Do not distribute
Что объект долженделать в рамках нашего
приложения?
Copyright Plarium Global LTD. 2019Do not distribute
Что объект долженделать в рамках нашего
приложения?
Copyright Plarium Global LTD. 2019Do not distribute
16Проектирование объектов: как открыть бутылку с водой
АНТРОПОМОРФИЗМ
Copyright Plarium Global LTD. 2019Do not distribute
17Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Хороший объект в программировании –это антропоморфная модель объекта предметной области.
Copyright Plarium Global LTD. 2019Do not distribute
18Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
Object Thinking by David West, p. 66:
Think of an object as the equivalent of
the quanta from which the universe is
constructed.
Copyright Plarium Global LTD. 2019Do not distribute
19Проектирование объектов: как открыть бутылку с водой
1) Выполняет поставленную задачу
2) Удобен в использовании
3) Устойчив к изменениям
4) Тестируется
ТРЕБОВАНИЯЧто такое хороший объект?
Copyright Plarium Global LTD. 2019Do not distribute
20Проектирование объектов: как открыть бутылку с водой
Copyright Plarium Global LTD. 2019Do not distribute
21Проектирование объектов: как открыть бутылку с водой
О СКОРОСТИ СТАНОВЛЕНИЯ ИДЕЙ
ООП – 1967 г. SOLID – 2000 г. DDD – 2003 г.
OOP is dead! Long live OODD!
Copyright Plarium Global LTD. 2019Do not distribute
22Проектирование объектов: как открыть бутылку с водой
О СКОРОСТИ СТАНОВЛЕНИЯ ИДЕИ?
ООП – 1967 г. SOLID – 2000 г. DDD – 2003 г.
OOP is dead! Long live OODD!
Copyright Plarium Global LTD. 2019Do not distribute
23Проектирование объектов: как открыть бутылку с водойЧто такое хороший объект?
ОПРЕДЕЛЕНИЕ
Философская категория,
выражающая нечто, на что
направлена практическая
или познавательная деятельность
субъекта (наблюдателя). Это нечто
может существовать как в реальной
действительности, так и в
вымышленном мире; а объектом
может быть и сам субъект.
Copyright Plarium Global LTD. 2019Do not distribute
24Проектирование объектов: как открыть бутылку с водой
ЭТАПЫ ДЕЯТЕЛЬНОСТИЧто такое хороший объект?
1) Вовлечение в деятельность
2) Целеполагание
3) Проектирование действий
4) Осуществление действий
5) Анализ результатов действий и сравнение их с поставленными целями
Copyright Plarium Global LTD. 2019Do not distribute
25Проектирование объектов: как открыть бутылку с водой
ПАРАМЕТРЫ ХОРОШЕГО ОБЪЕКТАOOP is dead! Long live OODD!
1) Существует в предметной области2) Антропоморфен3) Обладает лаконичным контрактом данных4) Уникален и обладает состоянием5) Не позволяет менять состояние извне6) Не имеет статики7) Именуется от сущности, а не от действия
Copyright Plarium Global LTD. 2019Do not distribute
Практические примеры
Copyright Plarium Global LTD. 2019Do not distribute
27Проектирование объектов: как открыть бутылку с водойПрактические примеры
Copyright Plarium Global LTD. 2019Do not distribute
28Проектирование объектов: как открыть бутылку с водойИспользование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
29Проектирование объектов: как открыть бутылку с водой
No
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
30Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
31Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
32Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
33Проектирование объектов: как открыть бутылку с водойИспользование «данных» о сущности вместо сущности
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
34Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
35Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
36Проектирование объектов: как открыть бутылку с водой
No Yes
Использование «данных» о сущности вместо сущности
Copyright Plarium Global LTD. 2019Do not distribute
37Проектирование объектов: как открыть бутылку с водойИспользование «данных» о сущности вместо сущности
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
38Проектирование объектов: как открыть бутылку с водойСвойства-сеттеры
No Yes
No
Copyright Plarium Global LTD. 2019Do not distribute
39Проектирование объектов: как открыть бутылку с водойОбъекты, спроектированные «от действия»
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
40Проектирование объектов: как открыть бутылку с водойОбъекты, спроектированные «от действия»
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
41Проектирование объектов: как открыть бутылку с водойОбъекты, спроектированные «от действия»
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
42Проектирование объектов: как открыть бутылку с водой
No Yes
Объекты, спроектированные «от действия»
Copyright Plarium Global LTD. 2019Do not distribute
43Проектирование объектов: как открыть бутылку с водой
No Yes
Объекты, спроектированные «от действия»
Copyright Plarium Global LTD. 2019Do not distribute
44Проектирование объектов: как открыть бутылку с водой
No Yes
Объекты, спроектированные «от действия»
Copyright Plarium Global LTD. 2019Do not distribute
45Проектирование объектов: как открыть бутылку с водой
No Yes
Объекты, спроектированные «от действия»
Copyright Plarium Global LTD. 2019Do not distribute
46Проектирование объектов: как открыть бутылку с водой
No Yes
Объекты, спроектированные «от действия»
Copyright Plarium Global LTD. 2019Do not distribute
47Проектирование объектов: как открыть бутылку с водой
No Yes
Значения перечислений
Copyright Plarium Global LTD. 2019Do not distribute
48Проектирование объектов: как открыть бутылку с водой
No Yes
Значения перечислений
Copyright Plarium Global LTD. 2019Do not distribute
49Проектирование объектов: как открыть бутылку с водой
No Yes
Значения перечислений
Copyright Plarium Global LTD. 2019Do not distribute
50Проектирование объектов: как открыть бутылку с водой
No Yes
Значения перечислений
Copyright Plarium Global LTD. 2019Do not distribute
51Проектирование объектов: как открыть бутылку с водойЗначения перечислений
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
52Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
53Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
54Проектирование объектов: как открыть бутылку с водойПроектирование с учетом контекста
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
55Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
56Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
57Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
58Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
59Проектирование объектов: как открыть бутылку с водойПроектирование с учетом контекста
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
60Проектирование объектов: как открыть бутылку с водой
No YesNo
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
61Проектирование объектов: как открыть бутылку с водой
No
Статические классы
Yes
Copyright Plarium Global LTD. 2019Do not distribute
62Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
63Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
64Проектирование объектов: как открыть бутылку с водой
No Yes
Проектирование с учетом контекста
Copyright Plarium Global LTD. 2019Do not distribute
65Проектирование объектов: как открыть бутылку с водойМетоды обратного вызова
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
66Проектирование объектов: как открыть бутылку с водой
No Yes
Методы обратного вызова
Copyright Plarium Global LTD. 2019Do not distribute
67Проектирование объектов: как открыть бутылку с водой
No Yes
Методы обратного вызова
Copyright Plarium Global LTD. 2019Do not distribute
68Проектирование объектов: как открыть бутылку с водой
No Yes
Методы обратного вызова
Copyright Plarium Global LTD. 2019Do not distribute
69Проектирование объектов: как открыть бутылку с водой
No Yes
Подписки на события
Copyright Plarium Global LTD. 2019Do not distribute
70Проектирование объектов: как открыть бутылку с водой
No Yes
Подписки на события
Copyright Plarium Global LTD. 2019Do not distribute
71Проектирование объектов: как открыть бутылку с водой
No Yes
Подписки на события
Copyright Plarium Global LTD. 2019Do not distribute
72Проектирование объектов: как открыть бутылку с водой
No Yes
Подписки на события
Copyright Plarium Global LTD. 2019Do not distribute
73Проектирование объектов: как открыть бутылку с водой
No Yes
Подписки на события
Copyright Plarium Global LTD. 2019Do not distribute
74Проектирование объектов: как открыть бутылку с водойЛишняя бизнес-логика внутри
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
75Проектирование объектов: как открыть бутылку с водойЛишняя бизнес-логика внутри
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
76Проектирование объектов: как открыть бутылку с водойЛишняя бизнес-логика внутри
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
77Проектирование объектов: как открыть бутылку с водойЛишняя бизнес-логика внутри
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
78Проектирование объектов: как открыть бутылку с водой
No Yes
Лишняя бизнес-логика внутри
Copyright Plarium Global LTD. 2019Do not distribute
79Проектирование объектов: как открыть бутылку с водой
No Yes
Лишняя бизнес-логика внутри
Copyright Plarium Global LTD. 2019Do not distribute
80Проектирование объектов: как открыть бутылку с водой
No Yes
Лишняя бизнес-логика внутри
Copyright Plarium Global LTD. 2019Do not distribute
81Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
82Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
83Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
84Проектирование объектов: как открыть бутылку с водойИспользование паттернов
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
85Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
86Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
87Проектирование объектов: как открыть бутылку с водойИспользование паттернов
No Yes
Copyright Plarium Global LTD. 2019Do not distribute
88Проектирование объектов: как открыть бутылку с водой
No Yes
Использование паттернов
Copyright Plarium Global LTD. 2019Do not distribute
89Проектирование объектов: как открыть бутылку с водой
No Yes
Декомпозиция на объекты
Copyright Plarium Global LTD. 2019Do not distribute
90Проектирование объектов: как открыть бутылку с водой
No Yes
Декомпозиция на объекты
Copyright Plarium Global LTD. 2019Do not distribute
91Проектирование объектов: как открыть бутылку с водой
No Yes
Декомпозиция на объекты
Copyright Plarium Global LTD. 2019Do not distribute
Так как же все-таки открыть бутылку с водой?
Copyright Plarium Global LTD. 2019Do not distribute
Copyright Plarium Global LTD. 2019Do not distribute
Всё решает предметная область :-)
Copyright Plarium Global LTD. 2019Do not distribute
Copyright Plarium Global LTD. 2019Do not distribute
Copyright Plarium Global LTD. 2019Do not distribute
Copyright Plarium Global LTD. 2019Do not distribute
THANK YOU