Download - Trabalho Individual 3º semestre - UNOPAR
SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
WILLAMY CHARLLES PEIXOTO OLIVEIRA ATIVIDADE INTERDISCIPLINAR INDIVIDUAL 3º SEMESTRE:
Estrutua de Dados do tipo Pilha e Fila e seus Encadeamentos e suas Vantagens, Banco de Dados e Conceitos ACID e Programação
OO, Significado de ORM e Diagrama de Atividade
Juazeiro 2012
WILLAMY CHARLLES PEIXOTO OLIVEIRA ATIVIDADE INTERDISCIPLINAR INDIVIDUAL 3º SEMESTRE:
Estrutua de Dados do tipo Pilha e Fila e seus Encadeamentos e suas Vantagens, Banco de Dados e Conceitos ACID e Programação
a OO, Significado de ORM e Diagrama de Atividade
Trabalho de Conclusão da Unidade, apresentado à Universidade Norte do Paraná - UNOPAR, como requisito parcial para a obtenção de média bimestral nas atividades interdisciplinares do 3º Semestre.
Orientadores: Professora Polyanna P. G. Fabris Professor Anderson Macedo
Professor Roberto Nishimura Professor Merris Mozer
Juazeiro 2012
SUM�RIO 1 – RESUMO.................................................................................................................3
2 – INTRODUÇÃO.........................................................................................................4
3 – OBJETIVO...............................................................................................................5
4 – DESENVOLVIMENTO.............................................................................................6
4.1 – ESTRUTURA DE DADOS...............................................................................6
4.2 – BANCO DE DADOS E CONCEITOS ACID...................................................12
4.3 – BANCO DE DADOS E OO(ORIENTAÇÃO A OBJETO)................................13
4.4 – ORM (OBJECT RELATIONAL MAPPING).....................................................15
4.5 – FERRAMENTA PARA FAZER ORM..............................................................17
4.6 – DIAGRAMA DE ATIVIDADE..........................................................................18
5 – CONCLUSÃO.......................................................................................................20 REFERÊNCIAS...........................................................................................................21
3 1 – RESUMO
Este trabalho tem a finalidade de apresentar técnicas de
desenvolvimento de um sistema da informação, bem definido e a criação de um banco
de dados eficiente, sem redudância de dados. Apresentando outras técnicas de
aprimoramento, como diagramas e ferramentas de Banco de Dados(ORM).
4 2– INTRODUÇÃO
Apresentarei conceitos essenciais para desenvolver um sistema com
eficiência e qualidade atendendo as necessidades do cliente e agilizando o processo
da criação do mesmo. Abordarei recursos como: Organização de dados, ferramentas
de Banco de Dados(ORM), bem como os conceitos de modelos de diagramas de
atividades e um banco de dados mais ágil.
��
3 – OBJETIVO Familiarizar o cliente com alguns dos conceitos básicos de programação e funcionalidade de um banco de dados bem organizado.
��
4 - DESENVOLVIMENTO
4.1 – ESTRUTURA DE DADOS
Pilhas e Filas
Armazenamento seqüencial: Ideal quando inserções e remoções não acarretam
movimentação de nós, o que ocorre se os elementos a serem inseridos e removidos
estão em posições seqüenciais, como a primeira ou a última posição. Pilhas e filas
satisfazem tais condições.
Pilhas
Tipo Abstrato de dados com a seguinte característica:
O último elemento a ser inserido é o primeiro a ser retirado/ removido
(LIFO – Last in First Out)
Analogia: pilha de pratos, livros, etc.
Utiliza-se indicadores especiais, denominados ponteiros, para o acesso a posição
selecionadas. No caso da pilha, usa-se apenas um ponteiro, o ponteiro topo, pois as
inserções e remoções são executadas na mesma extremidade da lista.
Imagens Ilustrativas:
��
Filas
Fila é uma estrutura de dados onde as inserções são realizadas no final e as
remoções no início.
Filas exigem uma implementação mais elaborada. São necessários dois ponteiros:
início da fila (I) e retaguarda (R). Isso porque na fila as inserções são feitas sempre no
final da fila e as remoções sempre no início da fila. Para a inserção de um elemento,
move-se o ponteiro R; para a retirada, move-se o ponteiro I. A fila vazia é
representada por I = R = 0.
Imagem Ilustrativa:
ALOCAÇÃO DINÂMICA - LISTAS SIMPLESMENTE ENCADEADAS
As estruturas com alocação dinâmica possuem um componente importante que
permite “unir” cada “pedaço” de memória que for sendo alocado durante a execução
do programa. Este componente é o PONTEIRO, que permite encadear diferentes
blocos de memória, formando o que denominamos de estruturas de dados
��
encadeadas, onde destacam-se as estruturas dos seguintes tipos: Listas
Simplesmente Encadeadas eListas Duplamente Encadeadas.
Estas estruturas irão nos permitir implementar inclusive as estruturas
anteriormente estudadas, ou seja, PILHAS, FILAS e DEQUES podem ser
implementados utilizando como base para o armazenamento dos dados uma estrutura
encadeada do tipo LISTA ENCADEADA.
Abaixo apresentamos um esquema das principais estruturas encadeadas
citadas acima:
1) Listas Simplesmente Encadeadas: Os nodos possuem apenas 1 (um) elo de
encadeamento. Só pode ser percorrida em um sentido.
Esquema:
2) Listas Duplamente Encadeadas: Os nodos possuem 2 (dois) elos de
encadeamento, possibilitando que a lista seja percorrida nos dois sentidos.
Esquema:
LISTAS SIMPLESMENTE ENCADEADAS
Uma lista simplesmente encadeada deverá ser constituída obrigatoriamente dos
seguintes elementos:
- NODO: Registro de dados contendo um (ou mais) campo(s) para armazenar os
dados e um campo que será do tipo “ponteiro para o próprio nodo”
(elo/encadeamento);
- INÍCIO: Ponteiro que irá preservar (apontar) o nodo inicial da Lista Encadeada. Este
��
ponteiro é indispensável para que seja possível localizar os dados da lista
simplesmente encadeada na memória. Se o início da lista for perdido, toda a lista será
perdida!
Além destes elementos obrigatórios, poderemos ainda ter um elemento
opcional que é o ponteiro indicando o FINAL da lista (aponta para o último nodo da
lista encadeada). O ponteiro para o final da lista pode ser particularmente útil se
estivermos interessados em inserir novos nodos no final da lista, sem ter que
obrigatoriamente percorrer toda a lista para alcançar o seu final.
De acordo com o indicado acima, podemos facilmente identificar que existem
diferentes maneiras de inserir e remover dados de uma lista encadeada, onde o fato
da lista ser simplesmente ou duplamente encadeada vai simplificar e/ou dificultar
algumas destas operações. Os tipos básicos de operações de inserção em listas
encadeadas são:
1) Inserção no início da lista: Os nodos são sempre alocados (NEW) e depois
inseridos antes do primeiro nodo da lista encadeada, tornando-se assim o novo
início da lista. Exemplo:
2) Inserção no final da lista: Os nodos são encadeados após o último nodo da lista,
ou seja, o nodo inserido torna-se o último nodo da lista. Exemplo:
���
3) Inserção ordenada: Os nodos são inseridos respeitando uma regra de ordenação
previamente estabelecida, por exemplo, em ordem crescente de um campo numérico.
Exemplo:
4) Inserção especial: rotinas para implementar inserção em Pilha, Fila ou Deque.
Rotinas baseada nas rotinas acima de insere/remove no início/fim.
Além das rotinas de inserção, também iremos identificar que existem diferentes
maneiras de remover dados de uma lista encadeada. Lembre-se que na remoção de
dados de uma lista é muito importante que a memória seja liberada (DISPOSE) de
modo a poder ser aproveitada por outras aplicações e/ou pedidos de alocação de
memória. Os tipos básicos de operações de remoção em listas encadeadas são:
���
1) Remoção no início da lista: O primeiro nodo da lista encadeada nodos é sempre o
que será removido, onde o nodo seguinte a ele torna-se assim o novo início da lista.
2) Remoção do final da lista: O último nodo da lista encadeada é removido, onde o
penúltimo nodo torna-se o último após a remoção.
3) Remoção de um nodo específico indicado por um ponteiro: Neste caso, é
necessário que o nodo tenha sido previamente localizado e que já tenhamos um
ponteiro apontando para o nodo que se deseja remover. A remoção deste nodo
implica em criar um elo de ligação entre seu anterior e o próximo nodo (caso existam).
4) Remoção de um nodo contendo um determinado dado: Este tipo de remoção
implica em primeiramente localizar o dado (a sua primeira ocorrência, ou, repetir esta
operação para todas as ocorrências deste mesmo dado presentes na lista) e em
seguida realizar a remoção deste nodo, de forma análoga a remoção de um nodo
específico indicado por um ponteiro (vide item 3).
5) Remoção de todos os nodos da lista: Todos os nodos da lista devem ser
devidamente removidos e a memória ocupada por eles liberada, e por fim o ponteiro
para o início da lista deve ser inicializado novamente (NIL). Lembre-se que não basta
apenas atribuir NIL ao ponteiro de início de lista, devemos usar o comando DISPOSE
para realmente liberar a memória alocada.
Busca em uma lista simplismente encadeada:
Um parâmetro X retorna apontando para o elemento procurado e, ant para o
elemento anterior ao procurado; se o elemento não for encontrado, X aponta para null
e ant indica o elemento anterior ao último procurado.
Busca em uma lista duplamente encadeada ordenada:
O algoritmo de busca em tabelas ordenadas são muito simples. Na busca, a função
retorna indicando o nó procurado ou, se este não foi encontrado, o nó que seria seu
consecutivo.
��
4.2 – BANCO DE DADOS E CONCEITOS ACID
Várias examinadoras elaboram perguntas sobre as propriedades ACID de um banco
de dados, então vale a pena revisá-las. A minha fonte é o livro “Sistemas de Bancos
de Dados”, de Ramez Elsmari e Shamkant Navathe, 4a edição, capítulo 17.
Atomicidade – é um tudo ou nada: se houver alguma falha durante a
execução, a transação é desfeita. Ou, nas palavras dos autores, “uma
transação é uma unidade atômica de processamento; ou ela será executada em
sua totalidade ou não será de modo algum”. O subsistema de restauração de
transações do SGBD é o responsável pela atomicidade.
Preservação de consistência – imagine que seja tirada umafotografia dos
dados de um banco de dados. Este é o estado do BD. Após a fotografia, é feita
uma transação neste BD e retira-se uma nova foto. Se na primeira o BD estava
consistente, então na segunda ele tem que estar também.
Citando a bibliografia, “uma transação será preservadora de consistência se a
sua execução completa fizer o banco de dados passar de um estado
consistente para outro. (…) Um estado do banco de dados é a coleção de todos
os itens de dados armazenados no banco de dados em determinado momento.”
A responsabilidade aqui é dupla, sendo tanto do programador quanto do
módulo do SGBD que garante as restrições de integridade.
Isolamento – é o cada um por si: “uma transação deve ser executada como se
estivesse isolada das demais. Isto é, a execução de uma transação não deve
sofrer interferência de quaisquer outras transações concorrentes. (…) É imposto
pelo subsistema de controle de concorrência do SGBD.” O chamado nível de
isolamento verdadeiro (nível 3) não permite atualizações perdidas, leitura de
sujeira nem leituras repetíveis.
Durabilidade ou permanência – fez, está feito – “as mudanças aplicadas ao
banco de dados por uma transação efetivada devem persistir no banco de
dados. Essas mudanças não devem ser perdidas em razão de uma falha”.
Responsabilidade: subsistema de restauração do SGBD.
��
4.3 – BANCO DE DADOS E OO(ORIENTAÇÃO A OBJETO)
Um banco de dados orientado a objetos é um banco de dados em que cada
informação é armazenada na forma de objetos, ou seja, utiliza a Estrutura de
dados denominada Orientação a objetos, a qual permeia as linguagens mais
modernas. O gerenciador do banco de dados para um orientado a objeto é
referenciado por vários como ODBMS ou OODBMS.
Existem dois fatores principais que levam a adoção da tecnologia de banco de dados
orientados a objetos. A primeira, é que em umbanco de dados relacional se torna difícil
de manipular com dados complexos (esta dificuldade se dá pois o modelo relacional
se baseia menos no senso comum relativo ao modelo de dados necessário ao projeto
e mais nas contingências práticas do armazenamento eletrônico). Segundo, os dados
são geralmente manipulados pela aplicação escrita usando linguagens de
programação orientada a objetos, como C++, C#, Java,Python ou Delphi (Object
Pascal), e o código precisa ser traduzido entre a representação do dado e as tuplas da
tabela relacional, o que além de ser uma operação tediosa de ser escrita, consome
tempo. Esta perda entre os modelos usados para representar a informação na
aplicação e no banco de dados é também chamada de “perda por resistência”.
� Permite especificar e utilizar tipos abstratos de dados(TADs) da mesma forma
que os tipos de dados pré-definidos
– TADs são tipos de dados definidos pelo usuário que encapsulam
comportamento e estrutura interna (atributos)
� A tabela convencional é estendida para permitir a referencia de objetos
(referência de tipos), TADs e valores alfanuméricos como domínio de colunas
� Utiliza referências para representar conexões inter-objetos tornando as
consultas baseadas em caminhos de referência mais compactas do que as
consultas feitas com junção
� Herança é implementada organizando todos os tipos em hierarquias
� Utiliza os construtores set, list, multiset ou array para organizar coleções de
objetos
���
• Nova Funcionalidade
– Aumenta indefinidamente o conjunto de tipos e funções fornecidas pelo
SGBD
• Desenvolvimento de aplicações simplificado
– Reuso de código
• Consistência
– Permite a definição de padrões, código reusável por todas as aplicações
���
4.4 – ORM (OBJECT RELATIONAL MAPPING
ORM (Object Relational Mapper) é uma técnica de mapeamento de objeto relacional que permite fazer uma relação dos objetos com os dados que os mesmos representam. Ultimamente tem sido muito utilizada e vem crescendo bastante nos úttimos anos. Este crescimento, tem se dado principalmente pelo fato de muitos desenvolvedores não se sentirem a vontade de escrever código SQL e pela produtividade que esta técnica nos proporciona. Existem ótimos ORM´s como Hibernate, NHibernate, Entity Framework e etc.
Tudo começa como mostrado na figura acima, existem 2 mundos: o relacional e o orinetado a objetos, no mundo relacional prevalecem princípios matemáticos com a finalidade de armazenar e gerenciar corretamente os dados, de forma segura e se trabalha com a linguagem SQL que é utilizada para dizer o banco de dados “O QUE?” fazer e não como fazer. Já no mundo orientado a objetos, trabalhamos com classes, métodos ou seja, trabalhamos fundamentados na engenharia de software e seus princípios que nos dizem “COMO” fazer. O ORM é justamente, a ponte entre estes dois mundos, ou seja, é ele quem vai permitir que você armazene os seus objetos no banco de dados, para isto fazendo um mapeamento dos seus objetos para as tabelas do banco de dados.
���
A figura acima, nos faz ter uma ideia de como o ORM trabalha. Ele faz o mapeamento da sua classe para o anco de dados e cada ORM tem suas particularidades, para gerar o SQL referente a inserção do objeto que corresponde a uma tabela no banco de dados e realizar a operação. Utilizando um ORM, também se ganha produtividade, pois deixa-se de escrever os comando SQL para deixar que o próprio ORM, faça isto por você.
���
4.5 – FERRAMENTA PARA FAZER ORM
Hibernate usa documento XML ou o arquivo de propriedades para definir o mapeamento objeto / relacional. O objeto / arquivo de mapeamento relacional contém o mapeamento entre o objeto Java eo banco de dados tabela correspondente. Este exemplo ilustra como criar o ORM usando o documento XML.
Imagem Ilustrativa
���
4.6 – DIAGRAMA DE ATIVIDADE
Imagem Ilustrativa - Diagrama de Atividade
1- Bifurcação: Recebe apenas uma atividade e executa mais de um atividade simultânea .
2- Merge: Recebe vários fluxos e tem apenas uma saída. 3- União: Junta duas atividades e origina apenas uma atividade. 4- Decisão: Recebe apenas uma ação e diversas saídas
��������� �
��� ��� �
������� �
��� �����
���
A autorização do pagamento tem início após um pedido ter sido realizado pelo cliente. Ao mesmo tempo, a disponibilidade para cada um dos itens do pedido é verificada pelo depósito. Se a quantidade requisitada de um determinado item existe em estoque, tal quantidade é associada ao pedido, caso contrário, a quantidade do item será alterada (se houver em quantidade menor), se a quantidade em estoque for igual a zero, o item será excluído. O pedido é enviado pelo depósito ao cliente quando todos os itens estiverem associados e o pagamento estiver autorizado. O pedido será cancelado se a ordem de pagamento não tiver sido autorizada.
Vantagens Do Diagrama De Atividades
Representar as atividades que devem ser realizadas por um ator para que os objetivos
do caso de uso sejam alcançados. Sendo uma maneira fácil de ilustrar a
funcionalidade de um sistema.
��
5 - CONCLUSÃO
Usando o Diagrama de Atividade, obtem-se um resultado mais claro e rápido
das funções de um sistema na implantação em uma empresa. Já na criação e
organização de um Banco de Dados bem definido, é preciso compreender melhor as
suas funcionalidades. Portanto para se desenvolver um sistema com um banco de
dados agil, é importante enteder as necessidades do cliente ou da empresa e o
objetivo a ser alcançado. Garantido um programa amigável para o usuario final.
��
REFERÊNCIAS
Listas simplesmente encadeadas – Osório Germano e Silva Filho Programação 1 Estruturas de Dados – Raquel Marcia Müller � ����� � � ���� ��������acesso em 21/09/2012 Website – Fábio Oliveira http://www.profabio.com/portal/images/documentos/ED/unesul-pilha-fila.pdf acesso em 07/09/2012 Website – ORM : Object Relational Mapper http://www.devmedia.com.br/orm-object-relational-mapper/19056#ixzz29nWTEOhU acesso em 18/10/2012