polimorfismo em jogos

9
POLIMORFISMO EM JOGOS ! DANIEL MINOH JULIANA VEIGA

Upload: daniel-giampaulo

Post on 22-Mar-2017

70 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Polimorfismo em jogos

POLIMORFISMO EM JOGOS !DANIEL MINOH

JULIANA VEIGA

Page 2: Polimorfismo em jogos

OQUE É POLIMORFISMO ?

• Traduzindo, do grego, ao pé da letra, polimorfismo significa "muitas formas".

Essas formas, em nosso contexto de programação, são as subclasses/objetos

criados a partir de uma classe maior, mais geral, ou abstrata.

Polimorfismo é a capacidade que o Java nos dá de controlar todas as formas

de uma maneira mais simples e geral, sem ter que se preocupar com cada

objeto especificamente.

Mais uma vez, somente pela definição é muito complicado de entender.

Page 3: Polimorfismo em jogos

POLIMORFISMO EXEMPLOS FÁCEIS E PRÁTICOS

• Exemplo 1 de Polimorfismo: Aumento no preço dos carros

• Vamos pra nossa loja de carros, onde você é o programador Java de lá.

Lembra que aprendeu, através de exemplos, a criar uma classe bem genérica, chamada "Carro"?

E depois criamos várias subclasses, de fuscas, ferraris, gols etc.

Imagine que, todo ano, todos na empresa tem um aumento.

A Ferrari teve aumento de 5%. o fusca terá aumento de 3% e o gol terá de 1%.

Note que, embora todos sejam "Carro", cada objeto terá que calcular seu aumento de forma diferente, pois terão diferentes valores de

aumento. Como criar, então, um método na superclasse que atenda todas essas necessidades diferentes?

Não é na superclasse que se resolve, mas nas subclasses, criando o método 'aumento()' em cada uma.

Ou seja, vai criar vários métodos, e para fazer o aumento realmente ocorrer de maneira correta, é só invocar o método do objeto

específico.

Então: objetoFerrari.aumento() é diferente de objetoFusca.aumento().

Note que usamos o mesmo nome do método para todas as subclasses, porém cada método é diferente um do outro.

Isso é o polimorfismo em ação: embora todos os objetos sejam "Carro", eles terão uma forma diferente de agir, pois implementamos os

métodos de maneira diferente.

Apenas invocamos, e todo objeto sabe exatamente o que fazer.

Por isso o nome polimorfismo, pois cada objeto terá sua forma própria de como rodar, pois os métodos 'aumento()' dos objetos são

diferentes.

Outra vantagem do polimorfismo: você já viu que, criando o método aumento() em toda as subclasses, ela agirão de maneira independente

da superclasse e diferente de outros objetos.

Agora, quando chegar outro carro na sua loja você de adicionar o método aumento(), e terá um novo tipo de objeto, sem grandes

alterações no código.

Page 4: Polimorfismo em jogos

POLIMORFISMO EXEMPLOS FÁCEIS E PRÁTICOS Todos animais

pertencem a uma mesma classe

nesse caso, usando uma imagem com

'UML'

Page 5: Polimorfismo em jogos

ENTENDO O POLIMORFISMO COM SIMPLES PALAVRAS

• Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porém, com implementações lógicas diferentes.

Page 6: Polimorfismo em jogos

POLIMORFISMO EM JOGOS• Vamos pegar um jogo de aventura como exemplo

• Um guerreiro, Um arqueiro e Um mago são classes distintas mas todos são polimórficas de uma classe central chamada Personagem[usa arma]

Page 7: Polimorfismo em jogos

MAIS POLIMORFISMO EM JOGOS• Diferente de antes, hoje em dia os jogos são mais personalizáveis. Antes você somente rodava e usava o que o jogo permitia, e nada mais.

Atualmente, os jogos são feitos com elevados níveis de abstração e funcionam à base de polimorfismo.

Por exemplo, um jogo de carro. O software já vem com alguns carros e pistas feitas para você jogar, porém é comum a prática da criação de

pistas, carros, manobras, cenários.

No jogo Flight Simulator, de aviões, é possível baixar na internet diversos tipos de aeronaves, helicópteros, cidades, aeroportos, pistas de

pouso cor de rosa e até um kombi que voa você pode adicionar.

Aqui a gente se pergunta: como um jogo que foi lançado em uma época, dá suporte e aceita que usemos carros voadores, manobras novas

de carro e outros tipos de customização? Não tem como os programadores do jogo adivinhar o que as pessoas vão criar e adicionar ao seu

aplicativo. Que magia é essa, então?

Ora, o jogo é feito com abstração e polimorfismo. Ao programar esses tipos de games, os desenvolvedores já pensam que as pessoas vão

adicionar novas funcionalidades, então eles focam nisso: programam de modo que o aplicativo possam receber esses novos dados.

Porém, não pode ser qualquer tipo de dado. É necessário uma padronização, que recebem algumas informações, processem e retornem

outros dados para o programa. A entrada e saída - que é a comunicação das novas funcionalidades com o soft - é o mais importante.

Page 8: Polimorfismo em jogos

• Se é uma kombi ou um dinossauro que vai voar, não importa. O jogo Flight Simulator não vai se importar com a figura, pode ser até a foto de seu cachorro. O

importante é que seu 'avião' tenha as informações que o jogo necessita, como peso, tamanho, tipo de turbina, asa etc.

Com base nesses dados é que o game sabe se sua 'aeronave' vai subir, cair, explodir, qual velocidade é a necessária para decolar, dentre outros detalhes

minuciosos.

A grosso modo, é como se o jogo tivesse diversos métodos abstratos como: 'pousar()', 'decolar()', 'pane()' e outros detalhes necessários para um vôo. Ora, como

cada aeronave vai se portar, especificamente, vai depender de quem vai programar as aeronaves (que pode ser qualquer usuário), o importante é que você

forneça informações ao jogo sobre o pouso, decolagem e que condições seu avião entra em pane.

O mesmo acontece com alguns jogos modernos de carros. Podemos montar qualquer um, praticamente do zero.

Para esses adicionais funcionarem, o jogo é feito de modo que, se você criar um carro e informar detalhes importantes como: quantos quilômetros fazem com 1

litro, velocidade máxima, peso, potência do motor etc, seu carro vai funcionar e se adaptar perfeitamente no game. O jogo já vem com essa 'abstração'. Você só

precisa programar o seu carro, especificamente, para fornecer esses dados. Assim, sua criação se encaixará perfeitamente com a aplicação.

Outro claro exemplo são os plugins, como os de navegadores. Você mesmo pode criar uma funcionalidade para seu Firefox ou Chrome, basta saber como eles

'querem' receber as informações, saber que comandos vai alterar que parte do programa exatamente.

Uma linguagem de programação, por exemplo, exige alto nível de abstração para ser criada, afim de suportar o polimorfismo que vamos fazer com ela. Afinal,

uma linguagem de programação como o Java, tem projetos que foram usados até por robôs da NASA em Marte.

Ao criar a linguagem, se criaram certas funções, sintaxes e comandos. A definição destes especifica para que servem, como usar e o que esperar do resultado

de tais funcionalidades.

Sabendo disso, você pode programar o que quiser, do tanto que escreva conforme a sintaxe e use corretamente os comandos. O interpretador de Java saberá

exatamente o que executar, desde que você o oriente de forma correta.

Ou seja, se programar corretamente, o Java suportará várias 'formas' de aplicativo e os executará. Isso que é polimorfismo, não?

Portanto, vimos que a abstração e o polimorfismo são essenciais para se criar aplicações dinâmicas, que permitam o crescimento e a interação com o usuários.

Lembre-se: nenhuma aplicação é ilha. Tudo precisa de interação e expansão.

Page 9: Polimorfismo em jogos

FIM ?MAO NA MASSA