Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Palmas 2012
ADSON JOS HONORI DE MELO GERISVALDO DA COSTA MACEDO MRIO CSAR CARNEIRO FRANCO MAURO MARTINS LEAL
Trabalho apresentado s disciplinas Algoritmos e Estruturas de Dados, Anlise de Sistemas, Seminrio III, Desenvolvimento Orientado a Objetos I e Banco de Dados II da Universidade Norte do Paran - UNOPAR Prof(s). : Marcio Roberto Roberto Y. Nishimura Polyanna Gomes Merris Mozer
Palmas 2012
SUMRIO 1 2 2.1 2.1.1 2.1.1.1 2.1.1.2 2.1.1.3 2.1.1.4 2.1.2 2.2 2.3 2.4 3 INTRODUO .....................................................................................................3 DESENVOLVIMENTO .........................................................................................4 UML DIAGRAMA DE ATIVIDADES...............................................................4 CENRIO ATUAL .........................................................................................4 GERENCIAR DEVOLUO......................................................................4 GERENCIAR EMPRSTIMOS..................................................................5 MANTER LIVROS .....................................................................................6 MANTER USURIOS................................................................................7 NOVO CENRIO ..........................................................................................7 MODELO CONCEITUAL COM MRN APLICADO...........................................10 MAPEAMENTO OBJETO RELACIONAL .......................................................11 LISTA ORDENADA ........................................................................................16 CONCLUSO ....................................................................................................18
REFERNCIAS .........................................................................................................19
1 INTRODUO O analista de sistemas deve garantir o alinhamento entre tecnologia e estratgias organizacionais, os projetos de software devem conhecer o cenrio organizacional em um nvel suficiente, a ponto de avaliar e sugerir melhorias, ou mesmo reengenharia nos processos de negcio.
Este trabalho mostrar na prtica a importncia das tcnicas e conceitos da UML, atravs do diagrama de atividades, bem como a modelagem de dados na utilizao dos consagrados bancos de dados relacionais juntamente com a programao orientada a objetos, viabilizando o sucesso dos sistemas no que tange o alinhamento dos objetivos aos processos das organizaes.
2 DESENVOLVIMENTO
2.1 UML DIAGRAMA DE ATIVIDADES O diagrama de atividades, geralmente apresentado como parte da descrio funcional de um sistema, devido ao fato de especificar processos lgicos (atividades do sistema e dos fluxos de dados ou decises). Nele so apresentadas as relaes entre cada atividade de um determinado processo, em que podem ser vistas as relaes de dependncia entre essas atividades, e quem so os responsveis pelas suas execues. 2.1.1 CENRIO ATUAL Respeitando ao mximo o texto da proposta e abstraindo algumas situaes do cenrio atual da empresa sobre sua rotina de trabalho, estipulamos que o cliente chega loja e vai at as prateleiras, escolhe o exemplar que deseja e leva at o atendente para efetivar a locao. Ou ento, se a inteno devolver o(s) livro(s) na sua totalidade, solicita ao funcionrio a baixa do emprstimo. 2.1.1.1 GERENCIAR DEVOLUO
2.1.2 NOVO CENRIO Para o novo cenrio com as alteraes significativas no processo de devoluo fracionada e no de emprstimos, faremos tambm mudanas no fluxo de trabalho, abstrairemos que agora o cliente no tem mais acesso s prateleiras, e o funcionrio dever consultar o sistema a procura dos exemplares disponveis, para somente ento, buscar o livro.
Daremos nfase aos dois processos que sofreram alteraes significativas: emprstimo e devoluo.
Emprstimo:
funcionrio
autenticado
pertencente
ao
departamento de locaes consulta se o cliente cadastrado. No h mais a condio de pendncia, ou seja, havendo ou no emprstimos em aberto, permitido realizar um novo sem que o ltimo tenha sido finalizado. A multa ou relocao ser tratada no processo de devoluo, uma vez que no antigo processo o
cliente pagava na hora de efetivar o emprstimo e no h na proposta inicial aluso a multas ou relocaes automticas. O funcionrio consulta o livro solicitado pelo cliente, podendo faz-lo pelo ttulo ou autor. O sistema checa a disponibilidade e exibe os resultados. Informar a data do emprstimo. O sistema realiza o emprstimo e emite o comprovante.
Devoluo: funcionrio autenticado e do departamento de locaes consulta o sistema e exibe o emprstimo. Dever selecionar os exemplares e o sistema calcular e exibir o valor a pagar incluindo possveis atrasos. O funcionrio receber o valor e o sistema encerrar o emprstimo se for entregue todos os exemplares ou dar baixa nos itens de emprstimo.
10
2.2 MODELO CONCEITUAL COM MRN APLICADO O modelo relacional foi inventado pelo Dr. Codd e
subsequentemente mantido e aprimorado por Chris Date e Hugh Darwen como um modelo geral de dados.
A normalizao de dados uma srie de passos que se segue no projeto de um banco de dados que permite um armazenamento consistente e um eficiente acesso aos dados em um banco de dados relacional. Esses passos reduzem a redundncia de dados e as chances dos dados se tornarem inconsistentes.
Procuramos obedecer e respeitar todas as regras de negcios impostas na proposta, entretanto, depois de uma minuciosa anlise em grupo, assumimos algumas adaptaes visando melhorar a utilizao do software pelo usurio e nos preocupando em no engess-lo na modelagem.
Por exemplo, quanto ao cadastro de autores, a regra de negcio diz que um livro deve ter 1 ou vrios autores. Significa dizer, que ao se cadastrar um autor, obrigatoriamente, devemos relacion-lo a um livro pelo menos.
Imaginemos que um funcionrio comprou 200 livros de uma grande livraria e deseja cadastr-los antes mesmo de receb-los. Para isso, solicitou a outro funcionrio que fosse lanando os nomes dos autores para depois agilizar o trabalho de cadastro dos livros. Pela regra original isso no seria possvel!
Portanto, na nossa concepo de modelagem, deixamos em aberto esta possibilidade colocando a cardinalidade de (0,n) na entidade AUTOR, ou seja, pode-se cadastrar N autores e depois na tela de cadastro de livros ligamos livro a autor(es). Essa adaptao no fere a regra de negcios, pois ainda sim, um livro no pode ser includo sem um autor.
11
2.3 MAPEAMENTO OBJETO RELACIONAL Tcnica de desenvolvimento utilizada para reduzir a impedncia da programao orientada aos objetos utilizando bancos de dados relacionais. As tabelas do banco de dados so representadas atravs de classes e os registros de cada tabela so representados como instncias das classes correspondentes.
Com esta tcnica, o programador no precisa se preocupar com os comandos em linguagem SQL; ele ir usar uma interface de programao simples que faz todo o trabalho de persistncia.
A seguir, relacionamos as classes e seus respectivos cdigos gerados a partir de nosso DER.
12
Classe Pessoa =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classe_Pessoa { private int codigo; private string nome; private DateTime dat_nasc; public int Codigo { get { return codigo; } set { codigo = value; } } public string Nome { get { return nome.Trim().ToUpper(); } set { if ((value.Length > 70) || (value.Length < 5)) throw new Exception("o tamanho para este campo de 5 a 70 caracteres."); else nome = value; } } public DateTime Dat_nasc { get { return dat_nasc; } set { dat_nasc = value; } } } // fecha classe Pessoa } Classe Funcionario =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeFuncionario: classe_Pessoa { private int func_codigo; public int Func_codigo { get { return func_codigo; } set { func_codigo = value; } } } }
13
Classe Cliente =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeCliente : classe_Pessoa { private int cli_codigo; public int CLi_codigo { get { return cli_codigo; } set { cli_codigo = value; } } } }
Classe Autor =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeAutor: classe_Pessoa { private int aut_codigo; public int Aut_codigo { get { return aut_codigo; } set { aut_codigo = value; } } } }
Classe Livro =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classe_Livro { private int liv_codigo; private string liv_titulo; public int Liv_codigo { get { return liv_codigo; } set { liv_codigo = value; } } public string Liv_titulo { get
14
{ return liv_titulo.Trim().ToUpper(); } set { if (value.Length > 60) throw new Exception("Tamanho do nome else liv_titulo = value; } } // fecha public Liv_Codigo } // fecha classe livro } Classe Exemplar =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classe_Exemplar { private int exem_codigo; private string exem_status; public int Exem_codigo { get { return exem_codigo; } set { exem_codigo = value; } } public string Exem_status { get { return exem_status; } set { if (value.Length > 10) throw new Exception("o Status deve ter no mximo 10 caracters."); else exem_status = value; } } } // fecha classe exemplar } invlido.");
Classe Classificao =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeClassificacao {
15
private int cla_codigo; private double cla_valor; private string cla_tipo; public int Cla_codigo { get { return cla_codigo; } set { cla_codigo = value; } } public Double Cla_valor { get { return cla_valor; } set { if ((cla_valor.GetType() == typeof(Double))) { cla_valor = value; } else cla_valor = 0; } } public string Cla_tipo { get { return cla_tipo; } set { if ((value != "diamante") || (value != "ouro") ||(value != "prata") ||(value != "bronze") ) throw new Exception("erro no tipo da classificao"); else cla_tipo = value; } } } }
Classe Classificao =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeDepartamento { private int dep_codigo; private string dep_nome; public int Dep_codigo { get { return dep_codigo;} set { dep_codigo = value; } } public string Dep_nome { get { return dep_nome; } set { if (dep_nome.Length > 20)
16
throw mximo de 20"); else dep_nome = value; } } } } Classe Emprestimo =========================================== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Unopar { class classeEmprestimo { private int emp_codigo; private DateTime emp_datalocacao; private DateTime emp_datadevolucao; public int Emp_codigo { get { return emp_codigo; } set { emp_codigo = value; } } public DateTime Emp_datalocacao { get { return emp_datalocacao; } set { emp_datalocacao = value; } } public DateTime Emp_datadevolucao { get { return emp_datadevolucao.AddDays(5); } set { emp_datadevolucao = value; } } } } new Exception("Excedeu o limite de caracteres. Tamanho
2.4 LISTA ORDENADA Uma lista a coleo de elementos de mesmo tipo, dispostos linearmente, que podem ou no seguir uma organizao.
O cdigo abaixo escrito em C# solicita do usurio o tamanho da lista e depois ordena pela data de devoluo do filme.
17
using using using using System; System.Collections.Generic; System.Linq; System.Text;
namespace Unopar { class Program { static void Main(string[] args) { Console.Write("Quantos registros deseja inserir? "); int qtd = Int32.Parse(Console.ReadLine()); int i = 0; string[] cliente = new string[qtd]; DateTime[] dataEmprestimo = new DateTime[qtd]; while (i < qtd) { Console.Write("\nDigite o nome do usuario que fez a locao: "); cliente[i] = Console.ReadLine().ToUpper().Trim(); Console.Write("Data de locao (dd/mm/aaaa): "); dataEmprestimo[i] = DateTime.Parse(Console.ReadLine()); i++; } Console.WriteLine("\n\n==========================================="); int q = (cliente.Length) - 1; while (q >= 0) { DateTime dataDevolucao = dataEmprestimo[q].AddDays(5); Console.WriteLine("Cliente: \t" + cliente[q] + "\nData Empr: \t" + dataEmprestimo[q] + "\nData Devol: \t" + dataDevolucao + "\n"); q--; } Console.WriteLine("==========================================="); Console.ReadKey(); } } }
18
3 CONCLUSO O processo de modelagem do banco de dados merece destaque em nossa avaliao, pois exercemos a essncia de nossa profisso: a anlise. Foram bastante interessantes as discusses, reunies e ponderaes, medida que o modelo tomava forma. Ficou latente, que em projetos de sistemas, vrias cabeas pensantes trabalhando em colaborao so uma tima receita para construo de solues eficazes e consistentes.
Conclumos nosso trabalho com a certeza do dever cumprido. Estamos convictos da importncia de conhecermos bem os diversos benefcios trazidos pela correta aplicabilidade das ferramentas UML, bem como o domnio dos conceitos de banco de dados relacionais casados ao paradigma de orientao a objetos. A programao da FILA nos proporcionou a prtica de programao, to importante na concretizao dos sistemas modelados e pensados.
19
REFERNCIAS ASCENSIO, Ana Fernanda Gomes. Estrutura de Dados: algoritmos, anlise da complexidade e implementaes em Java e C/C++. So Paulo: Pearson Prentice Hall, 2010. NISHIMURA, Roberto Yukio. Banco de Dados II: sistemas. So Paulo: Pearson Prentice Hall, 2009. WIKIPEDIA: http://pt.wikipedia.org/wiki/Mapeamento_objeto-relacional Orientador Pedro Pedreira: https://sites.google.com/site/orientadorpedropereira/Home/fundamentos-deorientacao-a-objetos-e-uml/diagramas-de-classes