Escolar Documentos
Profissional Documentos
Cultura Documentos
PASSO FUNDO
2008
3
BANCA EXAMINADORA
________________________________________________________________________
Prof. Esp. João Roberto Telles – Senac / RS.
Orientador
_________________________________________________________________________
Prof. MSc. Josué Toebe – Senac / RS.
__________________________________________________________________________
Prof. Esp. Álvaro Nunes Lemos Melo – Senac / RS.
4
com seu espírito inovador. Aos Colegas e Amigos FELIPE THESARI LARA
durante essa jornada. A todos os amigos que estiveram comigo nessa caminhada.
RESUMO
Este trabalho de conclusão de curso consiste no desenvolvimento de um sistema
de informação para a gestão de Vídeos-Locadora, sendo que este foi desenvolvido tomando
por base os conceitos e modelos de sistemas de informação, sendo seu principal objetivo
agilizar o processo de locação de uma mídia de vídeo. Na modelagem deste sistema fez-se uso
da UML. Para o seu desenvolvimento, foi optado pela linguagem de programação Java, por
ser uma linguagem baseada nos conceitos de orientação a objetos, utilizou-se também os
padrões MVC. O Sistema é executado a partir de uma plataforma desktop, independente do
sistema operacional utilizado. Para o armazenamento de dados, foi utilizado o banco de dados
PostgreSQL
ABSTRACT
LISTA DE ILUSTRAÇÕES
SUMÁRIO
1 INTRODUÇÃO..................................................................................................................... 12
1.1 Motivação ...................................................................................................................... 12
1.2 Objetivo Geral................................................................................................................ 12
1.3 Objetivos Específicos .................................................................................................... 13
2 REVISÃO BIBLIOGRÁFICA E FUNDAMENTAÇÃO TEÓRICA................................... 15
2.1 Orientação a Objetos...................................................................................................... 15
2.2 Java ................................................................................................................................ 18
2.3 IDE NetBeans ................................................................................................................ 18
2.4 UML............................................................................................................................... 20
2.4.1 Diagrama de Classes .............................................................................................. 21
2.5 ArgoUML ...................................................................................................................... 25
2.6 JDBC (Java Database Connectivity).............................................................................. 26
2.7 Hibernate........................................................................................................................ 27
2.8 MVC .............................................................................................................................. 27
2.9 PostgreSQL.................................................................................................................... 28
2.9.1 pgAdmin III............................................................................................................ 29
2.10 JasperReport / iReport 3.x ........................................................................................... 30
2.11 Engenharia de Software ............................................................................................... 31
2.11.1 Processo de Engenharia de Software ................................................................... 31
2.11.2 Modelos de Processo de Software........................................................................ 32
2.12 Padrões de Projeto de Software ................................................................................... 33
2.12.1 História dos Padrões de Projeto ........................................................................... 34
2.12.2 Padrões GoF ......................................................................................................... 35
3 DOMÍNIO DA APLICAÇÃO............................................................................................... 37
3.1 A Vídeo-Locadora ......................................................................................................... 37
3.2 O Funcionamento da Vídeo-Locadora........................................................................... 38
4 ANÁLISE E DESENVOLVIMENTO DO SISTEMA ......................................................... 41
4.1 Diagrama de Entidade-Relacionamento ........................................................................ 41
4.2 Dicionário de dados ....................................................................................................... 42
4.3 Diagrama de Classes Parte 1.......................................................................................... 43
4.4 Diagrama de Classes Parte 2.......................................................................................... 46
4.5 Diagramas de Caso de Uso ............................................................................................ 49
4.6 Diagramas de Seqüência................................................................................................ 51
4.7 Interfaces do Sistema JMA ............................................................................................ 53
5 CONSIDERAÇÕES FINAIS ................................................................................................ 57
6 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................. 59
7 ANEXO A ............................................................................................................................. 61
12
1 INTRODUÇÃO
1.1 Motivação
Quanto a consultas:
• Consulta ao acervo;
• Consulta de filmes já assistidos pelo cliente;
• Consulta de mídias locadas no período;
Cada objeto armazena seus atributos e métodos e é representado por uma classe,
classes estas que normalmente são modeladas através da linguagem UML (Linguagem de
Modelagem Unificada), uma classe é responsável por determinar o comportamento (definido
nos métodos) e estados possíveis (definido nos atributos) de seus objetos, assim como o
relacionamento com outros objetos.
Algumas linguagens de programação foram criadas tomando por base os
conceitos de orientação a objetos, outras, tiveram estes conceitos agregados ao seu contexto,
linguagens estas que possuem suporte a orientação a objetos
Exemplo de linguagens que criadas com base nos conceitos de orientação a
objetos:
• Smalltalk;
• Python;
• Ruby;
• C++;
• Object Pascal;
• Java;
• C#;
2.2 Java
1
bytecode: linguagem intermediária resultado da compilação de um código java, a qual é interpretada pelas JVMs
2
unicode: padrão que permite computadores representar e manipular textos em qualquer sistema de escrita existente
3
API: conjunto de rotinas e padrões estabelecidos por um software para utilização de suas funcionalidades
19
2.4 UML
4
Metamodelo: Metamodelo é a representação de outra representação já existente.
21
5
Ferramentas case: ferramentas baseada em computadores que auxiliam atividades de engenharia de software
22
2.5 ArgoUML
O ArgoUML foi a ferramenta case escolhida para uso por ser uma ferramenta
livre, de código aberto, muito bem conceituada por desenvolvedores que utilizam Linux.
2.7 Hibernate
2.8 MVC
software, mas o MVC abrange mais da arquitetura de uma aplicação do que é típico para um
padrão de projeto.
2.9 PostgreSQL
6
What You See Is What You Get - O que você vê é o que você obtém
31
• Padrões Estruturais
o Adapter;
o Bridge;
o Composite;
o Decorator;
o Façade;
o Flyweight;
o Proxy;
• Padrões Comportamentais
o Chain of Responsability;
o Command;
o Interpreter;
36
o Iterator;
o Mediator;
o Memento;
o Observer;
o State;
o Strategy;
o Template Method;
o Visitor;
37
3 DOMÍNIO DA APLICAÇÃO
3.1 A Vídeo-Locadora
7
software de prateleira: pacote fechado de software, não personalizado por cliente
38
• Nome;
• Endereço;
• Telefone;
• E-mail;
• Possui autorizados;
• Etc;
Após analisar este e outros sistemas, foi detectada uma grande necessidade do
mercado não somente local, mas também regional e estadual, o que levou ao desenvolvimento
do JMA – Sistema de Vídeo-Locadora, um software que visa acima de tudo a praticidade na
sua utilização.
Com a implantação do JMA, o cliente terá a sua disposição um software rápido,
que utiliza tecnologias de ponta no seu funcionamento, não esquecendo a simplicidade no seu
uso, visando assim uma maior praticidade e agilidade para o cliente no seu uso diário.
41
A seguir, serão detalhados alguns dos diagramas que foram utilizados para o
desenvolvimento do JMA – Sistema de Vídeo-Locadora.
• Descrição de objetos;
• Integridade de restrições;
• Informação de verificação;
• Alocações de espaço;
código do tipo seqüencial representando o código da mídia física, por exemplo o dvd, o
atributo ite_titulo representa o título da mídia, no atributo ite_datacompra será armazenado a
data de compra do item (mídia), o atributo ite_locado é um atributo do tipo Boolean, ou seja,
é um atributo que pode receber apenas dois valores, verdadeiro ou falso, o atributo fil_codigo
faz referencia a classe Filme, trazendo para a classe Item atributos como a duração do filme
incluído na mídia através do atributo fil_duracaominutos da classe Filme, o Gênero e a
Categoria a qual esta mídia esta ligada, já no atributo for_codigo, será registrado o valor
correspondente ao código do fornecedor da mídia a ser persistida.
Para a classe ItemLocacao, temos iteloc_dataprevistadevolucao,
iteloc_datadevolucao, iteloc_diasatrazo e iteloc_valordiaria como atributos normais e
loc_codigo e ite_codigo como chaves estrangeiras e primárias simultaneamente, onde o
atributo loc_codigo representa o código da locação proveniente da classe Locacao, o atributo
ite_codigo, referencia ao código do item na classe Item, os atributos
iteloc_dataprevistadevolucao e iteloc_datadevolucao, são atributos do tipo data, os quais irão
receber respectivamente a data prevista para a devolução do item à locadora e a data efetiva
da devolução do item, permitindo assim calcular através do atributo iteloc_diasatrazo o valor
a ser cobrado pela locação, armazenando o valor a ser cobrado no atributo iteloc_valordiaria.
46
dados serem restritos a 27 estados no caso do Brasil, esses dados serão inseridos na
implantação do sistema, diretamente no banco de dados do cliente, sendo que o atributo
est_codigo representa o código do estado a ser cadastrado, o atributo est_nome representa o
nome do estado que será cadastrado, o atributo est_abreviatura ira receber os dados referentes
a abreviatura do nome do estado, atributo esse que será utilizado nos relatórios do JMA.
Na classe Cidade, temos como seus atributos: cid_codigo, cid_nome e est_codigo,
onde cid_codigo é um código do tipo seqüencial representando o código da cidade que esta
sendo cadastrada no JMA – Sistema de Vídeo-Locadora, o atributo cid_nome, representa o
nome da cidade em questão, e o atributo est_codigo é um atributo do tipo chave estrangeira
que representa o estado do qual esta cidade faz parte.
A classe Pessoa, é uma classe abstrata, e como seus atributos temos: pes_codigo,
pes_nome, pes_endereco, pes_complemento, pes_bairro, pes_telefone, pes_cep, pes_email,
pes_datacadastro, cid_codigo. Para o atributo pes_codigo é atribuído um valor seqüencial e
único, este sendo gerado automaticamente através do banco de dados PostgreSQL, o atributo
pes_nome referencia o nome do cliente(PF)/fornecedor(PJ), neste ponto ainda não
especificado, os atributos pes_endereco, pes_complemento, pes_bairro e pes_cep são
preenchidos com valores correspondentes ao endereço da PF/PJ, no atributo pes_telefone é
persistido o valor correspondente ao telefone da PF/PJ, no atributo pes_email será persistido o
e-mail da PF/PF, no atributo pes_datacadastro será armazenado uma data que por padrão será
a data atual, podendo esta ser alterada de acordo com a necessidade do cliente, na classe
pessoa o atributo cid_codigo representa uma chave estrangeira de ligação com a tabela cidade,
vinculando assim uma PF/PJ a uma cidade.
A classe Fornecedor, é uma classe do tipo extends, a qual é uma extensão da
classe Pessoa, especificando assim que a classe Fornecedor armazenará os dados referentes à
apenas os cadastros de Pessoas Jurídicas do JMA. Nesta classe temos os atributos
for_inscricaoestadual, for_cnpj, for_codigo, onde o atributo for_inscricaoestadual armazenará
dados referentes a inscrição estadual dos fornecedores. O atributo for_cnpj será responsável
por armazenar o valor correspondente ao CNPJ dos fornecedores, e o atributo for_codigo que
faz referência a classe pessoa através de vinculação de chave estrangeira.
Temos também a classe Cliente, que também é uma classe do tipo extends, sendo
uma extensão da classe Pessoa, especificando que a classe Cliente fará o armazenamento
exclusivo de dados correspondente aos cadastros de Pessoas Físicas. A classe Cliente tem
48
No próximo diagrama de caso de uso, fica claro o tratamento da locação e/ou devolução de
uma mídia.
botão “Gravar”.
5 CONSIDERAÇÕES FINAIS
6 REFERÊNCIAS BIBLIOGRÁFICAS
MEDEIROS, E. S. Desenvolvendo Software com UML 2.0: Definitivo, 1ª ed. Makron Books,
2004
DEITEL,H. M;DEITEL,P.J. Java: como programar. 6.ed. Porto Alegre: Bookman, 2006.
RAMOS, Ricardo Argenton. Treinamento Prático em UML. 1. ed. São Paulo: Digerati, 2006.
Disponível em :
http://www.hibernate.org/hib_docs/v3/reference/en/pdf/hibernate_reference.pdf capturado em
30 de setembro de 2008.
60
7 ANEXO A
Descrição
Descrição do Modelo PHTAZ
Nome PHTAZ
Código PHTAZ
DBMS PostgreSQL 8
Comment
Database <phtaz>
itemlocacao itemlocacao
Locação locacao
Pessoa pessoa
Reserva reserva
Usuário usuario
Tabela assistidos
Descrição da Tabela assistidos
Nome assistidos
Código assistidos
Tabela ator
Descrição da Tabela ator
Nome ator
63
Código ator
Tabela atorfilme
Descrição da Tabela atorfilme
Nome atorfilme
Código atorfilme
Tabela autorizado
Descrição da Tabela autorizado
Nome autorizado
Código autorizado
Tabela categoria
Descrição da Tabela categoria
Nome categoria
65
Código categoria
Tabela cidade
Descrição da Tabela cidade
Nome cidade
Código cidade
Nome Código
cid_codigo cid_codigo
cid_nome cid_nome
est_codigo est_codigo
Tabela cliente
Descrição da Tabela cliente
Nome cliente
Código cliente
cli_rg cli_rg
cli_datanascimento cli_datanascimento
cli_limitecredito cli_limitecredito
cli_saldo cli_saldo
cli_ativo cli_ativo
cli_codigo cli_codigo
Tabela estado
Descrição da Tabela estado
Nome estado
Código estado
Tabela filme
Descrição da Tabela filme
68
Nome filme
Código filme
Tabela fornecedor
Descrição da Tabela fornecedor
Nome fornecedor
Código fornecedor
Filha
pfk_for_ite_codigo pfk_for_ite_codigo item for_codigo
Tabela genero
Descrição da Tabela genero
Nome genero
Código genero
Tabela item
Descrição da Tabela item
Nome item
Código item
Tabela itemlocacao
Descrição da Tabela itemlocacao
Nome itemlocacao
Código itemlocacao
Tabela locacao
Descrição da Tabela locacao
Nome locacao
Código locacao
Tabela pessoa
Descrição da Tabela pessoa
Nome pessoa
Código pessoa
Filha Estrangeira
pfk_cli_pes_codigo pfk_cli_pes_codigo cliente cli_codigo
pfk_pes_codigo_fornecedor pfk_pes_codigo_fornecedor fornecedor for_codigo
Tabela reserva
Descrição da Tabela reserva
Nome reserva
Código reserva
Tabela usuario
Descrição da Tabela usuario
Nome usuario
Código usuario
Lista de Referencias
75
Descrição fk_ato_codigo
Descrição da chave fk_ato_codigo
76
Nome fk_ato_codigo
Código fk_ato_codigo
Tabela Filha atorfilme
Tabela Pai ator
Colunas Chave Estrangeira ato_codigo
Referência fk_cat_codigo
Descrição da chave fk_cat_codigo
Nome fk_cat_codigo
Código fk_cat_codigo
Tabela Filha filme
Tabela Pai categoria
Colunas Chave Estrangeira cat_codigo
Referência fk_cid_codigo
Descrição da chave fk_cid_codigo
Nome fk_cid_codigo
Código fk_cid_codigo
Tabela Filha pessoa
Tabela Pai cidade
Colunas Chave Estrangeira cid_codigo
cid_codigo cid_codigo
Referência fk_est_codigo
Descrição da chave fk_est_codigo
Nome fk_est_codigo
Código fk_est_codigo
Tabela Filha cidade
Tabela Pai estado
Colunas Chave Estrangeira est_codigo
Referência fk_fil_codigo
Descrição da chave fk_fil_codigo
Nome fk_fil_codigo
Código fk_fil_codigo
Tabela Filha atorfilme
Tabela Pai filme
Colunas Chave Estrangeira fil_codigo
Referência fk_gen_codigo
Descrição da chave fk_gen_codigo
Nome fk_gen_codigo
Código fk_gen_codigo
Tabela Filha filme
Tabela Pai genero
78
Referência pfk_aut_codigo
Descrição da chave pfk_aut_codigo
Nome pfk_aut_codigo
Código pfk_aut_codigo
Tabela Filha locacao
Tabela Pai autorizado
Colunas Chave aut_codigo
Estrangeira
Referência pfk_cli_cod
Descrição da chave pfk_cli_cod
Nome pfk_cli_cod
Código pfk_cli_cod
Tabela Filha assistidos
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo
Referência pfk_cli_cod_res
Descrição da chave pfk_cli_cod_res
Nome pfk_cli_cod_res
Código pfk_cli_cod_res
Tabela Filha reserva
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo
Referência pfk_cli_loc_codigo
Descrição da chave pfk_cli_loc_codigo
Nome pfk_cli_loc_codigo
Código pfk_cli_loc_codigo
Tabela Filha locacao
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo
Referência pfk_cli_pes_codigo
Descrição da chave pfk_cli_pes_codigo
Nome pfk_cli_pes_codigo
Código pfk_cli_pes_codigo
Tabela Filha cliente
Tabela Pai pessoa
Colunas Chave cli_codigo
Estrangeira
80
Referência pfk_fil_codigo
Descrição da chave pfk_fil_codigo
Nome pfk_fil_codigo
Código pfk_fil_codigo
Tabela Filha item
Tabela Pai filme
Colunas Chave Estrangeira fil_codigo
Referência pfk_for_ite_codigo
Descrição da chave pfk_for_ite_codigo
Nome pfk_for_ite_codigo
Código pfk_for_ite_codigo
Tabela Filha item
Tabela Pai fornecedor
Colunas Chave Estrangeira for_codigo
Referência pfk_ite_codigo
Descrição da chave pfk_ite_codigo
Nome pfk_ite_codigo
81
Código pfk_ite_codigo
Tabela Filha assistidos
Tabela Pai item
Colunas Chave Estrangeira ite_codigo
Referência pfk_ite_codigo_il
Descrição da chave pfk_ite_codigo_il
Nome pfk_ite_codigo_il
Código pfk_ite_codigo_il
Tabela Filha itemlocacao
Tabela Pai item
Colunas Chave ite_codigo
Estrangeira
Referência pfk_ite_codigo_res
Descrição da chave pfk_ite_codigo_res
Nome pfk_ite_codigo_res
Código pfk_ite_codigo_res
Tabela Filha reserva
Tabela Pai item
Colunas Chave ite_codigo
Estrangeira
Referência pfk_loc_codigo
Descrição da chave pfk_loc_codigo
Nome pfk_loc_codigo
Código pfk_loc_codigo
Tabela Filha itemlocacao
Tabela Pai locacao
Colunas Chave Estrangeira loc_codigo
Referência pfk_pes_cli_aut_codigo
Descrição da chave pfk_pes_cli_aut_codigo
Nome pfk_pes_cli_aut_codigo
Código pfk_pes_cli_aut_codigo
Tabela Filha autorizado
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo
Referência pfk_pes_codigo_fornecedor
Descrição da chave pfk_pes_codigo_fornecedor
Nome pfk_pes_codigo_fornecedor
Código pfk_pes_codigo_fornecedor
Tabela Filha fornecedor
83
Lista de Usuários
Nome Código
postgres postgres
Usuário postgres
Descrição do usuário postgres
Nome Postgres
Código Postgres
Locação locacao
Pessoa pessoa
Reserva reserva
Usuário Usuário