descadastro
site NCE
 
 
Projeto Orientado a Objetos
 
artigos publicados

Organizando a Lógica de Domínio em Aplicações OO (continuação)

 

Jonas Knopman, D.Sc.
Pesquisador NCE/UFRJ

   
 

j. Código fonte:
O código fonte em Java, Delphi e Visual Basic para as classes tabela Produto, Contrato e Receita e para os controladores CtrlCadastrarContrato e CtrlObterReceitas está disponível para download em http://equipe.nce.ufrj.br/jonas/conceito
Observe neste código:
· a utilização das classes controladoras. As classes controladoras manipulam os objetos de negócio (as classes tabela) e são o lugar ideal para tratar as regras de negócio (por exemplo, o valor de um contrato não pode ser inferior a R$ 1.000,00). A utilização das classes controladoras aumenta a probabilidade de reutilização dos objetos de negócio.
· que todo o código SQL é encapsulado nas classes tabela.
· nenhuma classe tabela faz JOINS de tabelas. A junção de informações provenientes de duas ou mais tabelas é feita em alto nível, através dos métodos disponíveis na interface das classes. Esta característica facilita a manutenção do software: uma alteração no esquema de uma tabela tem impacto somente na classe tabela associada.


6.2 Registrar Pagamento de Mensalidades

a. Descrição do Negócio
Em uma academia, a Atendente registra o pagamento de um aluno.
Inicialmente o sistema lista os alunos ativos, isto é, aqueles que tem um atraso máximo de 3 mensalidades.
A partir da lista dos alunos ativos a Atendente seleciona um aluno.
O sistema mostra as mensalidades em atraso para o aluno escolhido e calcula as multas a serem aplicadas.
A atendente registra o pagamento do mês mais antigo ainda em aberto.


b. Modelo Conceitual



c. Modelo de Casos de Uso

CSU05 – Registrar Pagamentos
Sumário: Este caso de uso permite ao Recepcionista lançar o pagamento de mensalidade feita pelo aluno e emitir um comprovante
Ator Primário: Recepcionista
Pré-Condição: Ator Recepcionista conectado ao sistema e autenticado
Fluxo Principal:
1. O caso de uso tem início quando o Ator Recepcionista decide lançar um novo pagamento de um aluno.
2. O sistema exibe a lista de matrículas dos alunos cadastrados e ativos
3. O Ator Recepcionista seleciona uma matrícula
4. O sistema exibe os dados: meses em aberto e valor a pagar (já incluídos multas ou descontos) do aluno selecionado
5. O Ator Recepcionista seleciona o mês a pagar
6. O sistema exibe os dados do pagamento: valor, desconto ou multa, total a receber e pede a confirmação do ator Recepcionista
7. O Ator Recepcionista confirma os dados do pagamento
8. O sistema confirma o pagamento e exibe o comprovante do mesmo com opção para impressão.
9. O caso de uso se encerra


d. Diagrama Lógico do Banco de Dados


e. Diagrama Físico do Banco de Dados



CREATE TABLE PacoteAtividades (
ID_Pacote            real NOT NULL,
valor                   real NULL,
PRIMARY KEY (ID_Pacote)
)

CREATE TABLE Aluno (
matricula           real NOT NULL,
ID_Pacote        real NULL,
nome                  varchar(20) NULL,
PRIMARY KEY (matricula),
FOREIGN KEY (ID_Pacote)
                          REFERENCES PacoteAtividades
)

CREATE TABLE Pagamento (
matricula             real NOT NULL,
dtReferencia           datetime NOT NULL,
dtPagamento          datetime NULL,
valor                     real NULL,
PRIMARY KEY (matricula, dtReferencia),
FOREIGN KEY (matricula)
                          REFERENCES Aluno
)

f. Diagrama de Seqüência



g. Diagrama de Classes



h. Código fonte:
O código fonte em Java e Visual Basic para as classes tabela Pagamento, PacoteAtividades e Aluno e para o controlador CtrlRegistrarPagamento está disponível para download em http://equipe.nce.ufrj.br/jonas/conceito


7. Conclusões
Este artigo apresenta uma alternativa para a organização da lógica de domínio em aplicações OO simples, que não requeiram soluções sofisticadas para gerenciar a complexidade do modelo. A solução proposta permite encapsular dados e comportamento em objetos e, ao mesmo tempo, tirar proveito do poder de um banco de dados relacional. Para o leitor interessado em se aprofundar no assunto, o NCE/UFRJ oferece vários cursos na área. Maiores detalhes em http://www.nce.ufrj.br.


8. Referências

Martin Fowler, Patterns of Enterprise Application Architecture, Addison Wesley, 2003.

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Addison-Wesley Professional, 1995.

 

 






 
         
 
    página principal
 
Núcleo de Computação Eletrônica
Universidade Federal do Rio de Janeiro
Prédio do Centro de Ciências Matemáticas e da Natureza Bloco C
Caixa Postal: 2324 - CEP: 20.010-974
Cidade Universitária - Ilha do Fundão, Rio de Janeiro - RJ Tel: 2598-3333