14
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.

PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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

Page 1: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 2: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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

Page 3: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - 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

Page 4: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 5: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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

Page 6: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 7: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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

Page 8: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 9: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 10: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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

Page 11: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 12: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 13: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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.

Page 14: PORTFÓLIO INDIVIDUAL 3º SEMESTRE - ANÁLISE DE SISTEMAS - UNOPAR - ADSON JOSÉ HONORI DE MELO

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