Curso POO Teoria #13a - Conceito Polimorfismo (Parte 2)

111.9k views3526 WordsCopy TextShare
Curso em Vídeo
Nessa aula de POO, vamos aprender como aplicar o Polimorfismo de Sobrecarga às nossas classes. Veja ...
Video Transcript:
[Música] [Música] olá pequeno gafanhoto seja bem vindo a mais uma aula de seu curso de programação orientada a objeto é só tava demorando para sair né o meu amigo gustavo guanabara eu sou professor e agora nós chegamos à décima terceira aula nós já estamos muito perto do final do curso e nessa aula a gente vai ver a segunda parte sobre um assunto muito importante que é o terceiro pilar que é o polimorfismo e se você se lembra muito bem na primeira parte nós falamos sobre o polimorfismo de sobreposição nós vimos na aula passada que nós
temos dois tipos de polimorfismo e nós trabalhamos o conceito da sobreposição que quando eu consigo substituir um método que veio da classe mãe diretamente na sua classe filha e eu disse na hora passada também que existe um outro tipo de polimorfismo ou de sobrecarga e é exatamente esse que a gente vai falar durante essa aula mas antes dando uma breve relembrada no que a gente viu na aula passada o polimorfismo diz sobreposição eu preciso te dar uma relembrada para que você possa criar essa relação que eu preciso que você tenha isso porque muitos alunos confundem
a sobreposição com a sobrecarga porque elas são além de palavras muito parecidas eles são muito semelhantes em seus conceitos porque lhes implementam as políticas formas tão da pequena relembrar aqui no conceito de sobreposição se deve se lembrar dela passada quando a gente criou a classe mamífero e dessa classe mamífero a gente herdou determinados mamíferos por exemplo que estou fazendo aqui do lado eu tenho a classe mamífero que emite som e essa classe mamífero que veio de animal é se você se lembra muito bem na copa passada ela emite som porque ela era abstrata na classe
animal a gente já vai ver isso na prática eu criei aqui a classe lobo que também emite som isso porque o lobo emite som de maneira diferente de um mamífero apesar de ele ser um mamífero ele tem um som específico de lobo e eu vou propor uma outra herança que uma herança mais aprofundada não é uma herança de lobo que é cachorro então eu tenho aqui também cachorro podendo emitir som é claro que a emissão de som deles é diferente eu vou colocar aqui ó o mamífero emite som de mamífero como a gente tinha feito
na aula passada o lobo emite um som diferente então coloquei ao louvar já o cachorro que é herdeiro de lobo vai emitir som de maneira diferente então esse é o modelo que eu vou propor inicialmente para essa aula pra gente dar uma revisada rápida do que a sobreposição então vamos fazer o seguinte ao passar o código aqui do lado tá vendo aquela folha tradicional eu tenho a classe abstrata animal eu tenho também a classe mamífero que estende o animal então a classe animal é abstrata então ela não pode implementar nenhum objeto eu não posso ter
nenhum objeto da classe animal e eu tenho mamífero que estende animal animal vai ter os seguintes atributos vai ter peso idade e membros protegido isso é que eu posso dar acesso à peso idade e membros para os seus filhos e isso não fere o encapsulamento e eu tenho também um método público e abstrato que o emite som isso é eu não vou implementar o método abstrato diretamente na classe animal eu vou implementar nas classes filhas no caso aqui mamífero que é filho de animal então vou colocar aqui ó ele vai ter o mamífero vai ter
um atributo extra que é o corpo pelo e também vai implementar por sobreposição dá uma olhadinha aqui do lado como é que dá só uma relembrada eua implementei por sobreposição o emite som eu escrevi lá som do mamífero exatamente como eu previ no exercício anterior agora nesse momento nesse exercício eu propus a criação de uma nova classe lobo e cachorro na verdade duas classes onde lobo e cachorro teriam seus emitir som específicos então vou fazer o seguinte vamos criar por sobreposição o método emite som do sol da moeda aqui eu não vou fazer barulho de
novo e se você olhar aqui embaixo eu fiz a implementação do emitir som para o cachorro percebeu o seguinte ó eu tenho o emitir som que é abstrato aqui em cima na parte superior eu coloquei mamífero estendendo o animal então sou obrigado a sobrepor isso é ele vai ter a sobreposição diretamente na no seu filho imediato que no caso aqui mamífero e eu tenho lobo e cachorro que não necessitam ter sobreposição obrigatoriamente mas eu coloquei aqui já que um lobo emite um som diferente de mamífero e também cachorro emite um som ligeiramente diferente de um
lobo ficou claro dessa maneira se você perceber aqui vou fazer um disco na tela todos eles têm a mesma assinatura todos os métodos a emitir som emite som e emite som é a mesma assinatura mas guanabara o que a assinatura vou te dar uma relembrada assinatura programação orientada a objeto é a quantidade e os tipos dos seus parâmetros então aqui no caso há um limite só não recebe parâmetro nenhum isso é a assinatura dele ele não recebe nenhum parâmetro mas não poderia por exemplo emite som recebeu um parâmetro inteiro um parâmetro inteiro é a assinatura
do método então não se esquece pequeno gafanhoto assinatura de um método é a quantidade de atributos que recebe e os tipos desses atributos em momento nenhum na assinatura vai aparecer o tipo de retorno vai aparecer o nome dos atributos outra coisa que você percebe aqui ó é que todos os métodos estão em classes diferentes se você olhar e se emite som que está aqui com o laser é o emite som da clássica cachorro e se emite som está o laser aqui é da classe lobo e se emite som está aqui é da classe mamífero então
pra eu ter a sobreposição eu preciso que os métodos tenham a mesma assinatura e estejam em classes diferentes e isso é o que eu chamo de sobreposição é aí que o aluno se enrola é aí que o gafanhoto seaton ela tropeça nos conceitos de programação orientada a objetos sempre que eu quiser sobrepor alguma coisa eu vou utilizar a mesma assinatura em métodos diferentes não existe a possibilidade de eu sobre por mais de uma vez um método utilizando o a técnica de o ver rating houve hayden que a sobreposição ela só acontece uma vez em cada
classe ea tem que estar em classes diferentes com a mesma assinatura se você ficou confuso eu vou te mostrar isso na prática a linguagem de programação que você escolher lá no finalzinho da aula mas antes continua aqui comigo porque agora a gente vai ver uma coisa um pouco diferente isso porque esse método que você está vendo aqui do lado é o método das sobreposições polimorfismos sobreposição ou ouvir hayden só que existe um outro tipo de polimorfismo que geralmente é o que mais enrola as pessoas o ovo raid é o que geralmente você vai fazer é
o tipo de polimorfismo mais popular mas existe um outro que também é bem popular e que você precisa conhecer não tomar com base na classe cachorro é uma classe cachorro ali ela tem o método emitir som que faz um barulho e tudo mais outra coisa que eu vou propor aqui que um cachorro pode fazer é fazer uma reação é reagir a alguma coisa então reagir é um novo método que eu venho propor aqui pra cachorro só que é o seguinte existem várias maneiras de um cachorro reagir várias formas poliformes existe polimorfismo na hora de reagir
eu vou criar algumas situações bem resumidamente para que você possa entender isso melhor o que eu propus pra esses exercícios são algumas reações o primeiro tipo de reação é de acordo com uma frase que você fale dependendo do que você fala o cachorro reage de uma maneira diferente o que eu propus aqui é o seguinte se você falar uma frase que seja agradável o cachorro ele vai abanar o rabo e latir se você disser uma frase agressiva ele vai rolar pra você é assim que funciona com o cachorro são reações diferentes só que além de
reagir a frase esse meu cachorro vai ter reações diferentes de acordo com o horário de dia então por exemplo se interagir com ele de manhã e vai abanar o rabo sem interagir com ele de tarde ele vai abanar o rabo lattes e interagir com ele de noite ele vai ignorar então essa é uma segunda forma de interagir com o cachorro uma é falando frases outra é brincando com ele interagindo com ele em determinados horários do dia outra forma de cachorro reagir de acordo com que se eu sou ou não do dono dele se eu sou
o dono dele ele geralmente abana o rabo se eu não sou dono ele vai rodar lá tinha essa é uma reação normal de um cachorro ea última maneira que eu venho propor aqui de reação é de acordo com a idade e com o peso do cachorro o cachorro novo leve ele abana o rabo geralmente uma loucura da minha cabeça mas só pra gente querer pôr em forma ele é novo e pesado e vai latir sevele leve e vai arruinar se revele pesada e vai ignorar percebe aqui do canto que todas as reações brancas são reações
de acordo com essas reações mais escuras aqui do lado direito que são as políticas formas de reação então um cachorro ele pode restringir a frase a interações em determinados horários assim o dono é nessa pessoa é ou não o dono isso vai interferir também na reação dele ea reação também dele pode ser de acordo com a idade e com peso então tenho muitas formas do cachorro reagir de acordo as ações estão ali definidas em branquinho todas elas vão ser definidas através de um pólo o fim específico que a gente vai ver a partir de agora
porque agora a gente vai pra código se você percebesse lado e já criei a classe cachorro eu vou ter um método reagir só que esse método de reagir como eu previa que no exercício ele pode acontecer de quatro maneiras diferentes ele pode reagir de acordo com uma frase que é caracter eu posso reagir de acordo com o horário hora e minuto determinado dia ele pode reagir de acordo que se eu sou o dono ou não então é um atributo lógico eu posso reagir de acordo com a idade e com o peso do cachorro que estão
aqui são atributos inteiro em reais respectivamente agora vamos dar uma olhadinha aqui no conceito que a gente acabou de ver com o conceito de assinatura olha só a assinatura desse primeiro método aqui ó ele é uma frase caracter então ó todos eles têm o mesmo nome reagir e agir e agir então todos os métodos aqui vão ter o mesmo nome exatamente o mesmo nome é só você comparar e agora opera a primeira reação de acordo com um atributo caracter o segundo relativo a dois atributos inteiros o outro relativo a um atributo lógico e outro em
relativo a um atributo inteiro em um atributo real percebe aqui que todos os métodos têm assinatura diferente dessa vez o primeiro eu tenho um atributo caracter tom quantidade e tipo um atributo caracter nenhum outro desses métodos que está aparecendo aqui do lado tem um atributo caracter colabora para igual na barra tem ali o odontológico é um atributo mas são de tipos diferentes assim como no segundo lahore minuto dois inteiros hamas tem um outro ciclo inteiro o inter um real não dois inteiros então assinatura é a quantidade e os tipos dos atributos outra coisa que se
percebe aqui é que eles estão na mesma classe não percebe aqui ó todos esses métodos que estão aqui eles estão na mesma classe que a classe cachorro então isso é diferente da sobreposição que a gente viu anteriormente na sobreposição são a mesma assinatura em classes diferentes agora nós estamos com uma característica diferente nós temos métodos com o mesmo nome com assinaturas diferentes dentro da mesma classe e é isso eu dou um nome diferente eu não chamo isso de polimorfismos de sobreposição eu chamo isso de polimorfismos de sobrecarga eu estou sobrecarregando o método eu tenho várias
maneiras eu tenho o lille formas de se fazer alguma coisa utilizando o mesmo nome com assinaturas diferentes dentro da mesma classe eu espero que você tenha entendido mas se você não entendeu calma não se desespera você ainda tem aula prática poder esclarecer suas dúvidas então agora nesse momento eu estou com uma classe cachorro que estende lobo e ela está com quatro métodos por desenvolver vamos desenvolvê lo da maneira mais simples possível de maneira bem tranquila o seguinte olha só eu vou colocar aqui os três primeiros não vai caber os quatro e os quatro não vão
caber na tela então fazer os três primeiros primeira reação de acordo com a frase então por exemplo se o nome disso é a frase lá toma comida ou lá que são duas frases mais simpáticas com um cachorro ele vai abanar o rabo e latir se não só se for alguma coisa mais agressiva ele vai rodar como a gente já previu lá no exercício anterior na hora de reagir de acordo com a hora e 1 minuto vou colocar lá ó senhora foi abaixo de 12 é só de manhã ainda ele vai abanar o rabo se não
se a hora for acima de 18 netão se for a hora não for abaixo de 12 mas ela passou é 18 ou mais ele vai ignorar porque já de noite se não que o horário da tarde no intervalo que sobrou e vai abanar o rabo elat então implementei exatamente aquilo que a gente tinha previsto anteriormente agora vamos pra reação de sua pessoa é um dono ou não é desse cachorro se a pessoa é dona de sidónio o verdadeiro ou simplesmente se dono na porque verdadeiro e falso valor lógico que eu não preciso dizer aqui mas
coloquei só para especificar então se for o dono ele vai abalar a honra senão ele vai hoje na boate dá uma olhadinha no código aqui disse ele não é extremamente natural dc não reflete a realidade normalmente de uma interação entre um ser humano e um cachorro essas são diversas maneiras de ter reações de um cachorro mas ainda falta uma e uma outra reação aqui que é a reação por idade peso então coloquei lá se a idade for baixo de cinto ele é novinho se não ele é mais velho não vou colocar lá vamos primeiro tratar
o bloco de cima do vinho cerveja ou vinho e é bem leve ele vai abanar o rabo e vai latir se não é se ele não é novo se é mais velho ele vai descer leve ou pesado se ele for leve vai originar senão ele vai ignorar se você prestar atenção o que implementei aqui do lado em todas as quatro formas de fazer o reação eu posso ter 456 duas quantas eu quiser contanto que eles têm o mesmo nome assinaturas diferentes dentro da mesma classe e por fim pra gente poder exercitar isso aí que a
gente acabou de implementar vamos fazer o nosso código principal nosso programa principal onde eu criei a liz e que um novo cachorro só implementei um novo objeto da classe cachorro o que eu vou fazer aqui é chamar algumas ações por exemplo eu mando a reação dele para o la ou mandar reação dele pra vai apanhar nesse caso aqui são reações de acordo com a frase que ele vai tomar a reação de acordo com uma frase caracter que eu acabei de dizer pra ele outras duas reações aqui ó reagir a 11 45 reagir a 2010 significa
isso qual a reação dele às 11 45 que de manhã qual é a reação dele às nove horas da noite às 21 horas ele vai ter que ter uma reação diferente de acordo com a hora percebe que a assinatura diferente nos dois de cima eu coloquei ali a reto retorno em caracteres o segundo não tenho retorno ali em dois números inteiros vou dar mais duas reações aqui o reagir verdadeiro e reagir falso é eu vou reagir se ele é ou não um dom e por último nós vamos colocar aqui reagir 2 12,5 e 17/4 e
meio que significa isso eu passei o primeiro ali é dois anos e 12 quilos e meio eo segundo 17 anos e quatro quilos e meio então já informei ade e peso percebe aqui do lado que eu tenho várias formas de chamar a reação posso chamar por um caracter urológico por dois inteiros ou por inteiro real isso tem pole formas várias maneiras de se chamar o método isso é sobrecarga na reação aqui o pão lá seria banal a tia para o vá apanhar seria rosnar pra 1145 abanar 21 horas ele vai ignorar se ele for dono
ele abana o rabo se ele não for dono ele roger elat se for novinho e pesado ele vai latir se for velho e levinho ele vai reinar basta você olhar aquela tabela que a gente viu anteriormente e ver que todas essas reações estão previstas aqui elas vão acontecer e elas foram previstas lá na tabela e antes de eu ir embora ou daquela revisada aquelas aquele momento de tirar fotos a câmera que eu fiz anteriormente mas aulas anteriores você tirar foto vou falar uma dica é deixar registrado aqui os dois tipos de polimorfismo dá uma olhada
aí ó o polimorfismo de sobreposição e onde sobrecarga o polimorfismo de sobreposição ele tem a mesma assinatura de métodos já o polimorfismo sobrecarga possui assinaturas diferentes de forma similar o polimorfismo de sobreposição é feito em classes diferentes e o polimorfismo de sobrecarga é feito na mesma classe esse é o momento onde você tira uma foto avala captura essa tela porque vai ser importante para você muita gente confunde os conceitos de sobreposição e sobrecarga primeiro porque os nomes são parecidos depois porque as características são muito semelhantes elas são na verdade características bem opostas mas elas são
muito semelhantes então se eu tiver mesmo assinatura classes diferentes sobreposição se eu tenho assinaturas diferentes mesma classe eu tenho sobrecarga eu espero de coração sinceramente que você tenha compreendido esse conceito ele é muito importante para que você possa dar prosseguimento aos seus estudos de programação orientada a objeto e por falar em prosseguimento olha que está aparecendo chegou a hora de você escolher a sua linguagem então clicando aqui em cima você vê essa implementação de sobrecarga é um detalhe específico porque eu vou dar um spoiler aqui o php e infelizmente não suporta sobrecarga mas vou te
mostrar durante a aula daqui de cima como fazer um mecanismo onde você implemente uma espécie de polimorfismos na verdade não é um primor firme porque o php não suporta sobrecarga mas eu vou mostrar uma solução de como você vai fazer esse exercício diretamente em php claro sem implementar sobrecarga aqui embaixo você vai ver a aula de java e nessa aula de java eu mostro como você imprimir a sobrecarga porque a linguagem java ela suporta esse tipo de conceito então se você é um pequeno gafanhoto que chegou até que quase no finalzinho do curso e você
precisa entender o que é sobrecarga conceitualmente vai na aula de java porque é aqui que eu vou implementar se você é um programador que está interessado em aprender php eu vou te mostrar um recurso simples você implementar todos esses exercícios sem utilizar polimorfismo mais diretamente o php então a partir de agora você faz a sua escolha você tiver o celular estiver conseguindo clicar nesses aqui vai um exemplo de interatividade e lá vai ter as aulas para você poder escolher vai ter a playlist do curso de java o playlist do curso de php e você vai
diretamente para a aula treze pb e aí de uma vez por todas você vai finalizar os seus conceitos de polimorfismo que aí nós já temos visto os três pilares os três pilares principais da orientação a objeto encapsulamento a herança e o polimorfismo eu espero sinceramente que você tenha gostado dessa aula porque ela dá um trabalho desgraçado para tornar as coisas muito simples a coisa não é fácil não presencial entendi então é super fácil fazer sobrecarga não é tão simples é que eu tentei criar uma maneira bem simples que você compreender esse é meu trabalho aqui
dentro do curso em vídeo então é isso que o gafanhoto a gente se vê já já na aula 13b da linguagem que você escolheu [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com