Atividade:
| ||||||||||||||
Finalidade
|
|
Passos
Não há uma ordem rígida entre os passos. Comece pela implementação das operações e implemente associações e atributos conforme necessário para poder compilar e executar as operações. |
|
| Artefatos Informados: | Artefatos Resultantes: |
| Papel: Implementador | |
| Detalhamentos do Fluxo de Trabalho: |
Observação: a implementação e a modificação de componentes são efetuadas no contexto do gerenciamento de configuração no projeto. Os implementadores recebem um espaço de trabalho privado para desenvolvimento (consulte Atividade: Criar Espaço de Trabalho de Desenvolvimento) onde realizam seu trabalho, conforme as orientações do Artefato: Ordem de Trabalho. Nesse espaço de trabalho, os elementos de origem são criados e colocados sob o gerenciamento de configuração, ou são modificados no ciclo comum de check-out, edição, build, teste unitário e check-in (consulte Atividade: Fazer Mudanças). Após a conclusão de alguns conjuntos de componentes (conforme definido por uma ou mais Ordens de Trabalho e conforme exigido para um próximo build), o implementador liberará (consulte Atividade: Liberar Mudanças) os componentes novos e modificados associados no espaço de trabalho de integração do subsistema, para integração com o trabalho de outros implementadores. Por fim, em um momento conveniente, o implementador poderá atualizar (ou criar nova baseline para) o espaço de trabalho de desenvolvimento privado, de modo que fique consistente com o espaço de trabalho de integração do subsistema (consulte Atividade: Atualizar Espaço de Trabalho).
Siga o Guia de Programação ao implementar as classes.
As classes, com operadores públicos, atributos e associações, são a principal base da implementação. É importante saber que nem todas as operações públicas, atributos e associações são definidos durante o design.
As realizações de casos de uso, que mostram como as classes e os objetos interagem para realizar o caso de uso, são a base secundária da implementação.
É recomendável implementar as classes gradativamente; compile, vincule e execute alguns testes de regressão algumas vezes por dia.
Antes de implementar uma classe desde o início, convém adaptar as classes de implementação existentes, em geral através da criação de subclasses ou instâncias.
Para implementar operações, é necessário:
Muitas operações são simples o bastante para serem implementadas diretamente da operação e da especificação correspondente.
Os algoritmos não-triviais são necessários principalmente por dois motivos: para implementar operações complexas para as quais uma especificação é fornecida e para otimizar operações para as quais um algoritmo simples, mas ineficiente, serve como definição.
A escolha de algoritmos envolve a escolha da estrutura de dados na qual funcionam. Muitas estruturas de dados de implementação são classes do tipo contêiner, como matrizes, listas, filas, pilhas, conjuntos, pacotes e variações desses elementos. A maioria das linguagens orientadas a objetos e ambientes de programação fornece bibliotecas de classes com esses tipos de componentes reutilizáveis.
É possível localizar novas classes, por exemplo, para conter resultados intermediários, e adicionar novas operações de nível baixo à classe para decompor uma operação complexa. Em geral, essas operações são limitadas à classe, ou seja, não são visíveis fora dela.
Escreva o código da operação, começando pela instrução da interface correspondente, por exemplo, a declaração da função do membro no C++, a especificação do subprograma em Ada ou o método no Visual Basic. Siga o Guia de Programação.
É possível implementar o estado de um objeto fazendo referência aos valores de seus atributos, sem nada especial para a representação. As transições de estado desse objeto estarão implícitas nas mudanças de valores dos atributos e os comportamentos variáveis serão programados através de sentenças condicionais. Essa solução não é satisfatória para comportamentos complexos, pois geralmente leva a estruturas complexas, difíceis de serem alteradas à medida que mais estados são adicionados ou o comportamento é alterado.
Se o comportamento do componente (ou de seus elementos) depende do estado, há geralmente um ou mais diagramas de estados que descrevem o comportamento dos elementos do modelo que formam o componente. Os diagramas de estados funcionam como uma entrada importante durante a implementação. Para obter mais informações, consulte Diretrizes: Diagrama de Estados.
As máquinas de estado mostradas nos diagramas de estados explicitam o estado de um objeto, e as transições e o comportamento exigido são claramente definidos. É possível implementar uma máquina de estado de diversas formas:
É possível implementar máquinas de estado com subestados simultâneos delegando o gerenciamento de estados para os objetos ativos - um para cada subestado simultâneo - porque esses subestados representam cálculos independentes (que, no entanto, poderão interagir). É possível gerenciar cada subestado usando uma das técnicas descritas anteriormente.
Se for possível implementar uma classe ou partes dela através da reutilização de uma classe existente, use a delegação em vez da herança.
A delegação significa que a classe é implementada com a ajuda de outras classes. A classe faz referência a um objeto de outra classe usando uma variável. Quando uma operação é chamada, ela chama uma operação no objeto referenciado (da classe reutilizada), para a execução real. Assim, é possível dizer que ela delega a responsabilidade para a outra classe.
Uma associação unidirecional é implementada como um ponteiro - um atributo que contém uma referência a objeto. Se a multiplicidade for única, ela será implementada como um ponteiro simples. Se a multiplicidade for muitas, ela será um conjunto de ponteiros. Se a extremidade muitas for solicitada, será possível usar uma lista em vez de um conjunto.
Uma associação bidirecional é implementada como atributos nos dois sentidos, usando técnicas das associações unidirecionais.
Uma associação qualificada é implementada como uma tabela de pesquisa (por exemplo, uma classe Smalltalk Dictionary) no objeto qualificador. Os valores do seletor na tabela de pesquisa são os qualificadores e os valores-alvo são os objetos da outra classe.
Se for necessário acessar os valores dos qualificadores ordenadamente, você poderá organizar os qualificadores em uma matriz classificada ou uma árvore. Nesse caso, o tempo de acesso será proporcional ao log N, onde N é o número dos valores dos qualificadores.
Se os qualificadores forem obtidos de um conjunto limitado compacto, os valores correspondentes poderão ser mapeados para um intervalo inteiro e a associação poderá ser implementada de forma eficiente como uma matriz. Essa abordagem é mais atraente se a associação está quase toda, e não esparsamente, preenchida, e é ideal para conjuntos limitados totalmente preenchidos.
A maioria das linguagens orientadas a objetos e ambientes de programação fornece bibliotecas de classes com componentes reutilizáveis para implementar diferentes tipos de associações.
Implemente atributos escolhendo uma destas três formas: use variáveis primitivas internas, use uma classe de componente reutilizável ou defina uma nova classe. A definição de uma nova classe costuma ser mais flexível, mas inclui procedimentos indiretos desnecessários. Por exemplo, o número do INSS de um funcionário pode ser implementado como um atributo do tipo Seqüência de caracteres ou como uma nova classe.
![]()
Implementações alternativas de um atributo.
Também pode ser o caso de grupos de atributos serem reunidos em novas classes, como mostra o exemplo a seguir. As duas implementações estão corretas.

Os atributos em Linha são implementados como associações a uma classe Ponto.
Se você encontrar um erro de design em qualquer um dos passos, forneça feedback do retrabalho para o design. Se a mudança necessária for pequena e a mesma pessoa estiver projetando e implementando a classe, não será preciso uma solicitação de mudança formal. A pessoa poderá efetuar a mudança no design.
Se a mudança necessária afetar diversas classes, por exemplo, uma mudança em uma operação pública, será preciso enviar uma solicitação de mudança formal para um CCB (Change Control Board, Comitê de Controle de Mudança). Consulte Atividade: Corrigir um Defeito.
Finalidade
|
| Mentores de Ferramentas |
Antes de iniciar os testes unitários, você poderá efetuar algumas verificações. Os testes são mais caros; por isso, tente algumas destas opções:
|
Rational Unified Process
|