You are on page 1of 23

JUAZEIRO - BA

2012









































GEROJECLEY ALMEIDA LVES




















SISTEMA DE ENSINO PRESENCIAL CONECTADO
TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS
ATIVIDADE INTERDISCIPLINAR INDIVIDUAL


JUAZEIRO - BA
2012




































ATIVIDADE INTERDISCIPLINAR INDIVIDUAL 3
SEMESTRE
Trabalho apresentado ao Curso de Tecnologia em
Anlise e Desenvolvimento de Sistemas para obteno
de nota do 3 semestre da Universidade Norte do Paran
UNOPAR

Professores: Polyanna Pacheco Gomes
Roberto Y. Nishimura
Marcio Chiaveli
Merris Mozer
GEROJECLEY ALMEIDA LVES



















SUMRIO
1 INTRODUO ..................................................................................................... 3
2 LISTAS LINEARES .............................................................................................. 4
2.1 FIFO (FIRST IN FIRST OUT) ............................................................................ 4
2.1.1 Aplicaes FIFO............................................................................................ 5
2.1.2 Vantagens e Desvantagens do FIFO ............................................................ 6
2.2 FILO (FIRST IN, FIRST OUT) ............................................................................ 6
2.3 ALOCAO SIMPlISmente Encadeada .............................................................. 7
2.3.1 Exemplos de algoritmos para as operaes de insero e retirada de um
elemento numa pilha com alocao contgua: ............................................................ 7
2.4 Alocao Duplamente Encadeada ....................................................................... 8
3 ACID..................................................................................................................... 9
3.1 Transaes .......................................................................................................... 9
3.2 ATOMICIDADE .................................................................................................... 9
3.3 CONSISTNCIA .................................................................................................. 9
3.4 ISOLAMENTO ...................................................................................................... 9
3.5 DURABILIDADE ................................................................................................. 10
3.6 IMPORTNCIA DO ACID PARA UM SGBD ...................................................... 10
4 banco de dados relacional com a programao orientada a objetos ................. 12
4.1 Orientao a Objetos VS Modelo Entidade Relacionamento ............................. 12
5 Object Relational Mapping (ORM) Mapeamento de Objeto Relacional........... 13
5.1 Ferramentas para fazer orm (object relational mapping) ................................... 16
5.1.1 JPA e Hibernate .......................................................................................... 16
6 HERANA E POLIMORFISMO ......................................................................... 17
6.1 herana .............................................................................................................. 17
6.1.1 Diagrama de Classe (Herana) ................................................................... 17
6.2 polimorfismo ....................................................................................................... 18
6.2.1 Diagrama de Classe (Polimorfismo) ............................................................ 18
7 CONCLUSO .................................................................................................... 20
REFERNCIAS ......................................................................................................... 21

3
1 INTRODUO
Este trabalho apresenta a produo textual interdisciplinar individual
e ser abordada toda a matria do 3 Semestre do curso de Anlise e
Desenvolvimento de Sistemas, dentro deste contexto sero apresentados os
conceitos de listas lineares, FIFO, FILO, seus apontadores, ordens de incluso,
excluso e pesquisa. Conceitos de alocao simplesmente encadeada, alocao
duplamente encadeada, com suas respectivas representaes grfica. Sero
abordados conceitos das propriedades ACID de uma transao e sua importncia
para um SGBD; ORM, herana e poliformismo, bem como a utilizao de banco de
dados relacional com a programao orientada a objetos. A respeito de a UML sero
apresentados os conceitos de polimorfismo e herana, bem como exemplos que os
representem em diagramas de classe.

4
2 LISTAS LINEARES
Lista Linear a estrutura que permite representar um conjunto de
dados afins, de forma a preservar a relao de ordem linear de seus elementos. .
o conjunto de n 0 ns X1, X2, ... Xn, organizados estruturalmente de forma a
refletir as posies relativas dos mesmos; se n > 0, ento X1 o primeiro n; para 1
< k < n, o n Xk precedido pelo n Xk-1 e seguido do Xk+1; temos tambm Xn
como ltimo n e quando n = 0, diz-se que a lista vazia.

Exemplos dirios de listas lineares:
- Letras de uma palavra
- Palavras de uma frase
- Pessoas esperando nibus
2.1 FIFO (FIRST IN FIRST OUT)
O primeiro elemento que entrou o primeiro a sair. As listas so
amplamente utilizadas em programao para implementar filas de espera. Em uma
fila de tipo FIFO os elementos vo sendo colocados na fila e retirados (ou
processados) por ordem de chegada. Cada elemento armazena um ou vrios dados
(estrutura homognea ou heterognea) e um ponteiro para o prximo elemento,
permitindo o encadeamento e a linearidade. Temos as seguintes operaes nesta
estrutura: inserir na fila, consultar toda a fila, remover e esvazi-la. Nas filas as
remoes acontecem no ponteiro INICIO e as inseres no ponteiro FIM. Como
exemplo de aplicao para filas, pode-se citar a fila de processos de um sistema
operacional. Nela, estabelecido um tempo a ser usado por cada um dos
processos. Se durante a execuo de um processo o tempo passa de a, este
posto na fila e o processo seguinte executado. Se o processo seguinte no
terminar de ser executado no tempo, ele posto na fila e o processo subsequente
executado, e assim por diante at todos os processos serem executados.

5


Figura 1 esquema de funcionamento de uma fila FIFO

2.1.1 Aplicaes FIFO
Os algoritmos FIFO's so comumente usados em circuitos
eletrnicos de buffer e controle de fluxo, que vai desde o hardware at o software.
Na forma de um hardware o FIFO consiste basicamente de um conjunto de ler e
escrever ponteiros, armazenamento e lgica de controle. Armazenamento pode ser
SRAM, flip-flops, fechos ou qualquer outra forma adequada de armazenamento.
Para o FIFO, de tamanho no trivial, uma SRAM de porta dupla geralmente
utilizada quando uma porta usada para a escrita e a outra para leitura.
O FIFO sncrono aonde o mesmo clock usado para leitura e
escrita. Um FIFO assncrono utiliza diferentes relgios para leitura e escrita. Uma
aplicao comum de um FIFO assncrono utiliza um cdigo de Gray (cdigo binrio
refletido), ou qualquer unidade de cdigo distncia, para ler e escrever os
ponteiros para garantir a gerao de bandeira confivel. Uma nota mais preocupante
que se deve necessariamente usar a aritmtica de ponteiro para gerar bandeiras
para implementaes assncronas FIFO. Por outro lado, pode-se usar a abordagem

6
de um balde "de fuga" ou a aritmtica de ponteiro para gerar bandeiras nas
implementaes sncronas FIFO.
Exemplos de sinalizadores de status FIFO incluem: cheios, vazios,
quase cheio, quase vazio, etc.
2.1.2 Vantagens e Desvantagens do FIFO
Vantagens:
O mais simples entre os processos de escalonamento;
Todos os processos tendem a serem atendidos.
Desvantagens:
Muito sensvel ordem de chegada;
Se processos maiores chegarem primeiro aumentaro o
tempo mdio de espera;
No garante um tempo de resposta rpido;
No eficiente em sistemas de tempo compartilhado;
No eficiente em sistemas em tempo real.

2.2 FILO (FIRST IN, FIRST OUT)
FILO (First In, Last Out, que em portugus significa primeiro a entrar,
ultimo a sair) refere-se a estruturas de dados do tipo pilha. equivalente a LIFO, que
significa Last In, First Out.
Cada elemento armazena um ou vrios dados (estrutura homognea
ou heterognea) e um ponteiro para o prximo elemento, permitindo o
encadeamento e a forma linear. Temos as seguintes operaes nesta estrutura:
inserir na pilha, consultar toda a pilha, remover e esvazi-la. Nas pilhas as remoes
e inseres acontecem num nico ponto, o TOPO.
Usam-se os termos push e pop para denominar a insero e
remoo de elementos da pilha, respectivamente. Usa-se o termo top para consultar
o elemento do topo da pilha, sem o remover.
Uma pilha uma lista linear na qual o primeiro elemento a entrar o
ltimo elemento a sair. Ela possui apenas uma entrada, chamada de topo, a partir da

7
qual os dados entram e saem dela.



Figura 2 esquema de funcionamento de uma pilha FILO
2.3 ALOCAO SIMPLISMENTE ENCADEADA
A maneira mais simples de acomodar uma lista linear em
computador atravs da utilizao de um vetor. A representao por vetor explora a
sequencialidade da memria de tal forma que os ns de uma lista sejam
armazenados em endereos contguos, ou igualmente distanciados um do outro.

Figura 3 alocao simplesmente encadeada
2.3.1 Exemplos de algoritmos para as operaes de insero e retirada de um
elemento numa pilha com alocao contnua:
VARIVEIS: TOPO (ndice que indica a ltima posio ocupada)
MXIMO (varivel cujo valor representa o tamanho do vetor)
VALOR (elemento includo/retirado)

8

2.4 ALOCAO DUPLAMENTE ENCADEADA
Caractersticas:
Listas foram percorridas do incio ao final.
Ponteiro "anterior" necessrio para muitas operaes.
Em alguns casos pode-se desejar percorrer uma lista nas
duas direes indiferentemente.
Nestes casos, o gasto de memria imposto por um novo
campo de ponteiro pode ser justificado pela economia em no
reprocessar a lista toda.



Type tpont = ^ trec;
trec = record
info:T;
esq, dir: tpont;
End;
Lista = tpont;
Var pont: Lista;

Como consequncia, podemos realizar as operaes de
insero e eliminao esquerda ou direita de um campo
no interior de uma lista sem a necessidade de ponteiros
"anteriores".

9
3 ACID
Acrnimo de Atomicidade, Consistncia, Isolamento e Durabilidade.
3.1 TRANSAES
A maioria dos programas desenvolvidos atualmente para uso
multiusurio, um sistema de controle de estoque por exemplo. Imagine 10 terminais
buscando e inserindo informaes a cada segundo em um servidor. Todos eles
executam um conjunto de comandos que so solicitados de uma s vez. Uma
Transao basicamente isso, um conjunto de comandos SQL em sequncia ou
no, sendo que, todos os comandos deste conjunto devem ser executados e por
completo. Para um bom funcionamento de um SGBD, necessrio que ele tenha
um conjunto de propriedades, conhecido como ACID (Atomicidade, Consistncia,
Isolamento e Durabilidade), onde estas propriedades vo definir como sero
executadas as transaes.
3.2 ATOMICIDADE
Dizemos que uma transao atmica porque no divisvel em
partes, ou seja, deve ser realizada por inteiro ou ento abortada. Por exemplo, numa
transao com operaes de alterao de dados, devemos cumprir todas ou no
realizamos nenhuma delas Quando todas as aes so efetuadas com sucesso, a
transao pode ser efetivada e persistida em banco (commit).
3.3 CONSISTNCIA
Todas as regras e restries definidas no banco de dados devem ser
obedecidas. Relacionamentos por chaves estrangeiras, checagem de valores para
campos restritos ou nicos devem ser obedecidos para que uma transao possa
ser completada com sucesso.
3.4 ISOLAMENTO
tambm conhecido como integridade de transaes, estas devem

10
ser isoladas/ntegras, ou seja, duas ou mais transaes concorrentes devem seguir
de maneira isolada uma com as outras e as regras de negcio devem ser cumpridas
durante a realizao das operaes na transao independentemente de existirem
mais transaes de maneira simultnea e, ao final delas, esta integridade deve
permanecer. Outras transaes no podem visualizar os resultados parciais das
operaes de uma transao em andamento (ainda em respeito propriedade da
atomicidade).
3.5 DURABILIDADE
Depois de realizada e confirmada, uma transao deve ser durvel,
ou seja, no pode desaparecer do banco sem que uma outra transao realize esta
operao. Significa que os resultados de uma transao so permanentes e podem
ser desfeitos somente por uma transao subsequente. Por exemplo: todos os
dados e status relativos a uma transao devem ser armazenados num repositrio
permanente, no sendo passveis de falha por uma falha de hardware.
3.6 IMPORTNCIA DO ACID PARA UM SGBD
O ACID muito importante para um BD, pois este conjunto de
caractersticas que garante a qualidade e segurana (contra falhas do sistema) das
transaes, obtendo assim bons resultados no armazenamento correto das
informaes. Cada propriedade tem sua importncia. Com a Atomicidade, as
transaes so executadas com sucesso at o final, comando por comando, no caso
de erro em qualquer um deles o SGBD deve desfazer o que foi alterado, ento
temos a garantia de que os clculos, atualizaes, ou outras operaes no foram
executadas incompletas, e sim at o fim com sucesso. J a Consistncia
importante porque uma operao no pode violar a integridade dos dados, ou seja,
aps executar uma transao, o banco de dados deve manter a consistncia dos
dados, mesmo ocorrendo alteraes (Update, Insert...). O Isolamento vai evitar que
a transao que est sendo executada, seja interferida ou interrompida por outra
solicitao, evitando que erros aconteam. A Durabilidade vai garantir que os dados
que foram gravados pelas transaes, no sejam perdidos ou danificados, mesmo
que ocorra alguma falha no sistema, como travamento e queda de energia (desde

11
que no haja perda de hardware).

12
4 BANCO DE DADOS RELACIONAL COM A PROGRAMAO ORIENTADA A
OBJETOS
4.1 ORIENTAO A OBJETOS VS MODELO ENTIDADE RELACIONAMENTO
Um dos problemas na comunicao entre uma aplicao Java, por
exemplo, e um banco de dados o conflito de paradigmas. O banco de dados
organizado seguindo o modelo entidade relacionamento, enquanto as aplicaes
Java, geralmente, utilizam o paradigma orientado a objetos.
A transio de dados entre o modelo entidade relacionamento e o
modelo orientado a objetos no simples. Para realizar essa transio, necessrio
denir um mapeamento entre os conceitos desses dois paradigmas. Por exemplo,
classes podem ser mapeadas para tabelas, objetos para registros, atributos para
campos e referncia entre objetos para chaves estrangeiras.
Para facilitar a comunicao entre aplicaes Java que seguem o
modelo orientado a objetos e os banco de dados que seguem o modelo entidade
relacionamento, podemos utilizar ferramentas que automatizam a transio de dados
entre as aplicaes e os diferentes bancos de dados e que so conhecidas como
ferramentas de ORM (Object Relational Mapper).
Outra consequncia, ao utilizar uma ferramenta de ORM, que no
necessrio escrever consultas em SQL, pois a prpria ferramenta gera as
consultas de acordo com a sintaxe da linguagem SQL correspondente ao banco que
est sendo utilizado.

13
5 OBJECT RELATIONAL MAPPING (ORM) MAPEAMENTO DE OBJETO
RELACIONAL
Mapeamento de Objeto Relacional (ORM) uma abordagem que
permite a construo de sistemas utilizando o paradigma orientado a objetos com a
persistncia destes objetos em bancos de dados relacionais. Utilizando-se de
tcnicas e estratgias especficas, possvel mapear classes com seus atributos e
associaes para o modelo relacional (SILVA, 2006).
Segundo (AMBLER, 1999), o mapeamento de classes pode ser
feito mediante a paridade entre classe e tabela, ou seja, uma classe mapeada para
uma tabela. Este mapeamento direto de classes para tabelas representa a forma
mais simples de mapeamento, tornando mais fcil o entendimento e a manuteno
de uma aplicao.
Mapeamento de Tabelas Simples

Porm, nem sempre o mapeamento to simples assim. No caso de
uma estrutura hierrquica, vrias classes podem ser mapeadas para uma tabela,
bem como uma classe pode ser mapeada para vrias tabelas.
Mapeamento de Tabelas Complexo


14
As tabelas Classe1 e Classe2 possuem, respectivamente,
relacionamento com as tabelas Tabela1 e Tabela3. Esse mapeamento seria de certa
forma trivial, e poderia ser tratado como relacionamento simples. Um terceiro
relacionamento feito pelas duas tabelas impossibilita esse tratamento, pois ambas
possuem atributos na Tabela2. Dessa forma necessrio que haja uma
especificao de quais atributos pertencem a cada classe.
Ao tratar do mapeamento de atributos de uma classe para colunas
em tabelas de um banco de dados relacional, deve-se levar em conta que os
atributos podem ser de tipos de dados primitivos como inteiros, pontos flutuantes,
caracteres, booleanos e binrios, bem como ser de tipos de dados complexos como
tipos baseados criados pelo usurio. Os atributos podem ser ainda multivalorados, o
que viola as regras de normalizao do modelo relacional.
Alm disso, podem existir atributos de controle ou utilizados em
clculos, que geralmente no necessitam serem mapeados (AMBLER, 1999). Desta
forma, os atributos simples podem ser mapeados diretamente para colunas em uma
tabela, j os atributos complexos e multivalorados podem necessitar de tabelas
adicionais para seu armazenamento. Estes atributos complexos, geralmente,
possuem caractersticas recursivas, ou seja, so classes que possuem outros
atributos e, assim, sucessivamente.
O mapeamento segue o seguinte conceito: as classes mapeiam
cada uma das tabelas do banco de dados de modo que as linhas dessas tabelas se
tornam objetos e as colunas referem-se aos atributos dessa classe.
Mapeamento de Tabelas, Objetos e Atributos


15
Essa tcnica possibilita mais do que cdigos limpos, permite que
persistncias de objetos no banco de dados sejam feitas sem simples e
transparente.
O ORM se comporta como uma camada que possui uma gama de
mtodos que cuidam dessa tarefa, tais como: create (cria um novo objeto da classe
a partir dos dados da tabela), find (busca um determinado registro no banco e o
torna um objeto da classe), delete (exclui registros do banco) e update (atualiza
registros de uma tabela de acordo com as solicitaes). Esses mtodos variam de
acordo com a linguagem utilizada.
Na primeira tabela, possvel observar um pouco das facilidades e
de como a legibilidade do cdigo fica melhor ao se utilizar o ORM ao invs de se
injetar dentro de seu cdigo o SQL puro, o que fere as boas prticas de
programao, que sugere que cdigos SQL estejam separados dos cdigos de
desenvolvimento (RODRIGES; COSTA; SILVEIR, 2001).

Essa camada, chamada de persistncia, encontra-se entre a
camada de negcio (onde esto as classes de domnio da aplicao, ou seja,
classes que definem as regras de negcio) e o banco de dados. Esta camada
permite que o impacto das modificaes em uma delas seja atenuado em relao
outra. Isto diminui o grau de dependncia do banco de dados e aumenta a facilidade
de manuteno do cdigo.
Toda responsabilidade por persistir objetos fica a cargo da camada
de persistncia, liberando a aplicao destas tarefas, e assim aumentando a
produtividade no desenvolvimento (YODER; JOHNSON; WILSON, 1998). Na
camada de persistncia est a definio das estratgias de mapeamento do modelo

16
orientado a objetos para o modelo relacional, apresentadas anteriormente.
A camada de classes representa todo o conjunto de classes
(controllers, views dentre outras) que podem utilizar mtodos da camada de
persistncia. Assim, as transaes com o banco de dados ficam transparentes.

5.1 ORM (OBJECT RELATIONAL MAPPING)
Uma excelente ferramenta ORM para Java o Hibernate, e para C#
o Entity Framework. Mas, existem outras que possuem o mesmo objetivo.
5.1.1 Hibernate
Aps o sucesso do Hibernate, a especicao JPA (Java
Persistence API) foi criada como objetivo de padronizar as ferramentas ORM para
aplicaes Java e consequentemente diminuir a complexidade do desenvolvimento.
Atualmente, essa especicao est na sua segunda verso.
Ela especica um conjunto de classes e mtodos que as
ferramentas de ORM devem implementar. Veja que a JPA apenas uma
especicao, ela no implementa nenhum cdigo. Para isso, utilizamos alguma das
diversas implementaes da JPA como, por exemplo, o Hibernate. Outras
implementaes de JPA mais conhecidas so: TopLink, EclipseLink e OpenJPA. O
Hibernate o mais antigo e mais utilizado atualmente.

17
6 HERANA E POLIMORFISMO
6.1 HERANA
Esse um dos principais conceitos da POO. A herana o
compartilhamento de atributos e operaes entre classes com base em relaes
hierrquicas, ou seja, a utilizao de superclasses para criar as subclasses.
Veja o exemplo abaixo:

6.1.1 Diagrama de Classe (Herana)
Veja outro exemplo abaixo, Em geral, pode-se ter uma hierarquia de
classes relacionadas por herana / generalizao. Em cada classe da hierarquia
colocam-se as propriedades que so comuns a todas as suas subclasses, evitando-
se redundncia, promovendo a sua reutilizao.


18
6.2 POLIMORFISMO
tambm oriunda da orientao a objetos, permite que referncias de
tipos de classes mais abstratas representem o comportamento das classes
concretas que referenciam. Assim, possvel tratar vrios tipos de maneira
homognea (atravs da interface do tipo mais abstrato). Caracteriza-se por duas ou
mais classes distintas e tem mtodos de mesmo nome, de forma que uma funo
possa utilizar um objeto de qualquer uma das classes polimrficas, sem necessidade
de tratar de forma diferenciada conforme a classe do objeto.Uma das formas de
implementar o polimorfismo atravs de uma classe abstrata, cujos mtodos so
declarados mas no so definidos, e atravs de classes que herdam os mtodos
desta classe abstrata
6.2.1 Diagrama de Classe (Polimorfismo)
Figura 5 diagrama de classes herana e poliformismo

Analisando o diagrama acima, temos uma superclasse "Mamfero",e
as subclasses "Cachorro", "Macaco", "Homem", que "herdam" de
"Mamfero".Podemos dizer que Cachorro " um" Mamfero, Macaco " um"
Mamfero, Homem " um" Mamfero. As caractersticas definidas na classe

19
Mamfero, estaro presentes nas classes que herdam dela. Todos os Mamferos
tero Mamas e Pelos. Isto Herana.
Alm disto, cada classe que herda de Mamfero poder ter seus
prprios atributos que se somaro aos da superclasse. E note que a classe Homem
contm uma definio do atributo Pelos. Dando uma razo lgica para nosso
exemplo, isto porque o Homem tem pelos diferentes dos outros mamferos.
Podemos, portanto re-definir na subclasse um atributo que j estava presente na
superclasse, dando a ele caractersticas diferentes. Isto Polimorfismo:o mesmo
mtodo ou atributo pode ter funcionamento diferente em classes diferentes, mesmo
que uma herde da outra.




20
7 CONCLUSO
Foi observado neste trabalho so importantes as estruturas de
dados lineares e as principais diferenas entre suas diversas formas conceituais. E
tambm as propriedades ACID e a sua importncia para um SGBD. Foi abordada a
tcnica ORM que viabiliza a unio entre o banco de dados e POO que so os
paradigmas da computao apresentados entre as vrias ferramentas de mercado,
Hibernate. Foi observado que um dos problemas na comunicao entre uma
aplicao desenvolvida em uma linguagem orientada a objeto e um banco de dados
o conflito de paradigmas
Por ltimo, tratamos dois conceitos vitais em orientao a objetos,
herana e poliformismo com a ajuda dos diagramas de classes.











21
REFERNCIAS
ASCENSIO, Ana Fernanda Gomes.Estrutura de Dados: algoritmos, anlise
dacomplexidade e implementaes em Java e C/C++. So Paulo: Pearson
PrenticeHall, 2010.
NISHIMURA, Roberto Yukio.Banco de Dados II: sistemas. So Paulo:
PearsonPrentice Hall, 2009.
SILVA, Flvio de Almeida e. Desenvolvimento orientado a objetos I. So Paulo.
Editora Pearson, 2009.
TANAKA, Simone Sawasaki. Anlise de sistemas II. So Paulo. Editora Pearson,
2009.
http://pt.wikipedia.org/wiki/objeto relacional
Acessado em: 10/10/2012

You might also like