Published by Joao Morais on 03 Nov 2007 at 12:26 pm
Diferença entre Referência e Enum
Há duas formas comuns de associar uma informação (um objeto) a uma característica, comportamento, categoria, etc. A primeira e mais comum é usando referência, a segunda é usando enumeration.
Referência
Referência é um objeto, geralmente de outra classe. Um pedido é associado a um cliente, um cliente é associado a uma cidade. No primeiro, o cliente é a referência, no segundo é a cidade.
A vantagem da referência é que ela pode ser estendida na própria aplicação, o usuário pode criar tantos novos clientes, ou tantas novas cidades quanto ele quiser. A desvantagem é a dificuldade em associar código a uma determinada referência.
Vamos supor que exista uma referência tipo de pagamento: a vista; cartão; cheque(s) pré. Uma determinada compra é associada a um destes tipos de pagamento, no entanto cada tipo de pagamento envolve rotinas, formulários, dados e detalhes diferentes um dos outros. Aqui é que entra o enumeration.
Enumeration
Enumeration é usado em situações como a forma de pagamento descrita acima, em que uma nova forma envolve novo código e novos comportamentos no sistema, aonde torna-se inútil permitir que o próprio usuário crie novas entradas.
Uma grande vantagem do enumeration é que é bem mais intuitivo associá-lo via programação do que através de referência. Uma linha de código que utilize enumeration pode ser escrita assim:
if Compra.FormaPagamento = fpCartao then
TDadosCartaoPresenter.Run;
Usar enumeration através de MVP é tão ou mais simples do que usar referência, o framework que o suporta possui rotinas para registro. Em PressObjects o código fica assim:
type TFormaPagto = (fpVista, fpChequesPre, fpCartao); ... initialization PressModel.RegisterEnumMetadata(TypeInfo(TFormaPagto), 'TFormaPagto'); end.
A partir daí o enum TFormaPagto está declarado, registrado e pronto para uso. Um enumeration é comumente apresentado com um ComboBox, basta associá-lo ao atributo FormaPagto para que sua lista seja populada corretamente com os itens.
Leave a Reply
You must be logged in to post a comment.