Upload
adsonhonori
View
2.917
Download
4
Embed Size (px)
DESCRIPTION
SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE DE DESENVOLVIMENTO DE SISTEMAS ADSON JOSÉ HONORI DE MELOPORTFÓLIO INDIVIDUAL 3º SEMESTREListas lineares, alocações encadeadas, ACID, ORM, banco de dados relacionais com programação orientada a objetos, herança e poliformismo.Palmas 2012ADSON JOSÉ HONORI DE MELOPORTFÓLIO INDIVIDUAL 3º SEMESTREListas lineares, alocações encadeadas, ACID, ORM, banco de dados relacionais com programação orientada a objetos, herança e poliformismo.Trabalho a
Citation preview
Palmas 2012
ADSON JOSÉ HONORI DE MELO
SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE DE DESENVOLVIMENTO DE SISTEMAS
PORTFÓLIO INDIVIDUAL 3º SEMESTRE Listas lineares, alocações encadeadas, ACID, ORM, banco de dados
relacionais com programação orientada a objetos, herança e poliformismo.
Palmas 2012
PORTFÓLIO INDIVIDUAL 3º SEMESTRE Listas lineares, alocações encadeadas, ACID, ORM, banco de dados
relacionais com programação orientada a objetos, herança e poliformismo.
Trabalho apresentado às disciplinas Algoritmos e Estruturas de Dados, Análise de Sistemas, Seminário 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
ADSON JOSÉ HONORI DE MELO
SUMÁRIO
1 INTRODUÇÃO .....................................................................................................3
2 DESENVOLVIMENTO .........................................................................................4
2.1 LISTAS LINEARES...........................................................................................4
2.1.1 FIFO (“FIRST IN FIRST OUT”) .....................................................................4
2.1.2 FILO (“FIRST IN LAST OUT”) .......................................................................5
2.1.3 TIPOS DE ALOCAÇÃO ................................................................................6
2.2 TRANSAÇÕES EM BANCO DE DADOS – ACID.............................................7
2.3 BANCO DE DADOS RELACIONAIS VERSUS PROGRAMAÇÃO
ORIENTADA A OBJETOS ..........................................................................................8
2.3.1 ORM (OBJECT RELATIONAL MAPPER) .....................................................8
2.3.2 HIBERNATE..................................................................................................9
2.4 HERANÇA E POLIFORMISMO........................................................................9
3 CONCLUSÃO ....................................................................................................12
REFERÊNCIAS.........................................................................................................13
3
1 INTRODUÇÃO
Esta produção textual interdisciplinar do 3º semestre do curso de
Análise e Desenvolvimento de Sistemas, tem como objetivo aplicar e exercitar os
conteúdos assimilados no período abordando os diversos conceitos, técnicas e
práticas das listas lineares (FIFO e FILO), alocações simplesmente encadeadas e
duplamente encadeadas, conceitos de ACID de uma transação, ORM, herança e
poliformismo, bem como a utilização de banco de dados relacional com a
programação orientada a objetos.
4
2 DESENVOLVIMENTO
2.1 LISTAS LINEARES
Lista linear é a estrutura que permite representar um conjunto de
dados afins de forma a preservar a relação de ordem linear de seus elementos. É o
conjunto de n ≥ 0 nós X1, X2, ... Xn, organizados estruturalmente de forma a refletir
as posições relativas dos mesmos; se n > 0, então X1 é o primeiro nó; para 1 < k <
n, o nó Xk é precedido pelo nó Xk-1 e seguido do Xk+1; temos também Xn como
último nó e quando n = 0, diz-se que a lista é vazia.
Exemplos de listas lineares no cotidiano:
- Pessoas na fila de um banco;
- Letras em uma palavra;
- Relação de notas dos alunos de uma turma;
- Itens em estoque em uma empresa;
- Dias da semana;
- Vagões de um trem;
- Pilha de pratos;
- Cartas de baralho.
Exemplos de listas lineares em sistemas informatizados:
- Controle de documentos para impressão;
- Troca de mensagem entre computadores numa rede;
- Funções recursivas em compiladores;
- Mecanismo de desfazer/refazer dos editores de texto;
- Navegação entre páginas Web;
2.1.1 FIFO (“FIRST IN FIRST OUT”)
O primeiro elemento que entrou é o primeiro a sair. Cada elemento
armazena um ou vários dados (estrutura homogênea ou heterogênea) e um ponteiro
para o próximo elemento, permitindo o encadeamento e a linearidade. Temos as
5
seguintes operações nesta estrutura: inserir na fila, consultar toda a fila, remover e
esvaziá-la. Nas filas as remoções acontecem no ponteiro INICIO e as inserções no
ponteiro FIM. Analogicamente, imaginemos uma fila de espera de um banco
qualquer, todo cliente que chega é posicionado ao final da fila, e o primeiro a ser
atendido sempre será o primeiro desta fila de espera.
Figura 1 – esquema de funcionamento de uma fila FIFO Fonte: ASCENSIO, Estrutura de Dados, pág. 191 e 192
2.1.2 FILO (“FIRST IN LAST OUT”)
O último elemento que entrou é o primeiro a sair. Cada elemento
armazena um ou vários dados (estrutura homogênea ou heterogênea) e um ponteiro
para o próximo elemento, permitindo o encadeamento e a forma linear. Temos as
seguintes operações nesta estrutura: inserir na pilha, consultar toda a pilha, remover
e esvaziá-la. Nas pilhas as remoções e inserções acontecem num único ponto, o
TOPO. Analogicamente, pensemos numa pilha de pratos, onde um novo prato será
sempre colocado no topo da pilha; para retirarmos um prato, escolhemos o do topo,
ou seja, o último prato inserido.
6
Figura 2 – esquema de funcionamento de uma pilha FILO
Fonte: ASCENSIO, Estrutura de Dados, pág. 185
2.1.3 TIPOS DE ALOCAÇÃO
SIMPLESMENTE ENCADEADAS
Uma lista simplesmente encadeada é uma sucessão de nós onde
cada nó aponta para o próximo nó da lista. O nó que possuir o valor NULL no
ponteiro para próximo é o último nó da lista. É de extrema importância que seja
mantida uma referência para o primeiro nó da lista, caso esta referência for NULL,
significa que a lista esta vazia.
Figura 3 – alocação simplesmente encadeada
7
DUPLAMENTE ENCADEADAS
São listas que, além de cada elemento indicar o elemento seguinte,
também indicam aquele que o antecede, ou melhor, cada elemento é ligado ao seu
sucessor e ao seu predecessor.
Figura 4 – alocação duplamente encadeada
Há uma questão que envolve performance, flexibilidade e requisitos
de alocação de memória, relacionados com a opção que fazemos por uma ou outra
estrutura de dados. No caso da lista simplesmente encadeada, os nós são menores
(1 ponteiro por dado armazenado), mas a flexibilidade de deslocamento entre os nós
é menor (só em um sentido) e mesmo a performance pode ser menor em operações
como a inserção no final da lista. Já as listas duplamente encadeadas irão ocupar
mais memória (2 ponteiros para cada dado), mas são muito mais flexíveis e podem
ser mais eficientes na em certas operações (por exemplo, na inserção/remoção do
final da lista). Portanto, como atualmente a abundância de recursos computacionais
de hardware (memória) não é um gargalo para desenvolvedores, considero a
alocação duplamente encadeada a mais recomendada.
2.2 TRANSAÇÕES EM BANCO DE DADOS – ACID
Todo sistema gerenciador de banco de dados (SGBD) aplica em seu
funcionamento o conceito denominado ACID, um acrônimo que representa as quatro
propriedades fundamentais. Todas as propriedades devem ser aplicadas em sua
plenitude, senão o SGBD não poderá ser considerado um sistema de verdade.
ATOMICIDADE: dizemos que uma transação é atômica porque não
é divisível em partes, ou seja, deve ser realizada por inteiro ou então abortada. Por
exemplo, numa transação com operações de alteração de dados, devemos cumprir
todas ou não realizamos nenhuma delas.
8
CONSISTÊNCIA: no início de uma transação, os dados
armazenados estão todos consistentes; ao concluir a transação, os dados devem
permanecer consistentes, ou seja, as regras de negócio devem continuar a sendo
executadas e cumpridas.
ISOLAMENTO: é também conhecido como integridade de
transações, estas devem ser isoladas/íntegras, ou seja, duas ou mais transações
concorrentes devem seguir de maneira isolada uma com as outras e as regras de
negócio devem ser cumpridas durante a realização das operações na transação
independentemente de existirem mais transações de maneira simultânea e, ao final
delas, esta integridade deve permanecer.
DURABILIDADE: depois de realizada e confirmada, uma transação
deve ser durável, ou seja, não pode desaparecer do banco sem que uma outra
transação realize esta operação.
2.3 BANCO DE DADOS RELACIONAIS VERSUS PROGRAMAÇÃO ORIENTADA A
OBJETOS
Os sistemas de banco de dados relacionais e as linguagens
orientadas a objetos consolidaram-se no mercado há muito tempo. Dois paradigmas
diferentes, mas que têm que conviver juntos, criando assim esta incompatibilidade
semântica entre os paradigmas objeto/relacional. Esta incompatibilidade pode ser
solucionada usando banco de dados orientado a objetos, já disponíveis atualmente,
no entanto, estes ainda não são tão eficientes e difundidos quanto os bancos de
dados relacionais. Portanto, para que coexistam em um ambiente de
desenvolvimento foi elaborada a ORM.
2.3.1 ORM (OBJECT RELATIONAL MAPPER)
Técnica de desenvolvimento utilizada para reduzir a impedância da
programação orientada a objetos utilizando bancos de dados relacionais. As tabelas
do banco de dados são representadas através de classes e os registros de cada
tabela são representados como instâncias das classes correspondentes.
9
Com esta técnica, o programador não precisa se preocupar com os
comandos em linguagem SQL; ele irá usar uma interface de programação simples
que faz todo o trabalho de persistência. Não é necessária uma correspondência
direta entre as tabelas de dados e as classes do programa. A relação entre as
tabelas onde originam os dados e o objeto que os disponibiliza é configurada pelo
programador, isolando o código do programa das alterações à organização dos
dados nas tabelas do banco de dados.
2.3.2 HIBERNATE
O Hibernate foi criado por desenvolvedores Java espalhados ao
redor do mundo, e liderado por Gavin King. É um software livre de código aberto
distribuído com a licença LGPL. Consiste em um framework para o mapeamento
objeto-relacional escrito na linguagem Java. Este programa facilita o mapeamento
dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de
uma aplicação, mediante o uso de arquivos (XML) para estabelecer esta relação.
Seu objetivo é diminuir a complexidade entre os programas Java,
baseado no modelo orientado a objeto, que precisam trabalhar com um banco de
dados do modelo relacional (presente na maioria dos SGBDs). Em especial, no
desenvolvimento de consultas e atualizações dos dados.
Sua principal característica é a transformação das classes em Java
para tabelas de dados (e dos tipos de dados Java para os da SQL). O framework
gera as chamadas SQL e libera o desenvolvedor do trabalho manual da conversão
dos dados resultante, mantendo o programa portável para quaisquer bancos de
dados SQL, porém causando um pequeno aumento no tempo de execução.
2.4 HERANÇA E POLIFORMISMO
HERANÇA: é um princípio de orientação a objetos, que permite que
classes compartilhem atributos e métodos, através de "heranças". Ela é usada na
intenção de reaproveitar código ou comportamento generalizado ou especializar
10
operações ou atributos. O conceito de herança de várias classes é conhecido como
herança múltipla.
POLIFORMISMO: também oriunda da orientação a obejetos, permite
que referências de tipos de classes mais abstratas representem o comportamento
das classes concretas que referenciam. Assim, é possível tratar vários tipos de
maneira homogênea (através da interface do tipo mais abstrato). Caracteriza-se por
duas ou mais classes distintas e tem métodos de mesmo nome, de forma que uma
função possa utilizar um objeto de qualquer uma das classes polimórficas, sem
necessidade de tratar de forma diferenciada conforme a classe do objeto.
Uma das formas de implementar o polimorfismo é através de uma
classe abstrata, cujos métodos são declarados mas não são definidos, e através de
classes que herdam os métodos desta classe abstrata.
Figura 5 – diagrama de classes herança e poliformismo
Analisando o diagrama acima, temos uma superclasse "Mamífero",
e as subclasses "Cachorro", "Macaco", "Homem", que "herdam" de "Mamífero".
Podemos dizer que Cachorro "é um" Mamífero, Macaco "é um" Mamífero, Homem "é
um" Mamífero. As características definidas na classe Mamífero, estarão presentes
nas classes que herdam dela. Todos os Mamíferos terão Mamas e Pelos. Isto é
Herança.
11
Além disto, cada classe que herda de Mamífero poderá ter seus
próprios atributos que se somarão aos da superclasse. E note que a classe Homem
contém uma definição do atributo Pelos. Dando uma razão lógica para nosso
exemplo, isto é porque o Homem tem pelos diferentes dos outros mamíferos.
Podemos portanto re-definir na subclasse um atributo que já estava
presente na superclasse, dando a ele características diferentes. Isto é Polimorfismo:
o mesmo método ou atributo pode ter funcionamento diferente em classes
diferentes, mesmo que uma herde da outra.
12
3 CONCLUSÃO
Vimos neste trabalho o quão são importantes as estruturas de dados
lineares e as principais diferenças entre suas diversas formas conceituais.
Discorremos sobre as propriedades ACID e sua importância para os
SGBDs. Abordamos a técnica ORM que viabiliza o casamento entre banco de dados
relacionais e programação orientada a objetos, dois consagrados paradigmas da
computação e apresentamos uma das várias ferramentas de mercado, Hibernate.
Por último, tratamos dois conceitos vitais em orientação a objetos,
herança e poliformismo com a ajuda dos diagramas de classes.
Foi bastante prazeroso e gratificante poder transformar em um
documento prático e objetivo todos os conceitos ministrados no 3º período do curso
de Análise de Sistemas da UNOPAR e ter a certeza de que os mesmo nos ajudarão
em nossas carreiras futuramente.
13
REFERÊNCIAS
ASCENSIO, Ana Fernanda Gomes. Estrutura de Dados: algoritmos, análise da complexidade e implementações em Java e C/C++. São Paulo: Pearson Prentice Hall, 2010.
NISHIMURA, Roberto Yukio. Banco de Dados II: sistemas. São 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-de-orientacao-a-objetos-e-uml/diagramas-de-classes