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/.
Leave a reply