sexta-feira, 24 de abril de 2009

Package

Embora Ada95 permita a compilação separada(um arquivo compilado de cada vez), ela mamtem sua característica checagem de tipos. Diferentemente de FORTRAN, Ada95 usa compilação separada, não compilação independente. Em FORTRAN os arquivos são compilados sem tomarem conhecimento do conteúdo dos outros arquivos. Em Ada95 são feitas chacegens de definição de tipos, passagem de parâmetros etc. O que possibilita que Ada95 apresente essa modularidade são os pacotes.
Um pacote refere-se a uma coleção de entidades relacionadas, sendo essas procedimentos, funções, tipos, subtipos, constantes, variáveis e até mesmo outros pacotes.

Especificação de um Pacote

Um pacote deve ter uma especificação e um corpo. Na especificação são declarados os tipos, subtipos, variáveis, constantes e os cabeçalhos de funções e procedimentos. No corpo do pacote são definidas as funções e procedimentos. Uma especificação de pacote contem a palavra-chave “package”, o nome do pacote e a palavra-chave “is”.Por exemplo:

-- Interface de AdderPkg
package AdderPkg is
type MY_ARRAY is array(INTEGER range <>) of FLOAT;
procedure Add_Em_Up(In_Dat : in MY_ARRAY;
Sum : out FLOAT);
end AdderPkg;

A especificação do pacote é também chamada de interface porque é a parte do pacote à qual o usuário terá acesso. A declaração de funções e procedimentos deve ser completa para que o compilador cheque se o programa cliente está passando de forma correta os parâmetros e atribuindo a variáveis de tipo correto os valores retornados pelas funções.

Corpo de um Pacote

O corpo de um pacote contem a parte de implementação das funções e procedimentos declarados na interface(definição do pacote). Os cabeçalhos das funções e procedimentos devem ser repetidos aqui seguidos por sua completa definição. Agora é a hora de dizer o que cada função faz e como. Essa é a parte que não interessa ao programa cliente, que só quer saber como usar o que está disponível. Seguindo o exemplo anterior:

-- Implementação de AdderPkg
package body AdderPkg is
procedure Add_Em_Up(In_Dat : in MY_ARRAY;
Sum : out FLOAT) is
Total : FLOAT;
begin
Total := 0.0;
for Index in In_Dat'FIRST..In_Dat'LAST loop
Total := Total + In_Dat(Index);
end loop;
Sum := Total;
end Add_Em_Up;
end AdderPkg;

O começo da parte de implementação do pacote acrescenta a palavra-chave “body”, informando que ali começa o corpo do pacote.
O pacote composto por essas duas partes pode ser compilado mas não executado porque não é um programa inteiro. Ele foi definido para ser apenas usado por outros programas.

Nenhum comentário:

Postar um comentário