Сообщение Re: ООП и ветер от 08.10.2023 18:15
Изменено 08.10.2023 18:19 gyraboo
Re: ООП и ветер
Здравствуйте, Нomunculus, Вы писали:
Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???
Во-первых, определись, ты будешь моделировать частицы или эмердженое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн подписчик.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.
Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???
Во-первых, определись, ты будешь моделировать частицы или эмердженое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн подписчик.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.
Re: ООП и ветер
Здравствуйте, Нomunculus, Вы писали:
Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???
Во-первых, определись, ты будешь моделировать частицы или эмердженое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн подписчик.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.
Ну, и куда сунуть ветер и тряпку. Это например объект сцена, или игра, или мир.
И кстати этот гад обжект тоже генерирует события, типа гейм стартует или гейм Овер, и на них подписан рендерер меню игры. Это классика ООП-парадигмы MVC.
Н>Вопрос на миллион — КУДА СУНУТЬ ВЕТЕР???
Во-первых, определись, ты будешь моделировать частицы или эмердженое явление? Если частицы, то ветер возникнет сам собой как перемещение частиц воздуха. Их физическое воздействие на частицы тряпки обеспечит и колыхание тряпки, и её перемещение из-за ветра. Но моделировать частицы через ООП жирно, слишком много накладных расходов. Обычно ООП моделирует как раз таки эмерджентные явления и объекты. У тебя будет объект тряпка и объект ветер. ООП — это не только про инкапсуляцию в объектах данных и поведения, но важная роль отводится и взаимодействию объектов. Алан Кэй, отец ООП, реализовал взаимодействие объектов через события. Например, ветер дует, это вызов метода. Дуновение влияет на тряпку. Значит, метод дуновения должен генерировать событие дуновения с параметром сила и направление. Фабрика тряпки при её создании подписывает тряпку на событие дуновения, в обработчике реализуется поведение тряпки на событие дуновения с соотв. силой и направлением.
Обрати внимание, ветер, генерируя событие дуновения, не знает, кто и сколько объектов подписаны на него. Это паттерн подписчик.
Кури книгу банды четырех про ООП дизайн и паттерны, а также другие книги про паттерны, там ты найдешь все ответы. Ещё рекомендую thinking in patterns Шэллоуэя, она учит думать в парадигме ООП.
Ну, и куда сунуть ветер и тряпку. Это например объект сцена, или игра, или мир.
И кстати этот гад обжект тоже генерирует события, типа гейм стартует или гейм Овер, и на них подписан рендерер меню игры. Это классика ООП-парадигмы MVC.