Polimorfismo na programação orientada a objetos

Você quer saber o que é polimorfismo? No artigo a seguir, forneceremos informações detalhadas sobre o que é chamado Polimorfismo na programação orientada a objetos.

polimorfismo na programação orientada a objetos 1

Polimorfismo na programação orientada a objetos

Embora possa parecer uma palavra com uma descrição um tanto complexa, na verdade esse tipo de tópico relacionado ao computador está relacionado a aspectos totalmente básicos dele. Quando você aprende Programação orientada a objetos, podemos nos deparar com essa descrição, cujo significado é simplesmente a descrição de múltiplos e possíveis estados de uma única propriedade.

Para a computação, é uma das propriedades fundamentais da programação orientada a objetos e também é uma técnica usada por vírus de computador ou worms para modificar partes de seu código, dificultando sua detecção. Isso pode facilidade Muita coisa quando programamos algo quando não queremos ser tão específicos e precisamos de algo mais funcional que se adapte a uma forma mais ampla de trabalhar, que reduza o trabalho e nos ajude a poder lidar com algo mais dinâmico e flexível.

Antes de ir direto ao ponto, iremos explicar alguns conceitos e quebrar definições que servirão como boca aberta, não só para entendê-lo melhor, mas para entender seu funcionamento, sua importância e quão útil pode ser no campo da computação, ajudando-nos a relaxar nosso trabalho. Podemos não encontrar nada de novo antes de saltar diretamente para o polimorfismo em OOP, mas é importante manter todos os itens a seguir em mente para entender corretamente.

O conceito de polimorfismo na programação orientada a objetos tem sua origem no Simula 67, que é uma linguagem de programação, feita para realizar simulações. Ele foi criado por Ole Joha Dahl e Kristen Nygaard, que pertenciam ao data center norueguês em Oslo.

Este centro era dedicado à simulação de navios, havia muita confusão devido à explosão devido às diferenças entre eles, quando esses navios eram agrupados por sua respectiva classificação para gerar mais controle na hora de fazer os estudos, era então que essa ideia se concretizou.

Este estilo de programação nos anos 80 predominou em quase todas as áreas da computação devido à sua grande atribuição ao C ++ que é outra linguagem de programação C. Graças às interfaces gráficas de usuário o domínio deste método funcionou muito bem.

O polimorfismo na programação orientada a objetos possui diversas características, as quais eram aplicadas nas diferentes linguagens utilizadas na época, tais como: Ada, BASIC, LISP, Pascal, entre muitas outras, embora apresentassem diversos problemas de compatibilidade.

Para uma explicação mais detalhada do que é polimorfismo na programação orientada a objetos, convidamos você a assistir ao seguinte vídeo:

Polimorfismo e herança

O prefixo poli tem sua origem no grego, então sua descrição exata significa abundância, muitos ou variedade, e morfismo é um sufixo grego que entra na formação de palavras com o significado de forma, composição ou estrutura de um corpo. Levando isso em conta, podemos entrar no que queremos explicar neste fragmento, nossa palavra principal é basicamente por definição uma variedade formada pela estrutura de um corpo; Em vários campos da matemática, os mapas são chamados de aplicações entre estruturas matemáticas que preservam a estrutura interna.

Para deixar isso completamente claro, podemos comparar polimorfismo e herança. Em outras palavras, isso nos permite realizar os polimorfismos nas hierarquias de classificação. É importante mencionar também que estas se dão por herança, desde que a herança, que poderíamos entender como derivadas de um objeto, sempre pertença à mesma classe; Para exemplificar o que foi explicado, podemos dizer que da palavra veículo surgem várias classes, como um carro, uma motocicleta e um ônibus, visto que polimorfismo e herança são dois conceitos inegavelmente ligados.

A importância do sistema de tipos no polimorfismo

Nomear essa classificação como um sistema de tipos, porque os derivados dessa palavra ainda fazem parte deles, mas por que isso é importante no polimorfismo da programação orientada a objetos?

Muitas das pessoas que entraram neste artigo podem estar familiarizadas com o que é programar em linguagens de digitação fraca, como seria no caso de Javascript e PHP, porém é importante que entendamos bem como é.

Neste tipo de linguagem, ao definir uma variável, temos sempre que indicar o tipo que queremos que essa variável contenha, por exemplo: int myNumber.

Desta forma, temos a possibilidade de indicar que a variável estabelecida como "myNumber" conterá sempre um inteiro; se fosse o caso, o compilador nos lançaria uma mensagem de erro nos impedindo de compilar o programa que fizemos.

Na verdade, isso também pode acontecer com objetos, se em Java definirmos a classe "longa-metragem", sabendo essa palavra como um filme de cinema com duração superior a uma hora, quando criamos objetos da classe "longa-metragem" devemos indicar as variáveis ​​em que é indicado o tipo de objeto que se pretende fabricar. Podemos expressar desta forma:

Longa-metragem miLargo = novo longa-metragem

Nossa variável seria "myLong" e expondo isso, teremos uma referência a um objeto da classe ou tipos de "Longa-metragem", e enquanto durar, deverá sempre ter qualquer objeto da mesma classe ou tipo, dito isso é importante saber para que você não possa armazenar um inteiro na variável, ou algum outro objeto de outro tipo ou classe, que não seja herança e que não tenha relacionamento.

Se voltarmos a citar o exemplo dos veículos e seus tipos, é importante esclarecer que se decidirmos definir uma variável que aponte para o objeto da classe «moto», enquanto essa variável perdurar, deve sempre apontar para um ou objeto de herança para a classe «moto», não para a classe «carro», nem «ônibus»; no entanto, em linguagens pouco evitadas como as que mencionamos anteriormente, essa inflexibilidade não existe, embora seja uma característica comum de linguagens muito destruídas, como Java. Aqui está um exemplo mais amplo:

  • Carro myCar = carro novo (Mazda 2 ″): Mazda 2 seria a nossa herança do objeto pertencente a essa classe ou tipo, e é para o qual a variável aponta, e se quiséssemos, amanhã poderia apontar para outro objeto de meu carro.

MyCar = carro novo (Ford Focus 2.0 ″)

O que nunca podemos fazer é armazenar em nosso conjunto de variáveis ​​como da classe Car, algo que não tenha relação com o tipo Car, pois então teríamos um erro em tempo de compilação, caso isso aconteça, deve ter salvado New Car Ford Focus 2.0 teríamos escolhido New Moto Yamaha YBR.

Deve ser esclarecido que neste ponto não estamos falando sobre polimorfismo como tal ainda, mas estamos testando a programação em geral com o sistema de tipos; o ponto é que devemos abrir nossas mentes para as complicações que a restrição de linguagens fortemente tripadas pode nos dar, a fim de mais tarde entender por que o polimorfismo é importante e uma peça-chave no polimorfismo na programação orientada a objetos.

Em uma linguagem de computador totalmente digitada quando uma função se manifesta, devemos sempre manter como ponto de importância que ao informar o tipo de regras que ela irá receber. Não poderemos passar nada além de variáveis ​​ou literais com valores inteiros para a função que estabelecemos, se nos ocorrer passar outros dados com outros tipos, o compilador vai alterar, não vai permitir nos para compilar o programa porque, nesse caso, não foi possível encontrar os tipos esperados nos parâmetros da função.

moto-car-1

Polimorfismo em objetos

Finalmente, chegamos à parte que realmente especifica este tema de interesse, por isso neste sistema serão feitos seus próprios elementos que manifestem suas classes e objetivos, como funcionam as linguagens fortemente tipadas, uma variável deve sempre apontar para um objeto do tipo que indicamos no momento em que o estabelecemos.

Isso é algo essencial para lembrar, agora, uma função cujo parâmetro foi declarado de uma classe, só nos aceitará receber objetos dessa classe; Um array que foi declarado composto de elementos de um certo tipo só nos permitirá preencher suas caixas com objetos daquele tipo que estabelecemos; vamos apresentar outro exemplo:

Veículo [] myVehiculos = novo Veículo [3]

Este exemplo que estamos dando, é uma variável que é um array e nela declaramos que o conteúdo das caixas serão objetos da classe Vehicle, em linguagem fortemente tripulada só pode conter objetos da classe Vehicle, como tínhamos já explicado, mas agora encontramos o polimorfismo, com o qual podemos dar um pouco mais de flexibilidade ao sistema de tipos, dando-nos a oportunidade de uma variável aceitar também objetos da classe "filhos" ou derivados.

Ao tornar o sistema de tipos mais flexível, não estamos falando sobre como um todo, mas com o que isso teria a ver com as classificações de herança que temos em nossos sistemas de classes ou tipos. Se conseguirmos definir um array usando células de uma classe estabelecida, o compilador nos aceitaria inserir palavras "filhos" desse objeto que já havíamos estabelecido nessas caixas. Se estabelecermos que uma função recebe objetos de alguma classe como parâmetros , o compilador permitirá que enviemos a invocação de objetos de uma classe derivada daquela que já declaramos.

Indo para algo mais concreto, nossa matriz de veículos não só nos permitirá inserir veículos genéricos em sua variável, mas também todos os objetos das classes filho ou derivadas desta classe, então teríamos objetos do ônibus, carro e motocicleta classe ou qualquer criança. que definimos, e tudo isso graças ao polimorfismo.

Aplicando Polimorfismo

Apesar da explicação que demos à longa-metragem, queremos esclarecer que além de ser um filme, também podemos ter documentários, entre outros; talvez ambos tenham características diferentes, tempos de audiência diferentes, preços diferentes e por isso poderíamos ter decidido que nossa classe de Longa-Metragem tem aulas filhas ou heranças como "filme" ou "documentário".

Se criarmos uma aula instituída como Cinema e um método que chamaremos de “reproduzir”, ela servirá de parâmetro para o que queremos reproduzir em uma sala de cinema, onde podem chegar objetos tanto da aula de cinema como da aula de documentário, se entendermos bem o sistema de tipos (sem nem mesmo entrar no polimorfismo) nossos métodos estabelecerão os tipos dos parâmetros que recebemos. Seria mais ou menos assim:

  • Reproduzir (filme para reproduzir)

Mas, em vez disso, se quisermos reproduzir um documentário, teremos que mudar nossa fórmula.

  • Play (documentário para jogar documentário)

E é mesmo necessário criar duas fórmulas diferentes? Os dois métodos de reprodução das duas coisas seriam exatamente iguais, por que se preocupar? Bastaria colocar o longa-metragem no player, clicar em play (ou play) e fazer um recorde com a quantidade de ingressos que conseguiram ser vendidos. Embora não seja um incômodo fazer os dois métodos, devemos estar cientes de que podemos ser apresentados a uma situação em que teremos que criar outra fórmula, poderíamos dar o exemplo de que temos um filme, mas desta vez em formato 3D.

Neste ponto, podemos recorrer ao polimorfismo, com a sua ajuda podemos criar um método de reprodução que irá reconhecer todos os tipos de elementos, documentários, filmes ou qualquer outra coisa da mesma classe (que esteja relacionada), que precisamos criar no futuro. Lo que nos estarían permitiendo los lenguajes, es establecer el método reproducir indicando que el parámetro de la clase que vamos a recibir es un objeto de tipo largometraje, pero el lenguaje y el compilador nos estarían aceptando cualquier objeto derivado de película o documental, quedaríamos con algo assim: play (item do filme de longa-metragemToPlay).

Quer queiramos criar filmes ou documentários para reproduzi-los, tudo isso será possível com um único método, o da reprodução, graças ao fato de que devido ao polimorfismo da programação orientada a objetos tornamos o sistema mais flexível, não ser necessário. Por exemplo, se quisermos reproduzir um filme e não um documentário, não teremos que selecionar a classe Cinema, mas basta que o que queremos reproduzir faça parte da herança do objeto longa-metragem.

Se voltarmos ao exemplo do veículo, mesmo tendo em vista a utilidade do polimorfismo e as possibilidades que ele nos oferece de reduzir toda a manutenção de programas de computador que teríamos que fazer se não tivéssemos o auxílio deste conceito.

Digamos que temos a classe Parking (em espanhol seria a aula para aprender a estacionar) dentro da qual temos a função de estacionar. Em um estacionamento temos a possibilidade de estacionar ônibus e motocicletas, além de apenas carros, e sem polimorfismo teríamos que criar um método que nos permitisse estacionar objetos do tipo "carro" e outro que nos permitisse estacionar objetos do tipo "ônibus" e outro que nos permite estacionar objetos do tipo "motocicleta", embora o procedimento para realizar essas ações apesar da notável diferença entre as aparências desses três veículos seja basicamente o mesmo, só que um ocupa mais espaço do que o outro.

O mais preciso seria ter um método único que simplificasse as coisas e nos permitisse receber todos os tipos de veículos, não só carros e marcas de automóveis, mas todos os derivados aceitos e preciosos do objeto veículo. Primeiro teríamos o reaproveitamento do código, pois como já havíamos falado, estacionar esses tipos de veículos é parecido com a única diferença no espaço que cada um ocupa, mas além disso, se amanhã algum outro tipo de veículo fosse para estar à venda no mercado, teríamos a possibilidade de que o nosso software o aceite sem qualquer necessidade de modificar a nossa classe Parking já estabelecida.

Temos ao dispor de um único método a aceitação de todas as heranças precisas que o veículo possa ter, tornando o trabalho mais flexível e poupando-nos o tempo que teríamos despendido na criação de um para cada tipo de veículo. O polimorfismo na programação orientada a objetos abre as portas para uma variedade de objetos que podem ser aceitos por um único método.

Tentamos explicar o polimorfismo da maneira mais compreensível e fazer uma ampla revisão de tudo que está por trás dele, não teria sido apropriado pular de uma vez para o conceito como tal sem fornecer seu pano de fundo para nos ajudar a entendê-lo e entender sua importância excepcional e importância. uso que podemos dar.

Ter a possibilidade de poder incluir vários métodos em um só, enquanto as derivações coincidem como herança do objeto, é bastante útil porque nos poupa a necessidade de criar vários obrigando-nos a sermos muito específicos sem nos dar a possibilidade de o fazer. um trabalho mais flexível em O fato de podermos criar uma forma mais dinâmica de lidar com o que programamos, tão simples quanto saber a derivação correta de uma única palavra, ou seja, tudo o que ela engloba, nos ajuda a fazer um trabalho mais eficiente .

Esperamos que você goste deste artigo e aprenda o que é polimorfismo na programação orientada a objetos. Se você quiser ler outro de nossos artigos sobre programação, recomendamos que você visite o seguinte, que nos dá uma forma muito conhecida de programação no mundo da computação: Programação C ++.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Blog da Actualidad
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.