Показать сообщение отдельно
Старый 29.06.2017, 09:02   #197  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от 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 есть, но с ними не так удобно.
__________________
// no comments