ddd - linguagem ubíqua

Post on 27-May-2015

1.837 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

NerdT@lk na Serasa, uma apresentação sobre a Linguagem Ubíqua baseada na apresentação de DDD do mestre e amigo Sérgio Lopes da Caelum =D

TRANSCRIPT

@bregaida eduardo.bregaida@br.experian.com

Havia um grande local cheio de aeronaves de um ricaço que morreu. James seu sobrinho herdou este local e decidiu que queria abrir um negócio.

Uma loja de aeronaves. E para isso era necessário um sistema...

E aí Bregaida, beleza?!Estou precisando de um

sistema para minha loja de aeronaves.

Domain-Driven Design

Domain-Driven Design

Teremos Tupis, Cherokees, Aeroboeiros,

Paulistinhas e outras aeronaves, com diferentes capacidades e potências.!

?

Hum...!Então se eu fizer

CapacidadeTO estender de AbstractAeronave, acho

que vai dar certo!

?

Domain

Negócio Complexo

Problema Real

Pessoas

Linguagem de Negócio

ConversaSobre o domínio

Para criar um sistema

ConversaSobre o domínio

Para criar um sistema

Precisamos falar a mesma língua!

Língua Ubíqua (Ubiquitous Language)

Temos hangares aqui no nosso espaço, com

vários aviões diferentes...

Nosso cliente chegará no Hangar e usará o sistema para encontrar os melhores

aviões para sua necessidade.

Por exemplo, temos aviões de diferentes cores

e capacidades.

O cliente normalmente também

pode escolher pela empresa fabricante

(Embraer, Piper, Aviat, etc)

Aviao !

-Cor -Capacidade - Fabricante

Cor !

-Nome

Capacidade !

(Potência, Quantidade Passageiros)

Fabricante !

(Piper, Embraer, Aviate, Boeing, etc)

Isso mesmo e nossos aviões possuem um nome

e um prefixo que é sua identificação no Brasil.

Aviao !

-id -Nome -Cor

-Capacidade - Fabricante

Cor !

-Nome

Capacidade !

(Potência, Quantidade Passageiros)

Fabricante !

(Piper, Embraer, Aviate, Boeing, etc)

Exatamente, mas nosso cliente vai mesmo

querer pesquisar por Fabricante e nome da

aeronave.

Aviao !

-Prefixo -Nome -Cor

-Capacidade - Fabricante

Cor !

-Nome

Capacidade !

(Potência, Quantidade Passageiros)

Fabricante !

(Piper, Embraer, Aviate, Boeing, etc)

Repositório de aviões

buscarPorNome buscarPorFabricante

Aliás outra busca que quero é dado um avião quero saber quais os aviões com mesma

potência.

Creio que com esse nosso repositório fica mais

fácil de saber, né?

Aviao !

-Prefixo -Nome -Cor

-Capacidade - Fabricante

-AviõesComMesmaPotência

Cor !

-Nome

Capacidade !

(Potência, Quantidade Passageiros)

Fabricante !

(Piper, Embraer, Aviate, Boeing, etc)

Repositório de aviões

buscarPorNome buscarPorFabricante

public class Aviao {! private Long id; private String nome; ! private Fabricante fabricante; private Cor cor; private Capacidade capacidade;!}

!

public class Fabricante {! private String nome;! //getters & setters} !!!public class Cor {! private String nome;! //getters & setters} !!public class Capacidade {! private String potencia; private String quantidadePassageiro;! //getters & setters}

Repositório... BD? DAO? !

O que nosso cliente quer?

public class AviaoRepository {! List<Aviao> getTodosAvioes(); List<Aviao> getAvioesPorNome(String nome); List<Aviao> getAvioesPorFabricante(Fabricante fabricante); List<Aviao> getAvioesPorCapacidade(Capacidade capacidade); Aviao getAviaoPorId(Long id);!}

Como implementar o Repositório?

Poxa é isso mesmo que eu queria, está ficando

muito bom, porém esqueci que quero hangarar juntas

as aeronaves com a mesma potência.!

Model

Código

Model

Código

public class Aviao { //Códigos anteriores... public boolean possuemMesmaPotencia(Aviao outroAviao){ return this.capacidade.getPotencia().equals(outroAviao.getPotencia());!}

!

Domain-Driven Design

• Voltado (driven) totalmente ao problema a ser resolvido (domain)

• Ubiquitous Language

• Funciona muito bem com Agile

• Modelos ricos (não anêmicos)

• Nomes importam!

Não importa a tecnologia. O que importa é o domain.

eduardo.bregaida@br.experian.com http://javawora.blogspot.com

http://www.slideshare.net/eduardo.bregaida @bregaida

Obrigado!

top related