rvf, software e mitos

O que é uma especificação de API?

Posted on: 15 de setembro de 2008

Assim, quando dizemos “Especificação” significa uma documentação do referido. Digamos que ele está especificado –no papel-, nada concreto, apenas dito que a API deve ter ‘tal assinatura’, ao receber ‘isso’ espera-se ‘aquilo’, quando for ‘assim’ reaja ‘assim’, etc. Por exemplo: Vou criar uma especificação para controlar os meus leitores. Então eu tenho:

public interface RobsonFariasBlog {
   void aoLeitorEntrar();
   void aoLeitorSair();
   void aoLeitorPostarAlgo(String postagem);
}

Beleza. Minha API está especificada em uma interface Java. Quem implementar ela deve seguir o seguinte contrato:

– no método aoLeitorEntrar, quero que envie uma mensagem a ele, dizendo que ele é um cara bacana, etc.

– no método aoLeitorSair, quero que envie uma mensagem a ele, agradecendo a visita e bla.

– no método aoLeitorPostarAlgo, quero que verifique se o que ele está postando não contenha nenhum conteúdo referente a spam, como por exemplo “sex”, se conter não aceitar a postagem.

Ok, agora as regras também estão especificadas… Viu algum código concreto aí? Não.

Vou criar então uma implementação de referência para minha especificação:

public class RobsonFariasBlogImpl implements RobsonFariasBlog {

   public void aoLeitorEntrar() {
      System.out.println("Bem vindo! Você é um cara bacana!");
   }

   public void  aoLeitorSair() {
      System.out.println("Valeu, volte sempre!");
   }

   public void aoLeitorPostarAlgo(String postagem) {
      if (postagem.contains("sex")) {
         System.out.println("Desculpe, mas sua postagem contem conteúdo ilegal.");
      } else {
         System.out.println("Você postou: "+postagem);
      }
   }

}

 

Pronto, agora eu possuo uma implementação concreta para a minha especificação, e ao que me parece, está aceitável, pois cumpriu com as regras impostas.

Qual a vantagem de possuir uma especificação?

R: Possibilitar as pessoas que não gostaram (ou por qualquer outro motivo) da implementação default, criar suas próprias implementações e continuar compatível com o que os usuários esperam daquela API.

Uma das famosas comunidades de especificadores é a JCP, onde a comunidade ajuda a definir as especificações e o futuro da linguagem Java, através das diversas JSRs.

Exemplos de especificações:

Java Persistence API – implementações concretas: Hibernate, TopLink, OpenJPA, …

Java Server Faces – Apache MyFaces, Mojarra, BEA, BeckBase …

Enterprise JavaBeans – GlassFish, JBoss, BEA, …

 

Entre outras. Ficou claro ?

1 Response to "O que é uma especificação de API?"

Fico muito boa a explicação.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


  • Adolfo: Muito bom este post. Acho que tudo isso pode ser resumido em uma única palavra: humildade (isso não significa não defender seu ponto de vista).
  • Adolfo: Olá Robson, Alguns modelos até consegui identificar em alguns projetos que já trabalhei... Com algumas coisas eu concordo e outras não... Q
  • milah: Eu tenho um Amazon L71. Até 2 meses atrás não tive problemas com ele. Já troquei a placa de lan dele, por uma que capta melhor wi-fi. Só que ago
%d blogueiros gostam disto: