All streams
Search
Write a publication
Pull to refresh
0
0
Send message

Кажется, Вы совсем не поняли мои пост.

Я написал согласно Вашему ТЗ. У меня нет никакого контекста где и зачем вы собираетесь использовать эту робообезьяну. И почему она должна летать вообще? И с чем иметь полиморфизм? Зачем мне другие методы в классе? Просто чтобы не быть похожим на ФП?

Я старался максимально корректно указать интересные для меня темы обсуждения, но вы проигнорировали их ВСЕ полностью, а ответили только на свою же.

Вы уверены, что вы готовы вообще были к дискуссии?

Ладно, а если без шуток (почти без шуток, конечно же, учитывая изначально глупейшее ТЗ), то не многим сложнее код:

public class RoboDog {
  private class MonkeyBrain {
  }

  private class Wheels {
      void roll() {
          колеса;
      }
  }

  private class FlyingSystem {
      void fly() {
          полёт;
      }
  }
  
  public void QuackOnTheStroking() {
      south("Кря-кря!");
  }
}

По сути, написанное тут - тоже самое, что и в предыдущем сообщении. Можно выделить полет и крякание в интерфейсы. Не вижу сложности по ООП реализовать эту задачу.

Только где и, главное, зачем вы это применять собираетесь? Разве что Джо Армстронгу похвастаться?

«Эта проблема носит даже отдельное название — Проблема банана и макаки от Джо Армстронга: тебе нужен был банан, но ты получил макаку, держащую банан, со всеми джунглями в придачу.»

Эта проблема - проблема самого Джо Армстронга, который зачем-то унаследовал банан от макаки (а ту от джунглей).
И далее по описанию проблемы "Наследование" Вы опираетесь именно на эту ошибку.

Наследоваться необходимо от родителя, когда дочерний объект является одной из разновидностью (одним из представителей вида) родителя.

Является ли банан одним из видов обезьяны?

А разве Npc является одним из видов User? Ни в какой вселенной, ни один User не может быть Npc.
Так почему Вы его наследуете от User вообще?

Неужели Вы забыли такой популярный на хабре давным-давно мем про пушку унаследованную от танка?

И в методах, и полиморфизме у Вас явно прослеживается эта же ошибка. Вы наследуете эти концепции от ошибки Джо Армстронга. В таком случае любое поведение и явление будет изначально с ошибкой.

А, например, в "Инкапсуляции" вы не приводите никакого недостатка, а лишь говорите "В ФП не хуже!". А могли бы. Понимаете? С Вашим-то опытом Вы не могли не знать про рефлексию, например.

И последнее, из Вашего прикрепленного комментария:

«Сделать тип для летающей робособаки на колесах с мозгом обезьяны, которая на поглаживание крякает — вообще не проблема для такого подхода (пример как крайний случай). Тогда как типичный ООП‑шник облажается уже на робособаке.»

Элементарно:

public class RoboDogOnWheelsWithMonkeyBrain{
public void QuackOnTheStroking() {
sout("Кря-кря");
}
}

Спасибо за статью. Извините за некропостинг.

Так это ты себе, в первую очередь, на встречу идёшь.

Работодателю-то пофиг как-то. Не пойдешь к себе на встречу, уволит, найдет того, кто пойдет. Или хотя бы того, кто не будет делать вид, что это ему все должны...

Картинка похожа на подземелье в Diablo. С рейд-босом «Admin Account».

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity