Снова про ООП

флоппик

promotor fidei
Команда форума
Партнер клуба
whirlwind, что бы проектировать взаимодействие между объектами, надо научится проектировать эти сами объекты на элементарном уровне.
 

iceman

говнокодер
нужно сделать класс BOTBase - существо любого типа, которое имеет базовые параметры, одинаковы для всех.

дальше делаем МОНСТРа MonsterBase extend BOTBase - наделяем его дополнительными атрибутами присущих монстрам.

дальше делам класс Оrk extend MonsterBase, ну так же наделяем его фичами присущих Оркам

чтобы сделать стаю Монстров - нужен объект КОЛЛЕКЦИЯ - базовая коллекция для всех БОТОВ, делает базовые манипуляции, присваивает каждому объекту - идентификатор, потом сделать OrkCollection extend BaseBotCollection - коллекция для орков, хавает классы Оrk и может делать массовые манипуляции присущих Оркам

передвигать, убивать должен уметь отдельный объект DOIT, который хавает объект BotBase(методы убийства, двигания, можно сделать абстрактными) и вызывает нужные методы и доработать их в основых классах. т.е. в основных классах должна быть реализация действий с персонажем, как он умрает, как ходит и т.д.
 

whirlwind

TDD infected, paranoid
флоппик нет! По теме ответ должен звучать так: есть система взаимодействия. Если речь об "атакуе", то это система взаимодействия двух идентичных типов, через третий - боевая система. Если речь об жив/мертв это взаимодействие между игровым богом и персонажем через его состояние. То есть другая система взаимодействия и другие классы. И так далее. От классов взаимодействия строятся классы объектов, а не наоборот. А вы начали сразу с реализации, хотя такую реализацию в систему объединить очень трудно, потому что для тех типов, которые объединены единым взаимодействием вы предложили абсолютно-разные интерфейсы.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
whirlwind, ну напиши правильный и понятный пример, я с удовольствием сам тоже посмотрю.

А вообще — нельзя начать идти с середины дороги. Утыкание в тупики — ключевой момент в самообучении, это не просто говорит о том, что так делать не надо, но еще и дает понимание — почему.
 

iceman

говнокодер
люди не тупите, не надо ничо усложнять!! у топикстартера ЕСТЬ ошибка, вот что он не понимает: Объект должен быть один 1 монстр = 1 объект, 2 монстра = 2 объекта одного класса (читай отличие между объектом и классом)

если много монстров, нужны групповые "оргии" - делать объект коллекцию которая хранит в себе ссылки на объекты. а потом массово в цикле делать общие действия

Автор же соединил ОБЪЕКТ И "КОЛЛЕКЦИЮ объектов" в один тип, вот этом у него и проблема!
 

флоппик

promotor fidei
Команда форума
Партнер клуба
> нужно сделать класс BOTBase
там и так есть Basic_Unit
> МОНСТРа MonsterBase extend BOTBase
class Undead extends Basic_Unit
> чтобы сделать стаю Монстров - нужен объект КОЛЛЕКЦИЯ
Я не делал групп кого либо по определению. Зачем нужен объект того, что не проектировалось?
> передвигать, убивать должен уметь отдельный объект DOIT
Там в комментах есть ссылка, что должен быть объект Map, который этим будет управлять
> который хавает объект BotBase
Что характерно, объекты и так принимают Base_Unit как параметр.

Похоже, проблема в том, что кто-то невнимательно читал код, ага.
 

craz

Нестандартное звание
и все таки я склоняюсь что монстров не стоит рассматривать
http://habrahabr.ru/blogs/gtd/111707/ - мне почему то понравилась статья, хотя трудно реально смириться с тем что моск не можно заточить по математику, только под попи..ть

может лучше друзей, мам, пап рассматривать тогда?
 

iceman

говнокодер
флоппик
я не тебе пишу, мое послание адресовано автору, код я твой не читал.
 

whirlwind

TDD infected, paranoid
Вот примерно как можно разработать архитектуру.

Шаг 1: атакуе
Шаг 2: результат
Шаг 3: строим структурную диаграмму классов, где каждый интерфейс спроектирован исходя из реальных требований системы взаимодействий
 

Духовность™

Продвинутый новичок
Вот блин, я же писал - НЕ НАДО УСЛОЖНЯТЬ задачу. Зачем с ботов начали? Научите двух людей плодиться сначала. Там и коллекция и взаимодействие.
 
  • Like
Реакции: craz

whirlwind

TDD infected, paranoid
> НЕ НАДО УСЛОЖНЯТЬ задачу .... Научите двух людей плодиться сначала.

В рамках какой модели научить: социальной, биологической, территориальной, экономической, что то еще? Везде будут и коллекция, и взаимодействие.
 

whirlwind

TDD infected, paranoid
craz теперь перечтай и переосмысли :) Нельзя написать класс просто так от балды в отрыве от конкретной модели и чему-то научиться (ну кроме синтаксиса, конечно).
 

Духовность™

Продвинутый новичок
> НЕ НАДО УСЛОЖНЯТЬ задачу .... Научите двух людей плодиться сначала.

В рамках какой модели научить: социальной, биологической, территориальной, экономической, что то еще? Везде будут и коллекция, и взаимодействие.
в каких ещё рамках? Ты о чем? Я про действие и интерфейс говорю.
 

whirlwind

TDD infected, paranoid
в каких ещё рамках? Ты о чем? Я про действие и интерфейс говорю.
А что, у ТСа с этим проблемы?

ЗЫ. Давайте начнем с первого поста. Разве можно утверждать, что ошибка ТСа в том, что он использует 1 экземпляр для представления совокупности объектов? Не зная модели нет, нельзя. Например вспомним Герои меча и магии, где клетки заняты персонажами одного типа но в разных количествах. Вариант ТСа прекрасно подходит под игру подобного типа. Мы не можем быть уверены что это плохое решение, потому что ответы в этой теме основываются на личном субъективном представлении игры отвечающим, которое далеко не факт, что совпадает с видением этой же самой игры ТСом. Полноценная самодостаточная модель интерпретируется однозначно. По этому ее можно переложить на код. По этому, задавая вопрос - хорошо ли мое ООП, надо сначала раскрыть модель. Иначе все это обсуждение на уровне - правильно ли я проставил в коде отступы.
 

Духовность™

Продвинутый новичок
whirlwind
ты делаешь вид, что не понимаешь? у ТС да, проблемы. iceman хорошо отписал, почему.

Я имел в виду, что есть два объекта - М и Ж, имеют свои половые интерфейсы. Как сделать так, что бы Ж родила объект со случайным половым интерфейсом? Как это взаимодействие должно происходить? Можно ли это сделать впрыскиванием (гыгы) или для этого нужно создать отдельный объект типа действия Sex?
 
Сверху