Информация об изменениях

Сообщение Re: ООП и ветер от 08.10.2023 18:15

Изменено 08.10.2023 18:25 gyraboo

Re: ООП и ветер
Здравствуйте, Нomunculus, Вы писали:

Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???


Во-первых, определись, ты будешь моделировать частицы или эмерджентое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн Наблюдатель.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.

Ну, и куда сунуть ветер и тряпку. Это например объект сцена, или игра, или мир.

И кстати этот мир-обьект, паттерн Синглтон, тоже генерирует события, типа гейм стартед или гейм овер, и на них подписан рендерер меню игры. Это классика ООП-парадигмы MVC.
Re: ООП и ветер
Здравствуйте, Нomunculus, Вы писали:

Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???


Во-первых, определись, ты будешь моделировать частицы или эмерджентое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты, или являются контейнерами для управления эмерджентными свойствами массивов частиц. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн Наблюдатель.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.

Ну, и куда сунуть ветер и тряпку. Это например объект сцена, или игра, или мир.

И кстати этот мир-обьект, паттерн Синглтон, тоже генерирует события, типа гейм стартед или гейм овер, и на них подписан рендерер меню игры. Это классика ООП-парадигмы MVC.