Цитата:
Сообщение от
ax_mct
При этом если бы не было в системе ООП вообще а было что-то типа процедурно getPrimaryVendor_SalesLine(salesLine) то я бы не плакал. И клиент не рыдал
То есть пользы от ООП в АX я не вижу, только вред.
Технически код
X++:
vendor = salesLine.getPrimaryVendor();
трактуется компилятором так:
X++:
vendor = SalesLine::getPrimaryVendor(salesLine);
где SalesLine тупо работает как scope, т.е. область видимости, а salesLine - табличная переменная.
сам метод интерпретируется как
X++:
public VendTable getPrimaryVendor(SalesLine _salesLine)
{
;
this = _salesLine;
...
}
Работа с this происходит неявно и нам удобнее работать с меньшим числом параметров. Но дело не в этом.
ООП предназначено для другого: наследование, инкапсуляция и полиморфизм. Не будь наследования, мы бы погрязли в дублировании кода. Полиморфизм позволяет работать с базовым классом, и не держать руку на пульсе, каждый раз спрашивая себя, а с функцией какой сущности (то бишь класса) я работаю?
Вот инкапсуляция - это да, она конкретно не доработана. Очень не хватает свойств, хотя методы доступа get/set/parm есть, но с ними не так удобно.