Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Importância do Polimorfismo e Abstração em softwares

O uso dessas duas idéias, ou técnicas, em Java é de vital importância no mundo dos softwares.
Usamos isso o tempo inteiro e nem notamos.

Como programador Java, você deverá ter uma boa capacidade de criatividade e abstração em seus aplicativos.
Vamos mostrar alguns exemplos da utilidade do polimorfismo na abstração em Java.


Exemplos de polimorfismo e abstração em aplicações: 

Jogos de Carro, Flight Simulator, plugins e linguagens de programação

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.

Nenhum comentário:

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java