вторник, 1 ноября 2016 г.

Очередной выверт мозгов

Java  в очередной раз выворачивает мне мозг.
Вчера весь вечер вникал в приведённый на курсе Петра кусок из программы для расчёта площади треугольника. В конце-концов, как это работает я разобрался. Только не понял, зачем было так всё усложнять:
1\ есть класс "точка" с координатами (х, у):
- в этом классе указывается, что: this.x = x, а this.y = y: (надо, кстати разобраться с этими this. , а то что-то везде их пишут, а что это - не рассказывают),
- в этом же классе пишется метод, рассчитывающий длину стороны по формуле Герона;
- этот метод принимает в качестве параметра второй объект-"точку" с координатами (x, y).
2\ далее, есть класс, в котором будет вызываться метод расчёта длины стороны из одного объекта-точки и передавать ему в качестве аргумента второй объект-точку;
3\ создаются два объекта-точки: точка-А и точка-Б;
4\ создается метод, который будет вызывать метод расчёта из объекта точка-А и передавать ему в качестве аргумента объект точка-Б...

Пётр пишет, что это правильный код в духе ООП, метод расчёта длины стороны в нём более лаконичен и т.д. Как это работает, я разобрался. Но не понял, для чего нужно было всё так усложнять? Почему нельзя было сделать проще: в один метод расчёта длины стороны передавать в качестве аргументов координаты двух точек? Такой метод можно вызвать столько раз, сколько точек вершин у фигуры, а в качестве аргументов можно передавать ему массив с координатами точек.
Зачем было городить такой "огород" из объектов? Ладно, в задаче всего 3 точки, а если их будет 6, 12 или 24? Никак не могу понять, в чём тут выгода по сравнению с одним методом... Точки и их координаты постоянно "летают" от одного объекта в другой. Очень сложно отследить их "траекторию".

Сегодня попробую написать эту программу сам, без подглядывания в код Петра, и проверить её работоспособность.

До        После