Exercício — Criar uma interface
Neste exercício, você é um desenvolvedor que trabalha para a CRONUS International Ltd. Você deseja criar e implementar uma interface, IAddressProvider, que tem um método getAddress com determinada assinatura.
Tarefas
Criar uma interface.
Criar dois codeunits que implementam a interface.
Criar uma página com uma ação que testa a interface.
Criar uma enumeração para dar suporte à inicialização da interface.
Etapas
Siga estas etapas para concluir o exercício:
Crie um novo arquivo .al com o seguinte código que define uma interface IAddressProvider, que tem um método getAddress com determinada assinatura:
interface IAddressProvider { procedure GetAddress(): Text; }Crie dois novos arquivos .al para criar dois codeunits: CompanyAddressProvider e PrivateAddressProvider. Ambos os codeunits implementarão a interface IAddressProvider, e cada uma definirá uma implementação diferente do método getAddress, que, nesse caso, é uma variação simples do valor do endereço:
codeunit 65100 CompanyAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('Company address \ Denmark 2800') end; }codeunit 65101 PrivateAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('My Home address \ Denmark 2800') end; }Crie um novo arquivo .al para criar uma página com uma ação que captura a escolha do endereço e chama, com base nessa escolha, uma implementação da interface IAddressProvider:
page 65100 MyAddress { PageType = Card; ApplicationArea = All; UsageCategory = Administration; layout { area(Content) { group(GroupName) { } } } actions { area(Processing) { action(WhatsTheAddress) { ApplicationArea = All; Caption = 'What's the Address?'; ToolTip = 'Select the address.'; Image = Addresses; trigger OnAction() var iAddressProvider: Interface IAddressProvider; begin AddressproviderFactory(iAddressProvider); Message(iAddressProvider.GetAddress()); end; } action(SendToHome) { ApplicationArea = All; Image = Home; Caption = 'Send to Home.'; ToolTip = 'Set the interface implementation to Home.'; trigger OnAction() begin sendTo := sendTo::Private end; } action(SendToWork) { Image = WorkCenter; Caption = 'Send to Work.'; ToolTip = 'Set the interface implementation to Work.'; ApplicationArea = All; trigger OnAction() begin sendTo := sendTo::Company end; } } } local procedure AddressproviderFactory(var iAddressProvider: Interface IAddressProvider) var CompanyAddressProvider: Codeunit CompanyAddressProvider; PrivateAddressProvider: Codeunit PrivateAddressProvider; begin if sendTo = sendTo::Company then iAddressProvider := CompanyAddressProvider; if sendTo = sendTo::Private then iAddressProvider := PrivateAddressProvider; end; var sendTo: enum SendTo; }Crie um novo arquivo .al para criar uma enumeração que contém dois valores, Company e Private.
enum 65100 SendTo { Extensible = true; value(0; Company) { } value(1; Private) { } }Publique sua extensão e abra a página MyAddress.
Selecione a ação Enviar para Casa.
Selecione a ação Qual é o Endereço e verifique se o resultado é semelhante à captura de tela a seguir.
Selecione a ação Enviar para o Trabalho.
Selecione a ação Qual é o Endereço e verifique se o resultado é semelhante à captura de tela a seguir.


