trabalho individual
DESCRIPTION
3º semestre individual, curso de ADS.TRANSCRIPT
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
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
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
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
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
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).
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
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
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.
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.
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
Nó
E¹ E² E³Figura 5 – Lista com encadeamento simples.
En
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¹
Nó
E² E³Figura 6 – Lista duplamente encadeada.
En
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
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
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
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
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.
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
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
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
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
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
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