35
SISTEMA DE ENSINO PRESENCIAL CONECTADO SUPERIOR DE TECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE SISTEMAS CLEMILTON DOS SANTOS LOBO PROGRAMAÇÃO DE A Á Z Aprenda usar Modelos de Programação, usando OMR e a usar Técnicas de Consulta, utilizando a propriedade ACID.

Trabalho Individual

Embed Size (px)

DESCRIPTION

3º semestre individual, curso de ADS.

Citation preview

Page 1: Trabalho Individual

SISTEMA DE ENSINO PRESENCIAL CONECTADOSUPERIOR DE TECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE

SISTEMAS

CLEMILTON DOS SANTOS LOBO

PROGRAMAÇÃO DE A Á ZAprenda usar Modelos de Programação, usando OMR e a usar Técnicas de

Consulta, utilizando a propriedade ACID.

Vitória da Conquista2012

Page 2: Trabalho Individual

CLEMILTON DOS SANTOS LOBO

PROGRAMAÇÃO DE A Á ZAprenda usar Modelos de Programação, usando OMR e a usar Técnicas de

Consulta, utilizando a propriedade ACID.

Trabalho apresentado ao Curso (superior de tecnologia em análise e desenvolvimento de sistemas) da UNOPAR - Universidade Norte do Paraná, para a disciplina [Análise de Sistemas II; Desenvolvimento Orientado a Objeto I; Banco de Dados II; Algoritmos e Estruturas de Dados].

Prof.ª Polyana P. Gomes Fabris;Marcio Chiaveli;Roberto Nishimura;Merris Mozer;

Vitória da Conquista2012

Page 3: Trabalho Individual

SUMÁRIO

1 INTRODUÇÃO...........................................................................................3

2 OBJETIVO.........................................................................................................4

3 LISTA LINEARES.............................................................................................5

3.1 OPERAÇÕES BÁSICAS (INCLUSÃO E EXCLUSÃO)..........................................6

3.1.1 Vantagens e Desvantagens do Uso Fifo.............................................................7

3.1.1.1 Conceitos sobre lifo - pilha...............................................................................7

3.1.1.1.1 Operações básicas (inclusão e exclusão).....................................................9

3.2 CONCEITOS DE ALOCAÇÃO SIMPLES ENCADEADA E DUPLAMENTE

ENCADEADA...............................................................................................................9

3.2.1 Simplismente Encadeada..................................................................................10

3.2.1.1 Duplamente encadeada.................................................................................10

3.2.1.1.1 Vantagens e desvantagens do encadeamento simples e duplamente

encadeado..................................................................................................................11

4 CONCEITOS DA PROPRIEDADE ACID................................................................13

4.1 BANCO DE DADOS RELACIONAL COM PROGRAMAÇÃO ORIENTADA A

OBJETOS...................................................................................................................14

4.1.1 Significado de ORM (Object Relational Mapping).............................................14

4.2 Apresentando uma Ferramenta Para Fazer ORM...............................................15

4.2.1 Conceitos de Hibernate.....................................................................................15

4.2.1.1 Características................................................................................................16

4.3 CONCEITOS DE HERANÇA E POLIMORFISMO...............................................18

5 CONCLUSÃO.........................................................................................................21

6 REFERÊNCIAS.......................................................................................................22

Page 4: Trabalho Individual

1 INTRODUÇÃO

Este trabalho apresenta uma base sobre conceitos aplicáveis que

auxiliam os analistas e desenvolvedores, e será abordadas as seguintes diretrizes:

Listas lineares e seus conceitos, seus apontamentos, suas ordens

de para inclusão, exclusão e pesquisa, vou inserir exemplos do cotidiano e da

informática sobre listas lineares.Também irei abordar a definição sobre as seguintes

alocações:

Simplesmente encadeada;

Duplamente encadeada;

Também será apresentado gráficos das duas referidas alocações de

encadeamento, e explicar com meu entendimento, qual delas tem maior vantagem,

seguido do motivo.

No que se refere a banco de dados, vou explicar os conceitos da

propriedade ACID (Atomicidade, Consistência, Isolamento e Durabilidade),

exemplificar com alguns exemplos. Como utilizar um banco de dados usando a

programação orientada a objeto e o que significa ORM (Object Relational Mapping)?

Será explicado como se faz a utilização de um banco de dados com

programação orientada a objetos, com a elaboração de exemplos e explicar o que

vem a ser ORM (Mapeamento Objeto Relacional).

Por fim será feito uma definição e representação através do

diagrama de classe a definição de herança e polimorfismo.

E para conclusão desse trabalho, falarei das minhas reflexões sobre

experiências obtidas com a elaboração desse trabalho.

3

Page 5: Trabalho Individual

2 OBJETIVO

O objetivo neste trabalho é passar com clareza os assuntos

abordados para um melhor entendimento aos leitores, espero que esse

conhecimento adquirido, possa também ajudar a aumentar meus conhecimentos

sobre os temas abordados.

Espero também que essas melhorias, com o uso de novas

ferramentas e novos processos sejam aplicados pelos analistas e programadores

afim de ter um trabalho mais optimizado.

Será adicionado assuntos similiares ao tema abordado, não no

sentido de “engordar o trabalho”, mas sim de errinquecer o tema abordado e para

que o leitor possa ter um melhor esclarecimmento. Minha intensão desse trabalho é

ajudar ao proximo, que como eu precisei pesquisar, acredito que outras pessoas

também possam usar esse tema como fonte de pesquisa e claro também para

conseguir uma boa “nota”.

4

Page 6: Trabalho Individual

3 LISTA DE LINEARES

As listas lineares impoem dois criterios de ultilização, onde a forma

de inserção e remoção são diferentes uma das outras. Vamos agora comentar sobre

estes dois critérios, que são:

Fifo-Filas;

Lifo-Pilhas;

Levando em consideração o critério sobre o conceito FIFO - FILAS,

podemos afirmar que, que a ordem de inserção e remoção, segue da seguinte

forma:

As filas (queues) são conjuntos de elementos (ou listas), cujas

operações de remoção são feitas por uma extremidade chamada “frente” (head), e

todas as inseções são feitas na outra extremidade chamada “cauda” (tail). Usando

como critério FILA. Na figura 1, você confere a ilustração.

Esta mesma ilustração referente a figura 1, demostra caso da vida

real, creio eu que até você mesmo, caro leitor, já passou por essa situação de pegar

fila em alguns supermecado para fazer suas compras ou ate mesmo na padaria

comprando seu pão, em fim em varias situações. Essas mesma situações podem

ser equiparadas ao conceito FIFO (First in, First out), que significa, que o primeiro

elemento a entrar na fila será o primeiro elemento a sair da fila, na liguagem em

portugues esse conceito é definido como PEPS (primeiro entrar, primeiro sair).

5

Elemento

Elemento

Elemento

Elemento

Elemento

Elemento

Elemento

Legenda:

O primeiro elemento a entrar será o primeiro elemento a sair (Head).

Novos elementos são armazenados no fim da fila (Tail).

Sequencia armazenada em fila.

Figura 1 - (FIFO).

Page 7: Trabalho Individual

Ele é composto das seguintes operações: (F sendo uma fila e X um

elemeto).

Enqueue (F,x) – Acrescenta o elemento x na fila F (o tamanho

de F aumenta)

Dequeue (F) – Remove e retorna o primeiro elemento da fila

(o tamanho do F diminui).

Vazia (F) – Verifica se a fila está vazia (não tem nenhum

elemento nela).

Inicializa (F) – Inicializa a fila para receber elementos (uma fila

é inicializada no estado vazia).

Cheia (F) – Verifica se a fila está cheia (não pode aceitar mais

elementos).

O critério fila é usando por sistemas operacionais para regular a

ordem na qual as tarefas devem receber processamento e recursos devem ser

alocados a processos.

3.1 OPERAÇÕES BÁSICAS (INCLUSÄO E EXCLUSÃO)

Existem, basicamente, duas operaçöes básicas a serem

implementadas na filas : adicionar e remover. É comum a utilizaçäo de um ponteiro

para o início e outro para o fim da fila, facilitando assim as operaçöes.

Adicionar - procedure adiciona (var inicio : ponteiro ; info : InfoType);

Remover - function remove (var inicio : ponteiro) : InfoType;

6

Page 8: Trabalho Individual

3.1.1 Vantagens e Desvantagens do Uso Fifo:

Vantagens:

O mais simples entre os processos de escalonamento;

Todos os processos tedem a serem atendidos;

Desvantagens:

Muito sensilvel a ordem de chegada;

Se os processos maiores chegarem primeiros aumentaram o

tempo de espera;

Não garante um tempo de resposta rápido;

Não é eficiente em sistemas de tempo compartilhado;

Não é eficiente em sistemas de tempo real;

3.1.1.1 Conceitos sobre lifo - pilha

Conceitos de Lifo (last in, first out), que em português significa ultimo

a entrar, primeiro a sair (UEPS), referese a estruturas de dados do tipo Pilha, é

equivalente a FILO, que significa last in, first in, last out, ou em português PEUS, ou

sejá, primeiro a entrar, ultimo a sair.

Em ciencia da computação, uma pilha (stack em ingles) é um tipo de

abstrato de dados, baseado no principio LIFO. Seu uso na informatica se deve

extensivamente em cada nivel de um sistema de computação moderno, por

exemplo, um pc moderno usa pilha no modo arquitetura, as quais são usadas no

design básico de um sistema operacional para manipular interrupções e chamadas

de função do sistema operacional. Entre outro usos, pilhas são usadas para

executar uma máquina virtual java e a propria linguagem java possui uma classe

denominada “stack ” as quais poderar ser usadas pelos programadores.

Na figura 2, você conferê a representação simples de uma pilha.

7

Figura 2 – Representação básica de uma pilha

Page 9: Trabalho Individual

Para que fique mais claremente o entendimento da pilha, vou dar

exemplos do uso na vida cotidiana, por exemplo, neste exato momento da

elaboração deste trabalho, estou com uma pilha de livros ao meu lado, que por sinal

o livro que está no topo, tem a maior quantidade de informações que preciso agora,

com isso agilizando meu tempo, acho que você também já se deparou com uma

situação parecida com essa, você vai na cozinha e ta lá uma pilha de pratos, para

serem lavados, quem for lavar não irá tirar o prato debaixo de todos, pois perderá

um tempo tentando tirar, ira perceber que a melhor opção será tirar o prato de cima

(ou no topo), o mesmo ocorre no exemplo com o uso de pilha na informatica. Na

figura 3, você confere essa ilustração.

3.1.1.1.1 Operações básicas (inclusão e exclusão)

8

Sequencia armazenada em pilha.

Novos elementos são armazenados no top da pilha.

O ultimo elemento que entrou será primeiro elemento a sair.

Figura 3 – Conceito de pilha.

Page 10: Trabalho Individual

Por razöes históricas, as duas operaçöes primárias de pilha

(inserçäo e retirada) – São normalmente chamadas de push e pop, respectivamente.

Assim para implementar uma pilha säo necessärias duas funções :

PUSH – coloca um elemento no topo da pilha.

Procedure push (var inicio : ponteiro; info : InfoType);

POP – retira um elemento do topo da pila.

function pop (var inicio : ponteiro) : InfoType;

3.2 CONCEITOS DE ALOCAÇÃO SIMPLES ENCADEADA E DUPLAMENTE

ENCADEADA

Antes de começar a explicar o que é uma lista simplismete

encadeada e duplamente encadeada, vou explicar o que é uma lista encadeada.

Lista encadeada é um conjunto de elementos que estão dispostos

em uma dada organização física não linear, isto é, estão espalhados pela memória.

Para organizar a lista de uma maneira que possa ser utilizada como um conjunto

linear, é necessário que cada elemento do conjunto possua informações sobre seu

elemento anterior e seu elemto seguite, para exemplificar, será utilizada uma lista de

pagamento que devem ser efetuado no mês. Os pagamentos são dispostos em uma

ordem aleatória, isto é linear.

Agora que já temos uma noção sobre lista encadeadas, vou explicar

melhor sobre lista simplismente encadeada.

Lista de Pagamentos:

Prestação do carro

Cartão de crédito

Conta da luz

Condominio

Tv a cabo

Crediário das casas bahia

9

Figura 4 – Lista Simples.

Page 11: Trabalho Individual

3.2.1 Simplismente Encadeada

Esse tipo de lista é a mais simples, os elementos da lista possuem

apenas um ponteiro, que aponta para o elemento sucessor ou próximo (na figura 5,

você confere a ilustração). Para que ela seja uma lista simplismente encadeada, ela

deve obedecer as seguintes regras:

Deve existir apenas um ponteiro que aponte para o primeiro

elemento da lista (inicio da lista);

Cada elemento, ou nó, aponta para o próximo sucessivamete

(daí o nome lista encadeadas);

O último elemento deve apontar para NULL, indicando o final

da fila (Na figura 5 você confere a representação gráfica.);

3.2.1.1 Duplamente encadeada

Esse tipo de lista é praticamente o oposto da lista de encadeamento

simples, cada elemento possui um campo que aponta para o seu prodecessor

(anterior) e outro para o seu sucessor (próximo).

Regras que a lista duplamente encadeada deve seguir:

Deve existir dois ponteiros uma para que aponte para seu

prodecessor e outro para apontar para seu sucessor;

O primeiro elemento (ou nó), deverá apontar seu prodecessor

10

E¹ E² E³Figura 5 – Lista com encadeamento simples.

En

Page 12: Trabalho Individual

para NULL (caso não possua nenhum elemento anterior);

O ultimo elemento deverá apontar seu sucessor para NULL

(caso não possua nenhum elemento posterior);

Na figura 6, você confere a representação gráfica.

3.2.1.1.1 Vantagens e desvantagens do encadeamento simples e duplamente

encadeado

Encadeamento Simples

Desvantagem:

Em uma lista encadeada simples, não temos como percorrer

eficientemente os elementos em ordem inversa, isto é, do

final para o início da lista;

Difuculta a remoção de um elemento da lista;

Vantagens:

Na época em que a memoria, Ram ou HD era cara e limitada,

fazia mais sentido economizar o espaço de alocação de um

ponteiro (hojé atualmente normalmente se opta por optimizar

as operações e não pela economia de memoria. Mas ainda

existe exceções.);

Duplamente Encadeados

Desvantagem:

Consome mais espaço, por possuir dois apontadores

Vantagem:

11

E² E³Figura 6 – Lista duplamente encadeada.

En

Page 13: Trabalho Individual

Deixa a operação mais optimizada;

As operações de inserção, exclusão e pesquisa são mais

rápidas. Numa lista duplamente encadeada, por possuir

ponteiros para o nó anterior e para o nó posterior, estas

operações são menos dispendiosas, pois não há necessidade

de se percorrer novamente a lista a partir do início como é o

caso das listas simplesmente encadeadas (isso vai depender

do tamanho e volume);

Conclusão:

De acordo com as informações obtidas e com minha propria

ideologia, a lista duplamente encadeada é mais vantajosa. Primeiro que, o que se

faz mais em um projeto são as operações de inserçao exclusão e pesquisa, já nesse

ponto você já ganha agilidade, segundo é que hojé em dia dificilmente existirá uma

maquina com pouco espaço de memoria, então pra que fazer um projeto que seja

rápido (‘‘porque você escolheu um encadeamento simples’’), mas apresentar

defeitos (bugs) futuramente, por conta disso.

12

Page 14: Trabalho Individual

4 CONCEITOS DA PROPRIEDADE ACID

As propriedades ACID (atomicidade, consistência, isolamento e

durabilidade) são fundamentais nos bancos de dados, sejam os relacionais ou os

orientados a documentos. Então, também é valido tratarmos desse assunto

referente aos bancos relacionais, em um contexto geral. Atualmente os sistemas de

informação suportam vários usuários.

O banco de dados tem que garantir a confiabilidade nas transações,

haja vista que muitas podem ocorrer concorrentemente ou seja um banco de dados

que não puder fazer os procesos da propriedade acid, esse não será um legitimo

banco de dados.Vamos conhecer o significado de cada propriedade acid:

Atomicidade

A propriedade de atomicidade garante que as transações

sejam atômicas (indivisíveis). A transação será executada

totalmente ou não será executada.

Consistência

A propriedade de consistência garante que o banco de dados

passará de uma forma consistente para outra forma

consistente.

Isolamento

A propriedade de isolamento garante que a transação não

será interferida por nenhuma outra transação concorrente.

Durabilidade

A propriedade de durabilidade garante que o que foi salvo,

não será mais perdido.

13

Page 15: Trabalho Individual

4.1 BANCO DE DADOS RELACIONAL COM PROGRAMAÇÃO ORIENTADA A

OBJETOS

Para esse tipo de programação, primeiramente devemos ter essa

ferramenta (ou biblioteca) que faz a conversão do seu banco de dados, de tabelas

para classes e os registros de cada tabela são representados como instancias das

classes correspondentes. Usando a tecnica de ORM, o programador não irá precisar

fazer os comando em liguagem SQL, ele irá utilizar uma interface de programação

simple que faz todo o trabalho de persistêcia.

4.1.1 Significado de ORM (Object Relational Mapping)

Como existem diferenças conceituais entre o modelo relacional

usados pelos bancos de dados e a orientação a objetos, acabou surgindo a técnica

de mapeamento objeto-relacional (ORM). Esta técnica sugere como devemos

persistir o estado de um objeto (atributos, relacionamentos e herança) em tabelas de

banco de dados relacional (como Oracle, SQL Server, DB2, MySQL, etc).

Diversas plataformas e linguagens promovem esta técnica através

de frameworks. Na plataforma Java existe o consagrado framework Hibernate e

agora um padrão chamado JPA. Já na plataforma .NET também podemos encontrar

o Nhibernate (um porte do Hibernate para .NET), o Microsoft s ObjectSpaces e

LINQ, dentre outros. Agora será mostrada uma lista com mais detalhes sobre essas

ferramentas e suas linguagem de programação ultilizada:

ADO.NET Entity Framework – Para a linguagem de

programação Visual Basic .NET e C#;

DBIx::Class – Para a linguagem de programação Perl;

SQLObject – Para a linguagem de programação Python;

Hibernate – Para a linguagem de programação Java;

14

Page 16: Trabalho Individual

OJB – Para à linguagem de programação Java, da Apache

Software Foundation;

Django (framework web) – Framework de desenvolvimento

web escrito em Python que possui um ORM próprio;

ECO – Enterprise Core Object – Para a linguagem de

programação Delphi;

Nhibernate – Para a linguagem de programação .NET;

EntityCloud – Um ORM tipificado para .NET;

Doctrine (PHP) – Para a linguagem de programação PHP;

Active Record – Para a linguagem de programação Ruby on

Rails;

TMS Aurelius – Para a linguagem de programação Delphi;

Syrius ORM (php) [1] – Framework ORM escrito em PHP;

4.2 APRESENTANDO UMA FERRAMENTA PARA FAZER ORM

Como citado anteriormente existem varia ferramentas para fazer

uma ORM e cada uma para varios tipos de linguagens diferente,(algumas

ferramentas são iguais para mesma linguagem, mas com tecnicas diferentes).

Por fim irei falar mais detalhadamente da Hibernate.

4.2.1 Conceitos de Hibernate

O Hibernate é uma ferramenta de mapeamento objeto-relacional

para Java. Sua utilização faz com que o desenvolvedor não precise escrever

consultas SQL e muitas linhas de código de acesso a banco de dados.

15

Page 17: Trabalho Individual

Distribuído sob licença LGPL é uma das ferramentas ORM (Object-

Relational Mapping) mais utilizadas para a plataforma Java. Existem duas maneiras

de configurar o ambiente para usar o Hibernate. Uma configuração automatizada

usando o Maven e outra manual.

De Acordo com o Wikipédia:

O Hibernate é um framework para o mapeamento objeto-relacional

escrito na linguagem Java, mas também é disponível em .Net como o nome

NHibernate. Este framework 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) ou anotações Java.

Hibernate é um software livre de código aberto distribuído com a

licença LGPL.Na figura 7, são mostradas as especificações do Hibernate.

Hibernate

Desenvolvedor: Red Hat

Versão estavel: 4.0.1 GA(28 de outubro de 2009)

Sistema Operacional: Multiplataforma

Gênero(s): Mapeamento Objeto Relacional(ORM)

Licença: LGPL

Pagina Oficial: www.hibernate.org

4.2.1.1 Características

O objetivo do Hibernate é 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).

16

Figura 7 – Hibernate Especificação.

Page 18: Trabalho Individual

O Hibernate 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.

Nas questões relacionadas para o gerenciamento de transações e

na tecnologia de acesso à base de dados são de responsabilidade de outros

elementos na infraestrutura do programa. Apesar de existirem API no Hibernate para

possuir operações de controle transacional, ele simplesmente delegará estas

funções para a infraestrutura na qual foi instalada.

No caso de aplicações construídas para serem executadas em

servidores de aplicação, o gerenciamento das transações é realizado segundo o

padrão JTA. Já nas aplicações standalone, o programa delega o tratamento

transacional ao driver JDBC.

Hibernate pode ser utilizado em aplicações Java standalone ou em

aplicações Java EE, utilizando servlet ou sessões Enterprise Java Beans.

História

Hibernate foi criado por desenvolvedores Java, espalhados ao redor

do mundo, e liderado por Gavin King. Posteriormente, JBoss Inc (empresa comprada

pela Red Hat) contratou os principais desenvolvedores do programa para fazer o seu

suporte.

A atual versão do Hibernate é a 4.x, que incorporou características

como a nova arquitetura Interceptor/Callback, filtros definidos pelo usuário e

anotações JDK 5.0 (Metadados do Java), que substitui os arquivos XML. Hibernate 3

também se aproxima das especificações EJB 3.0 e atua como a espinha dorsal das

implementações EJB 3.0 em JBoss.

HQL

A HQL (Hibernate Query Language) é um dialeto SQL para o

Hibernate. Ela é uma poderosa linguagem de consulta que se parece muito com a

SQL, mas a HQL é totalmente orientada a objeto, incluindo os paradigmas de

herança, polimorfismo e encapsulamento.

No Hibernate, você pode escolher tanto usar a SQL quanto a HQL.

Escolhendo a HQL, você poderá executar os pedidos SQL sobre as classes de

persistência do Java ao invés de tabelas no banco de dados.

17

Page 19: Trabalho Individual

Na figura 8, você pode conferir uma ilustração do Mapeamento

Objeto-Relacional

4.3 CONCEITOS DE HERANÇA E POLIMORFISMO

Herança é um mecanismo importante quando um grupo de classes

apresenta a mesma interface, mas a implementação interna dos métodos é

diferente. É também um conceito bem simpes de entender e der ser programado,

principalmente dentro Csharp, que assim como o Java não permite herança mutipla.

Como conceitos de herança podemos citar a herança de uma carga

genética nos animais, pricipalmente nos seres humanos, considere o seguinte

exemplo:

Você é um ser humano que, em termos genéticos, foi “montado”

com etade dos cromossomos de um homem e a outra metade é dos cromossomos

de uma mulher, seu pai e sua mâe. No caso de herança em Csharp tem-se a

mesma ideologia a classe PAI (base) e as classes FILHAS (derivadas), então a

classe filha herda tudo que estiver definido da classe pai. Porém a classe filha só

poderá herdar de uma única classe pai, não podendo herdar nada de oura classe.

Na figura 9 temos um diagrama com exemplo de herança.

18

Figura 8 – Mapeamento Objeto-Relacional.

Mamiferos

MamaPelos

Macaco

MamaPelos

Cachorro

MamaPelos

Diagrama de Classe Herança

Pai (base)

Filhas (derivadas)

Figura 9 – Diagrama de classe Herança

Page 20: Trabalho Individual

Polimorfismo é uma característica em orientação a objetos que usa a

hierarquia de objetos. Podems dizer ainda que polimorfismo é uma palavra originária

do Grego que significa várias(poli) formas(fismo). Numa linguagem de programação,

isso significa que pode haver várias formas de fazer uma determinada "coisa".

Em Java, o polimorfismo manifesta apenas nas chamadas de

métodos, isto significa dizer que uma chamada de método pode ser executada de

várias formas(ou polimorficamente) sendo que quem irá decidir qual forma é o objeto

que recebe a chamada. Em muitas literaturas os autores cometem o erro ao

considerar que o polimorfimos só ocorre quando há sobrescrita de método(override)

o que implicitamente obriga a ter um modelo baseado na hierarquia de classes.

Esta afirmação na sua essência não é de total verdade, pois a muito

tempo a sobrescrita de método deixou de ser considerado polimorfismo. Podemos

ter polimorfismo sem que seja baseado em herança.

19

Page 21: Trabalho Individual

Definição de Herança dos principais autores: “Polimorfismo é o

princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse

podem invocar métodos que têm a mesma identificação (assinatura) mas

comportamentos distintos, especializados para cada classe derivada, usando para

tanto uma referência a um objeto do tipo da superclasse”. Veja o diagrama abaixo

(figura 10).  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. 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.

20

Figura 10 – Explemplo de herança e polimorfismo no mesmo diagrama.

PolimorfismoHerança

Page 22: Trabalho Individual

5 CONCLUSÃO

A conclusão desse trabalho foi bastante árduo, não pelo motivo de

que não achava o assunto, mas sim pelo motivo, de que um bom trabalho, não basta

você pesquisar o assunto e copiar e colar, tem que lê , relê e aplicar aquilo que você

está pesquisando, este conceito me ajudou bastante a aplicar esse conhecimento

adquirido no dia a dia, ao contrario se fosse feito no “copiar, colar”, estária

prejudicando a mim próprio e talvéz até passando alguma informação errada para os

leitores, pois se tivesse aplicado o conhecimento adquirido, você também estária

verificando se tal informação é veridica.

Um exemplo, de uso do conhecimento adquirido, foi quando tive que

pesquisar uma ferramenta para fazer uma ORM, fiz a pesquisa, pesquisei varios

livros, mas alem das pesquisas achei que era quase uma obrigação, fazer um

exemplo de uso da ferramenta para fazer uma ORM, apesar de não conhecer muito

bem a ferramenta, mas com o uso dos conhecimentos colocado em prática, me

proprocionou a dar um bom exemplo, para vocês leitores.

21

Page 23: Trabalho Individual

6 REFERÊNCIAS

NISHIMURA, Roberto Yukio. Banco de dados II. 2ª. São Paulo:

Person, 2011.

Deliberador, Paulo de Tarsio. Algoritimos e estruturas de Dados.

3ª. São Paulo: Person 2009.

Tanaka, Simone Sawasaki. Analise de Sistemas II. 3ª. São Paulo:

Person 2009.

Silva, Flávio de Almeida e. Desenvolvimento Orientado a Objeto I.

3ª. São Paulo: Person 2009.

Froes, Charles Miranda. Auxilio na elaboração do trabalho. Vitoria

da Conquista: 2012.

UNIVERSIDADE FEDERAL DO PARANÁ. Biblioteca Central.

Normas para apresentação de trabalhos. 2. ed. Curitiba: UFPR, 1992. v. 2.

___________.Pesquisa<http://docs.jboss.org/hibernate/orm/3.5/reference/

ptBR/html/queryhql.html> Acessado dia 09/05/12 as 24:30

___________.Pesquisa<http://pt.wikipedia.org/wiki/Hibernate> Acesso em

09/05/12 as 23:00

___________.Pesquisa<http://www.k19.com.br/artigos/configurando-hibernate-

com-mysql/>Acesso em 08/05/12 as 21:00

___________.Pesquisa<http://www.youtube.com/watch?v=kPKALB_I55M>

Acesso em 09/05/12 as 23:00

___________.Pesquisa<http://www.thiagovespa.com.br/blog/2010/09/18/mysql-

workbench/>Acesso em 08/05/12 as 23:50

___________.Pesquisa<http://www.youtube.com/watch?

v=6GeOu02mLOc&feature=related>Acesso em 07/05/12 as 20:35

___________.Pesquisa<http://br.answers.yahoo.com/question/index?

qid=20120418155340AAiVZPJ>Acesso em 06/05/12 as 15:00

___________.Pesquisa<http://phpbrasil.com/artigo/VoCFs7J7B1Ce/orm-no-

php5-utilizando-o-sqlreactor>Acesso em 06/05/12 as 12:00

___________.Pesquisa<http://www.globalcode.com.br/gratuitos/minicursos/

minicurso-introducao-a-hibernate>Acesso em 05/05/12 as 10:00

22