Diretriz: Interface
São utilizadas Interfaces para representar a visualização do usuário de um sistema e ocultar sua implementação. Esta diretriz apresenta um conjunto de regras para controlar a especificação de interfaces.
Relacionamentos
Elementos Relacionados
Descrição Principal

Interfaces de Nomenclatura Para o início da página

  • Nomeie a interface a fim de refletir o papel que ela desempenha no sistema.
  • O nome deve ser curto, com uma ou duas palavras.
  • Não inclua a palavra "interface" no nome; isso está implícito pelo tipo de elemento de modelo (por exemplo, interface)

Descrevendo Interfaces Para o início da página

  • A descrição deve indicar as responsabilidades da interface.
  • A descrição deve conter várias frases, formando no máximo um parágrafo curto.
  • A descrição não deve apenas reafirmar o nome da interface, mas sim esclarecer o papel que ela desempenha no sistema.

Definindo Operações Para o início da página

  • Os nomes de operação devem refletir o resultado da operação.
  • Quando uma operação configura ou obtém informações, incluir set ou get no nome da operação é redundante. Atribua à operação o mesmo nome da propriedade do elemento do modelo que está sendo definido ou recuperado. Uma operação nomeada desta forma, sem parâmetros, recupera a propriedade; uma operação nomeada desta forma, com um parâmetro define a propriedade.

Exemplo

name() retorna o nome do objeto; name(aString) define o nome do objeto para aString.

  • A descrição da operação deve descrever o que a operação faz, incluindo os principais algoritmos, e o valor que ela retorna.
  • Nomeie os parâmetros da operação para que indiquem as informações que estão sendo transmitidas para ela.
  • Identifique o tipo do parâmetro.

Documentando Interfaces Para o início da página

O comportamento definido pela Interface é especificado como um conjunto de Operações. Talvez seja necessário fornecer informações adicionais:

  • Como as operações são usadas e a ordem de execução correspondente (mostrada por diagramas de seqüência de exemplo).
  • Os possíveis estados observáveis externamente nos quais pode estar o elemento de modelo que realiza a interface (ilustrados por uma máquina de estado, consulte a Diretriz: Diagrama de Estados).
  • Planos de teste e scripts que testam o comportamento de qualquer elemento do modelo que realize a interface.

Para agrupar e gerenciar essas informações, é necessário criar um pacote para conter a interface e todos os produtos de trabalho relacionados.

Dicas e Sugestões Para o início da página

Toda interface representa uma 'junção' no sistema: um local no qual o sistema pode ser "separado" e reconstruído ou reprojetado. As interfaces representam a separação da especificação do design ou da implementação. As interfaces bem estruturadas:

  • são simples mas completas, fornecendo todas as operações necessárias mas suficientes para especificar um único serviço
  • são compreensíveis, fornecendo informações suficientes para usar e realizar a interface sem que seja necessário examinar um uso ou uma implementação existente
  • são acessíveis, fornecendo informações que orientam o usuário para as principais propriedades sem importuná-los com os detalhes das operações

Ao projetar uma interface,

  • utilize a notação "pirulito" sempre que precisar simplesmente especificar a presença de uma junção no sistema. Na maioria das vezes, isso será necessário para subsistemas, não para classes.
  • Utilize a notação "classe" expandida quando precisar apresentar os detalhes do próprio serviço. Na maioria das vezes, isso será usado para especificar os serviços oferecidos por um pacote ou um subsistema.