SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
POLIMORFISMO EM JOGOS !
DANIEL MINOH
JULIANA VEIGA
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.
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.
POLIMORFISMO EXEMPLOS FÁCEIS E
PRÁTICOS Todos animais
pertencem a uma
mesma classe
nesse caso, usando
uma imagem com
'UML'
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.
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]
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.
• 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.
FIM ?
MAO NA MASSA

Mais conteúdo relacionado

Destaque

Diez temas candentes de la sanidad española para 2011
Diez temas candentes de la sanidad española para 2011 Diez temas candentes de la sanidad española para 2011
Diez temas candentes de la sanidad española para 2011 Ignacio Riesgo
 
Diez temas candentes de la sanidad española para 2012, Valencia, 2012
Diez temas candentes de la sanidad española para 2012, Valencia, 2012Diez temas candentes de la sanidad española para 2012, Valencia, 2012
Diez temas candentes de la sanidad española para 2012, Valencia, 2012Ignacio Riesgo
 
Descentralización de la gestión
Descentralización de la gestiónDescentralización de la gestión
Descentralización de la gestiónIgnacio Riesgo
 

Destaque (6)

MAPA DE TOLEDO
MAPA DE TOLEDOMAPA DE TOLEDO
MAPA DE TOLEDO
 
Modulowy Dom
Modulowy DomModulowy Dom
Modulowy Dom
 
Diez temas candentes de la sanidad española para 2011
Diez temas candentes de la sanidad española para 2011 Diez temas candentes de la sanidad española para 2011
Diez temas candentes de la sanidad española para 2011
 
Diez temas candentes de la sanidad española para 2012, Valencia, 2012
Diez temas candentes de la sanidad española para 2012, Valencia, 2012Diez temas candentes de la sanidad española para 2012, Valencia, 2012
Diez temas candentes de la sanidad española para 2012, Valencia, 2012
 
Chicago
ChicagoChicago
Chicago
 
Descentralización de la gestión
Descentralización de la gestiónDescentralización de la gestión
Descentralización de la gestión
 

Semelhante a Polimorfismo em jogos e sua importância para abstração e expansão

Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidJosé Alexandre Macedo
 
+REAL - Seus trabalhos da faculdade ganhando vida.
+REAL - Seus trabalhos da faculdade ganhando vida.+REAL - Seus trabalhos da faculdade ganhando vida.
+REAL - Seus trabalhos da faculdade ganhando vida.Rafael da Silva
 
Apresentação Integração ROS e JADE
Apresentação Integração ROS e JADEApresentação Integração ROS e JADE
Apresentação Integração ROS e JADEPedro Nakibar
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Matheus Calegaro
 
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...Rafael Burity
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
Lottie API Para Animações no Android
Lottie API Para Animações no AndroidLottie API Para Animações no Android
Lottie API Para Animações no AndroidVinícius Thiengo
 
Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Vinícius Thiengo
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaJosué Rockefeller
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaJosué Rockefeller
 

Semelhante a Polimorfismo em jogos e sua importância para abstração e expansão (20)

PDF.pdf
PDF.pdfPDF.pdf
PDF.pdf
 
Desenvolvimento Mobile Web e o PHP
Desenvolvimento Mobile Web e o PHPDesenvolvimento Mobile Web e o PHP
Desenvolvimento Mobile Web e o PHP
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Minicurso as3 games
Minicurso as3 gamesMinicurso as3 games
Minicurso as3 games
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
+REAL - Seus trabalhos da faculdade ganhando vida.
+REAL - Seus trabalhos da faculdade ganhando vida.+REAL - Seus trabalhos da faculdade ganhando vida.
+REAL - Seus trabalhos da faculdade ganhando vida.
 
Linha do Tempo
Linha do TempoLinha do Tempo
Linha do Tempo
 
Apresentação Integração ROS e JADE
Apresentação Integração ROS e JADEApresentação Integração ROS e JADE
Apresentação Integração ROS e JADE
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2
 
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...
Android vs. iOS - Relatório de diferenças na abordagem de interface visual e ...
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
Revista programar 23
Revista programar 23Revista programar 23
Revista programar 23
 
MonoGame business
MonoGame businessMonoGame business
MonoGame business
 
Lottie API Para Animações no Android
Lottie API Para Animações no AndroidLottie API Para Animações no Android
Lottie API Para Animações no Android
 
Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Java Script.pdf
Java Script.pdfJava Script.pdf
Java Script.pdf
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
 
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma práticaAprenda a usar os recursos “câmera” do android, criando um app de forma prática
Aprenda a usar os recursos “câmera” do android, criando um app de forma prática
 
A Stream Game
A Stream GameA Stream Game
A Stream Game
 

Mais de Daniel Giampaulo

Certificado Workshop Meu Primeiro jogo Analogico
Certificado Workshop Meu Primeiro jogo AnalogicoCertificado Workshop Meu Primeiro jogo Analogico
Certificado Workshop Meu Primeiro jogo AnalogicoDaniel Giampaulo
 
viajante dos sonhos lest make business
viajante dos sonhos lest make businessviajante dos sonhos lest make business
viajante dos sonhos lest make businessDaniel Giampaulo
 
viajante dos sonhos empressarial
viajante dos sonhos empressarialviajante dos sonhos empressarial
viajante dos sonhos empressarialDaniel Giampaulo
 
Certificado palestra IMPACTA game hour
Certificado palestra IMPACTA game hourCertificado palestra IMPACTA game hour
Certificado palestra IMPACTA game hourDaniel Giampaulo
 
Diversidade de Genero nas escolas
Diversidade de Genero nas escolasDiversidade de Genero nas escolas
Diversidade de Genero nas escolasDaniel Giampaulo
 
Recursos Desumanos, serious game
Recursos Desumanos, serious gameRecursos Desumanos, serious game
Recursos Desumanos, serious gameDaniel Giampaulo
 
Certificate of Campus Party 2019
Certificate of Campus Party 2019Certificate of Campus Party 2019
Certificate of Campus Party 2019Daniel Giampaulo
 
Daniel Minoh Giampaulo cv 7.0
Daniel Minoh Giampaulo cv 7.0Daniel Minoh Giampaulo cv 7.0
Daniel Minoh Giampaulo cv 7.0Daniel Giampaulo
 
Vem 2018, um ano de sucessos e desafios
Vem 2018, um ano de sucessos e desafiosVem 2018, um ano de sucessos e desafios
Vem 2018, um ano de sucessos e desafiosDaniel Giampaulo
 
Daniel minoh giampaulo english- 6.0 cv
Daniel minoh giampaulo english- 6.0 cvDaniel minoh giampaulo english- 6.0 cv
Daniel minoh giampaulo english- 6.0 cvDaniel Giampaulo
 
Daniel minoh giampaulo multi languade cv
Daniel minoh giampaulo multi languade cvDaniel minoh giampaulo multi languade cv
Daniel minoh giampaulo multi languade cvDaniel Giampaulo
 
Preenchendo Game Design Document
Preenchendo Game Design DocumentPreenchendo Game Design Document
Preenchendo Game Design DocumentDaniel Giampaulo
 
Puzzle design - Game Design
Puzzle design - Game DesignPuzzle design - Game Design
Puzzle design - Game DesignDaniel Giampaulo
 

Mais de Daniel Giampaulo (20)

Certificado Workshop Meu Primeiro jogo Analogico
Certificado Workshop Meu Primeiro jogo AnalogicoCertificado Workshop Meu Primeiro jogo Analogico
Certificado Workshop Meu Primeiro jogo Analogico
 
Meu primeiro jogo
Meu primeiro jogoMeu primeiro jogo
Meu primeiro jogo
 
viajante dos sonhos lest make business
viajante dos sonhos lest make businessviajante dos sonhos lest make business
viajante dos sonhos lest make business
 
viajante dos sonhos empressarial
viajante dos sonhos empressarialviajante dos sonhos empressarial
viajante dos sonhos empressarial
 
Certificado palestra IMPACTA game hour
Certificado palestra IMPACTA game hourCertificado palestra IMPACTA game hour
Certificado palestra IMPACTA game hour
 
Dani 8.0 CV
Dani 8.0 CVDani 8.0 CV
Dani 8.0 CV
 
My SQLbasic certificate
My SQLbasic certificateMy SQLbasic certificate
My SQLbasic certificate
 
Certificado Palestra PUC
Certificado Palestra PUCCertificado Palestra PUC
Certificado Palestra PUC
 
Diversidade de Genero nas escolas
Diversidade de Genero nas escolasDiversidade de Genero nas escolas
Diversidade de Genero nas escolas
 
Apocalipse land
Apocalipse landApocalipse land
Apocalipse land
 
Recursos Desumanos, serious game
Recursos Desumanos, serious gameRecursos Desumanos, serious game
Recursos Desumanos, serious game
 
Infi inovation education
Infi inovation educationInfi inovation education
Infi inovation education
 
Certificate of Campus Party 2019
Certificate of Campus Party 2019Certificate of Campus Party 2019
Certificate of Campus Party 2019
 
Daniel Minoh Giampaulo cv 7.0
Daniel Minoh Giampaulo cv 7.0Daniel Minoh Giampaulo cv 7.0
Daniel Minoh Giampaulo cv 7.0
 
Vem 2018, um ano de sucessos e desafios
Vem 2018, um ano de sucessos e desafiosVem 2018, um ano de sucessos e desafios
Vem 2018, um ano de sucessos e desafios
 
Indies ´Premieres
Indies ´PremieresIndies ´Premieres
Indies ´Premieres
 
Daniel minoh giampaulo english- 6.0 cv
Daniel minoh giampaulo english- 6.0 cvDaniel minoh giampaulo english- 6.0 cv
Daniel minoh giampaulo english- 6.0 cv
 
Daniel minoh giampaulo multi languade cv
Daniel minoh giampaulo multi languade cvDaniel minoh giampaulo multi languade cv
Daniel minoh giampaulo multi languade cv
 
Preenchendo Game Design Document
Preenchendo Game Design DocumentPreenchendo Game Design Document
Preenchendo Game Design Document
 
Puzzle design - Game Design
Puzzle design - Game DesignPuzzle design - Game Design
Puzzle design - Game Design
 

Polimorfismo em jogos e sua importância para abstração e expansão

  • 1. POLIMORFISMO EM JOGOS ! DANIEL MINOH JULIANA VEIGA
  • 2. 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.
  • 3. 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.
  • 4. POLIMORFISMO EXEMPLOS FÁCEIS E PRÁTICOS Todos animais pertencem a uma mesma classe nesse caso, usando uma imagem com 'UML'
  • 5. 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.
  • 6. 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]
  • 7. 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.
  • 8. • 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.
  • 9. FIM ? MAO NA MASSA