PoC | TryAngels (R&D)

Resumo Executivo

R&D

PoC

Segunda Edição

Terceira Edição

Referências

[Código fonte incluso]

↑ Topo ↑

en

PoC – Proof of Concept

Terceira Edição

Esta versão final do PoC revela o código fonte oculto anteriormente, enquanto acrescenta alguma funcionaliade. Eu também revisitei novamente o código, que agora está mais orientado a objetos (com alguns comportamentos específicos movidos para os objetos apropriados). Espero que isso contribua para a sua legibilidade e entendimento.

Aqui está como as camadas lógicas e o fluxo de dados pode ser representado agora:

layers

Figura 1. Fluxo de dados através das camadas lógicas da solução

A interface de usuário foi atualizada para permitir ao usuário rearranjar os items da TreeView; e o botão ‘Source Code’ agora mostra o código fonte que havia sido oculto:

ui-changes

Figure 2. TryAngels 0.0.3.0 – Visão parcial da Tela Principal]

Algumas considerações de design

A próxima figura mostra alguns importantes aspectos do modelo:

uml-model

Figure 3. TryAngels 0.0.3.0 – Model Diagram

A solução é baseada no fato de que qualquer triângulo contido em um determinado triângulo equilátero (pai) pode ser simples ou composto, e apontar para cima ou para baixo. Tais possibiliades são representadas pelo enum InnerTriangleTypes, e nos leva às quatro classes concretas apresentadas na parte inferior do diagrama.

A classe abstrata EqTriangle contém um (factory) static method Create, que é usado para instanciar e obter acesso a objetos de triângulos. Todos os cálculos ocorrem em tempo de criação.

A classe EqTriangle tem uma propriedade Info, que é consumida por ReportServices para gerar uma string que lista as estatísticas do objeto e é apresentada na TextBox da tela principal.

E a proprieade Children de EqTriangle encapsula a lógica de criação dos objetos internos. Ela mantém um dicionário Items, indexado tanto pelo comprimento do lado do triângulo interno com poelo seu tipo (conforme descrito acima).

Uma struct [value object], CompositeKey, é usada para rotular as chaves do dicionário Items. E cada item do dicionário armazena uma lista (IEnumerable) de EqTrianles de acordo com a sua chave correspondente.

A próxima figura mostra um exemplo de como isso funciona:

uml-sequence

Figure 4. TryAngels 0.0.3.0 – Execute Sequence Diagram.

E como uma nota final, cabe mencionar que este modelo pode ser extendido para disponibilizar funcionalidade de rotação. Neste caso, eu recomendaria uma abordagem de duas fases.

Primeiro, permita que o usuário escolha qualquer valor [float] entre 0 e 360, talvez em uma classe RotatableEqTriangle. Então, derive desta classe para configurar alguns valores previamente, a fim de representar pontos cardeais específicos, como Norte (0), Sul (180), Leste (90), Oeste (270), etc.

Faz sentido?

Anúncios

Deixe um comentário

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

%d blogueiros gostam disto: