Criar classe usando DDD

.NET

22/02/2013

Escrever uma classe em C # baseado em duas tabelas, incluindo a conexão com o banco de dados, utilizando os conceitos de DDD (Domain Driven Design), e os testes de unidade apropriados.

Abaixo as tabelas:

Tables

Order

IdOrder

INT(pk)

dataOrder

DATETIME

nmOwner

VARCHAR(50)


OrderItem

IdOrderItem

INT(pk)

IdOrder

INT(fk)

valorItem

MONEY
Pjava

Pjava

Curtidas 0

Respostas

Rodrigo Odasaki

Rodrigo Odasaki

22/02/2013

? ? ?
GOSTEI 0
Pjava

Pjava

22/02/2013

Eu passei as tabelas e como eu crio a(s) classe(s) baseadas nessas tabelas, usando DDD?
GOSTEI 0
Code Easy

Code Easy

22/02/2013

Vamos a implementação seguindo o DDD. Como não sei qual é o domínio da sua aplicação vou montar o exemplo como Faturamento, mas se não for, depois você muda:
1) Crie um projeto de domínio do tipo Class Library chamado Faturamento.Domain ou em português, Faturamento.Dominio. Eu particularmente prefiro em inglês;
2) Crie uma pasta chamada Entity ou Entidade para armazenar as classes de negócio;
3) Crie uma classe chamada Order ou Ordem na pasta Entity;
4) Faça o mesmo para a classe ItemDaOrdem ou ItemOrdem, como preferir. Mas se for usar preposição, use para todas as classes.

Obs: os nomes das propriedades devem ser os mais descritivos possível, pois é isso que visa o DDD, ser o mais informativo possível, ou seja, sem abreveações, mesmo que o nome fique grande mais. Ex.:
a coluna IdOrder ficará a propriedade Identificador;
A coluna dataOrder virará a propriedade DataDaOrdem;
A coluna nmOwner virará a propriedade e assim por diante.

Qualquer dúvida, posso te mandar uns exemplos e material. Meu email é contato@codeiteasy.com.br
GOSTEI 0
Code Easy

Code Easy

22/02/2013

Vamos a implementação seguindo o DDD. Como não sei qual é o domínio da sua aplicação vou montar o exemplo como Faturamento, mas se não for, depois você muda:
1) Crie um projeto de domínio do tipo Class Library chamado Faturamento.Domain ou em português, Faturamento.Dominio. Eu particularmente prefiro em inglês;
2) Crie uma pasta chamada Entity ou Entidade para armazenar as classes de negócio;
3) Crie uma classe chamada Order ou Ordem na pasta Entity;
4) Faça o mesmo para a classe ItemDaOrdem ou ItemOrdem, como preferir. Mas se for usar preposição, use para todas as classes.

Obs: os nomes das propriedades devem ser os mais descritivos possível, pois é isso que visa o DDD, ser o mais informativo possível, ou seja, sem abreveações, mesmo que o nome fique grande mais. Ex.:
a coluna IdOrder ficará a propriedade Identificador;
A coluna dataOrder virará a propriedade DataDaOrdem;
A coluna nmOwner virará a propriedade e assim por diante.

Qualquer dúvida, posso te mandar uns exemplos e material. Meu email é contato@codeiteasy.com.br
GOSTEI 0
Code Easy

Code Easy

22/02/2013

Esqueci de falar sobre a camada de dados.
1) Crie um outro projeto chamado Faturamento.Infrastruture ou Faturamento.Infraestrutura para armazenar as classes de dados.
2) Crie uma pasta chamada Repository ou Repositorio
3) Crie uma classe chamada OrdemRepository dentro da pasta Repository
4) crie os métodos da ordem na classe de repositório (ObterTodos, Inserir, Excluir, Alterar, ObterPelaChave, etc).
Obs: Como boa prática, Você pode criar uma interface de Repositorio para criar o padrão de métodos que todos os repositórios irão ter (ObterTodos, Inserir, Excluir, Alterar, ObterPelaChave, etc)

Para os repositórios, aconselho usar um ORM (ex.: NHibernate ou Entity Framework).

Para as classes de teste, crie um outro projeto só para isso.
GOSTEI 0
Pjava

Pjava

22/02/2013

Code, meu note quebrou e não consegui ainda testar o seu exemplo. Tão logo eu o tenha em minhas mãos, testarei e postarei o resultado. De antemão, te agradeço.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

22/02/2013

Fala, PJava, li um artigo muito interessante recentemente sobre a união do DDD com TDD no desenvolvimento de uma aplicação. Achei bem legal a abordagem, que criava as classes com base em testes que foram feitos sobre alguns requisitos do sistema.

Você chegou a implementar algo nesse caminho? Gostaria de compartilhar a experiência conosco?
GOSTEI 0
POSTAR