Quando aprendemos programação OO [Object-Oriented Programming], nos é dito que encapsulamento é importante. Propriedades [variáveis] devem ser escondidas e qualquer acesso a elas deve ser feito através de métodos, que são chamados de getters (get) and setters (set). Você deve escrever métodos para cada propriedade que você quer expor: getSomething() e setSomething(someValue).

No X++ nós fazemos isso também, de uma forma bastante pratica. Para os inciantes, todos as propriedades de uma classe (variáveis no ClassDeclaration) são protegidas. Sendo assim, apenas a própria classe e suas subclasses podem acessá-las diretamente. Isto significa que o X++ força você a escrever métodos de acesso para fora da hierarquia da classe. Diferente de outras linguagens como Java, D# ou C++, não há nada que possamos fazer a respeito disso. Keywords como private, protected ou publico não são permitidos no ClassDeclaration.

E tem mais, não existem métodos get and set no X++. Não que não seja possível escrevê-los, é que apenas não há uma forma de fazê-los como nas outras linguagens já citadas acima. Tudo é feito em um método simples, com o nome usando o prefixo parm. Algumas vezes eles são chamados “property methods” ou “parm-methods”.

Um típico exemplo se parece com:

1
2
3
4
5
6
CustAccount parmCustAccount(CustAccount _custAccount = custAccount)
{
  ;
  custAccount = _custAccount;
  return custAccount;
}

Talvez isso pareça confuso, mas é extremamente simples. Se você usar este método como um set, o novo valor é passado para a propriedade (custAccount) e o retorno nunca é usado, e quando é usando como um get, _custAccount pega o valor corrente da propriedade como valor default e retorna o valor.

[]s
Pichler

Fonte: http://sysdictcoder.com/.