Você está na página 1de 18

Técnicas de Programação Faculdade de Informática/PUCRS 1

TÉCNICAS DE
PROGRAMAÇÃO
Unidade 05
A Camada de Negócios – padrões
arquiteturais
Técnicas de Programação Faculdade de Informática/PUCRS 2

CAMADA DE NEGÓCIOS
Técnicas de Programação Faculdade de Informática/PUCRS 3

Arquitetura em Camadas
• Camadas usuais de um sistema em 3-camadas:
• Camada de apresentação ou de interface com o usuário
• Interação com o usuário
• Responsável por apresentar informações para o usuário e interpretar
comandos do usuário em ações sobre a camada de domínio
• Ex.: uma interface de cliente rico em Swing do Java
• Camada de negócios
• Objetos de software representando conceito do domínio que satisfazem
requisitos da aplicação
• Envolve cálculos, regras de validações, regras de negócio
• Camada de persistência ou de dados
• Objetos de propósito geral e subsistemas que fornecem serviços para a
aplicação
• Geralmente são independentes da aplicação e reusáveis entre diversos
sistemas
• Ex.: uma fonte de dados a partir de um SGBD relacional
Técnicas de Programação Faculdade de Informática/PUCRS 4

Camada de Negócio
• A camada de negócio pode ser estruturada sobre
diferentes padrões de acordo com (Fowler 2008), dentre
eles:
• Transaction Script
• Organiza lógica de negócio em procedimentos, no qual cada
procedimento realiza uma requisição da camada de apresentação
• Domain Model
• Modelo de objetos do domínio que incorpora comportamento e dados

• A escolha do padrão reside principalmente na análise de


quão complexo é o domínio sendo modelado
• Transaction Script pode ser utilizado para domínios mais simples
• Domain Model para domínios com regras de negócio mais
complexas
Técnicas de Programação Faculdade de Informática/PUCRS 5

Padrão Transaction Script


• Descrição:
• Organiza lógica de negócio em procedimentos, no qual cada
procedimento realiza uma requisição da camada de apresentação
Técnicas de Programação Faculdade de Informática/PUCRS 6

Padrão Transaction Script


• Funcionamento:
• Um transaction script é essencialmente um procedimento que
• Recebe dados da camada de apresentação
• Processa os dados com validações e cálculos
• Envia/recebe dados de um banco de dados
• Invoca operações de outros sistemas
• Retorna dados para a camada de apresentação
• A organização fundamental é de um procedimento único para cada
ação de negócio que o usuário deseja
• O procedimento pode ser quebrado em subrotinas
• Usualmente uma classe possui diversos procedimentos
transactions scripts da mesma área de negócio
• Ex.: em um sistema de reservas de hotéis
• Procedimento efetuarReserva realiza a verificação de disponibilidade
de quarto, calcula as taxas e atualiza a base de dados
Técnicas de Programação Faculdade de Informática/PUCRS 7

Padrão Transaction Script


• Vantagens:
• Modelo procedural simples
• Eficientemente encapsula a lógica de transação do sistema em um
roteiro facilmente compreensível
• Funciona bem com camadas de persistência simples para acesso
a bases de dados relacionais
• Desvantagens:
• Aumento da complexidade de domínio tende a gerar duplicação de
código em diversos procedimentos
Técnicas de Programação Faculdade de Informática/PUCRS 8

Padrão Transaction Script


• Exemplo: • CadastroPessoasV4
• Analise o projeto
CadastroPessoasV4
• Quais as características da
implementação?
Técnicas de Programação Faculdade de Informática/PUCRS 9

Padrão Transaction Script


• Exemplo: • CadastroPessoasV4
• Um único objeto
CadastroPessoasProces
samento realiza todas as
operações necessárias
de negócio
• Pode utilizar objetos
adicionais para completar
as operações
Técnicas de Programação Faculdade de Informática/PUCRS 10

Padrão Domain Model


• Descrição:
• Modelo de objetos do domínio que incorpora comportamento e
dados
Técnicas de Programação Faculdade de Informática/PUCRS 11

Padrão Domain Model


• Funcionamento:
• Conjunto de objetos, cada qual com seus dados e operações, que
interagem para a solução do problema
• Ao contrário do Transaction Script não existe um único
procedimento que encapsula todas as tarefas; as
responsabilidades são compartilhadas entre os diferentes objetos
do modelo de domínio construído
Técnicas de Programação Faculdade de Informática/PUCRS 12

Padrão Domain Model


• Vantagens:
• Modelo de objetos mais próximo dos conceitos do domínio do
negócio
• Modelo orientado a objetos possui diferentes Padrões de Projeto
que tratam lógica complexa de maneira bem-organizada
• Melhor separação de responsabilidades
• Possibilidade de reuso, testes unitários, etc
• Desvantagens:
• Projeto de classes mal feito tende a causar problemas em larga
escala
• Quebra de paradigmas entre o modelo de objetos e o modelo
relacional de um banco de dados relacional deve ser resolvido na
camada de persistência
Técnicas de Programação Faculdade de Informática/PUCRS 13

O Exemplo
• Um sistema é usado para o cadastramento de
contribuintes (pessoas físicas) e cálculo do imposto de
renda. O cálculo pode ser feito visando a declaração
completa ou a declaração simplificada. Os dados
necessários para a declaração completa são:
• Nome*
• CPF*
• Idade**
• Numero de dependentes**
• Contribuição previdenciária oficial***
• Total de rendimentos***
*Campos obrigatórios para todos os contribuintes
**Campos obrigatórios para os contribuintes que fazem declaração completa
***Campos obrigatórios para permitir o cálculo do imposto (qualquer
modalidade)
Técnicas de Programação Faculdade de Informática/PUCRS 14

Cálculo do imposto (declaração completa)


• A base de cálculo é obtida descontando-se do total de rendimentos a
contribuição previdenciária oficial.
• Em função da idade e do número de dependentes do contribuinte deve-
se aplicar um desconto sobre a base de cálculo.
• Para contribuintes com menos de 65 anos o desconto é de:
• 2% se o contribuinte tem até 2 dependentes
• 3,5% se contribuinte tem entre 3 e 5 dependentes
• 5% se o contribuinte tem mais de 5 dependentes
• Para contribuintes com 65 anos ou mais o desconto é de:
• 3% se o contribuinte tem até 2 dependentes
• 4,5% se contribuinte tem entre 3 e 5 dependentes
• 6% se o contribuinte tem mais de 5 dependentes
• O imposto a pagar é obtido a partir da base de cálculo:
• Se a base de cálculo é de até R$ 12000,00 então o contribuinte está isento
(imposto a pagar zero).
• Se a base de cálculo for maior que R$ 12000,00 e inferior a R$ 24000,00, então o
imposto a pagar corresponde a 15% do valor da base de cálculo que excede o valor
da faixa anterior.
• Se a base de cálculo for maior ou igual a R$ 24000,00, então o imposto a pagar é
equivalente ao imposto devido na faixa anterior mais 27,5% do valor da base de
cálculo que excede a faixa anterior.
Técnicas de Programação Faculdade de Informática/PUCRS 15

Cálculo do imposto (decl. simplificada)


• A base de cálculo é obtida descontando-se do total de
rendimentos a contribuição previdenciária oficial.
• Aplica-se um desconto único de 5% sobre a base de
cálculo.
• O imposto a pagar é obtido a partir da base de cálculo:
• Se a base de cálculo é de até R$ 12000,00 então o contribuinte
está isento (imposto a pagar zero).
• Se a base de cálculo for maior que R$ 12000,00 e inferior a R$
24000,00, então o imposto a pagar corresponde a 15% do valor da
base de cálculo que excede o valor da faixa anterior.
• Se a base de cálculo for maior ou igual a R$ 24000,00, então o
imposto a pagar é equivalente ao imposto devido na faixa anterior
mais 27,5% do valor da base de cálculo que excede a faixa
anterior.
Técnicas de Programação Faculdade de Informática/PUCRS 16

Arquitetura
• A figura ao lado
apresenta a
arquitetura do
sistema através de
um diagrama de
pacotes.
Técnicas de Programação Faculdade de Informática/PUCRS 17

Padrões arquiteturais x padrões de


projeto
• Como já foi visto:
• Padrões arquiteturais:
• Relacionados ao projeto em larga escala e não refinado.
• Normalmente aplicados durante as primeiras interações
• Ex: padrão “camadas”
• Padrões de projeto:
• Relacionados ao projeto em pequena e média escala dos objetos e
frameworks
• Na seqüência iremos analisar, através de um exemplo,
como alguns dos padrões propostos por Gama et al
ajudam a manter a separação entre as camadas do
padrão arquitetural “camadas”.
Técnicas de Programação Faculdade de Informática/PUCRS 18

Você também pode gostar