olá pequeno gafanhoto seja bem vindo a mais uma aula de seu curso de programação orientada a objetos o meu nome está guanabara eu sou professor e agora a gente chegou à décima aula e nessa décima aula a gente vai falar sobre herança que é o nosso segundo pilar da orientação a objetos a gente viu antes a base teórica toda nós vimos o primeiro pilar que o encapsulamento junto com a abstração e agora nós vamos passar para o segundo pilar e você deve se lembrar que a programação orientada a objeto é composta de três pilares o
primeiro pilar é a letra é que significa encapsulamento logo em seguida é o segundo pilar que é isso que a gente vai ver a primeira aula aqui que é a herança e por fim o pp é o terceiro pilar é o polimorfismo e você deve se lembrar daquele negócio né quais são os três pilares do programa somente o objeto responde com a sua impressora a minha impressora é a hp encapsulamento herança e polimorfismo e pra te explicar a herança eu vou utilizar o exemplo mais clássico que existe dentro das aulas de programação orientada a objetos
o que você está vendo aqui do lado é uma mulher só que eu vou te dizer essa mulher é uma mãe para a mulher ser uma mãe ela precisa ter o que um filho nosso caso aqui está parecendo aquele lado é uma filha é uma menininha e com certeza você já falou já ouviu coisas do tipo olha essa menina tem os olhos da mãe puxou a cara da mãe não é isso que a gente fala então vamos fazer aqui aparece aqui do lado a filha puxou a mãe apesar dela ter ficado bizarra eu quero explicar
o seguinte se você perceber aqui a menina a filha acabou trazendo algumas características da mãe como por exemplo os olhos ea boca ela também pode ter trazido comportamentos por exemplo o jeito de falar o jeito de sentar o jeito de se comunicar então uma filha pode puxar características e comportamentos de uma mãe já deve ter visto isso na vida real pois esse é exatamente o conceito de herança a partir de agora as nossas classes podem ser mães e elas podem gerar filhas e essas filhas elas vão puxar elas vão herdar características e comportamentos dessas mães
e daí veio o conceito que a gente vai estudar essa toda que é a herança conceitualmente a mulher aqui ó herança permite basear uma nova classe na definição de uma outra classe previamente existentes então basicamente eu tenho uma classe que já existia e eu preciso criar uma classe nova eu não vou precisar criar do zero se essa classe nova puder ser baseada numa classe anterior é melhor ainda eu não preciso recriar essa nova classe eu faço ela baseada na primeira vamos voltar o nosso exemplo clássico a caneta você deve se lembrar na hora onde eu
falei sobre o objeto calheta foi logo no início de junho que ela tem características por exemplo essa caneta uma caneta azul essa caneta ela tem uma marca inclusive a é da hostnet essa caneta tem um tipo ela é geográfica agora vamos imaginar que eu queira criar uma caneta melhor do que ela eu queira é criar uma caneta que eu posso colocar ponta pra fora e por exemplo eu posso apertar aqui em cima eu posso apertar aqui e ela acendeu uma luz ela uma caneta para poder inscrever no escuro concorda comigo que eu não preciso criar
essa nova caneta com luz do zero basta que eu pegue uma caneta dessa todas as características e comportamentos dessa e caneta que vão ser dados pela nova caneta então a nova caneta vai ser uma caneta dessa e mais uma luzinha então basta que eu pegue todo o conceito dessa carreta base e aprimora esses conceitos isso é a nova caneta vai herdar características dessa caneta velha então essa caneta é mãe da outra caneta é exatamente isso existe mais um conceito importante que você precisa saber a herança será aplicado tanto para características quanto para comportamentos isso é
toda classe mãe ela tem características e comportamentos toda classe na verdade tem características e comportamentos se ela se tornar mãe ela vai conceder todas essas características e todos esses comportamentos para as suas filhas isso vai fazer com que toda filha tenha características e comportamentos herdados da mãe e se você está confuso vamos a um exemplo prático tem aqui do lado a três pessoas são três pessoas diferentes o primeiro está ali o aluno de um colégio do meio é um professor de si mesmo colégio e a terceira é uma funcionária desse mesmo colégio trabalha lá na
secretaria são três pessoas diferentes cada uma com suas características e comportamentos vamos aqui dar uma separada em cada um deles e vamos colocar quais são as características e comportamentos de cada um dá uma olhada ele está se construindo agora a primeira classe é o primeiro menino ali de cima ele é um aluno ele tem nome e idade sexo matrícula e o curso ele pode fazer algumas coisas ele pode fazer aniversário e cancelar a matrícula isso lá na guanabara o aluno tem muito mais do que isso e faz muito mais do que isso claro meu querido
no nosso exemplo a gente deu uma diminuída para poder caber dentro de uma aula e nós acabamos utilizando um conceito da programação orientada a objeto que é a abstração como a gente já viu por aqui abstrair é você considerar que mesmo num universo de muitas características e comportamentos somente importam aqueles ali então essa é a minha abstração que eu tenho sugerido para essa aula aqui além da classe de aluno eu também tem a classe professor olha lá ó professor tem nome e idade sexo especialidades salário ele pode fazer aniversário ele pode receber aumento e por
fim a gente tem a terceira classe que a classe funcionário na classe funcionário também tem um nome idade sexo o setor que o funcionário trabalha se ele está trabalhando não é verdadeiro ou falso no momento ele está trabalhando eu posso fazer aniversário ou então mudar trabalhos é que está trabalhando para trabalhar que está parado de trabalhar começa a trabalhar e aí você percebe uma coisa você está vendo aqui do lado algumas características e comportamentos são compartilhados pelos três tipos de pessoas aluno acaba não sendo exatamente igual ao professor aluno e professor acabou não sendo exatamente
iguais a um funcionário mas todos eles acabam compartilhando algumas características então em vez de ficar repetindo coisas como estou repetindo aqui eu vou dar uma separada em tudo que convém tudo aquilo que está igual um do outro e você percebe que lado que agora eu tenho o aluno sobre sua matrícula curso e ou cancelar a matrícula o professor também tem seus métodos e atributos e funcionários também têm seus netos atributos os métodos atributos que existiam em comum neles eu coloquei aqui em cima ea partir disso daqui eu vou criar uma outra classe é uma classe
que vai ter nome idade sexo e fazer aniversário o nome dessa classe tem que ser um nome que represente uma forma global isso que sobrou eu vou dar o nome de pessoa então eu tenho pessoa aluno professor e funk na área concorda comigo que se eu disser que a aluna uma pessoa professor é uma pessoa e funcionar uma pessoa cada um deles vai herdar todas as características de comportamento de uma pessoa com isso eu tenho que fazer esse tipo de relação eu tenho que criar esse tipo de herança assim como eu criei uma filha ea
sua mãe onde a menininha herdou características e comportamentos da mãe na prática da programação orientada a objetos na verdade na prática da análise projeto orientado a objeto o que eu vou fazer com que a gama de classes é exatamente isso daqui eu vou criar uma hierarquia essa representação assim de uma certa branca para cima como você está vendo aqui do lado ele representa a herança basicamente você está vendo aqui do lado na verdade a classe professora ela foi um pouco para baixo não seria baixo seria no mesmo nível das outras nessa questão de espaço que
eu represento aqui eu estou dizendo que o aluno funcionário e professor herdam tudo de pessoa isso é aluno ele vai ter matrícula curso mas também vai ter nome idade sexo aluno ele pode cancelar a matrícula mas ele também pode fazer aniversário então tudo que está na classe aqui de cima vai ser compartilhado com todas as classes que estão aqui embaixo esse é o conceito de herança agora bar mas como é que eu faço isso com calma porque nunca foi outro em primeiro lugar a gente vai ter que montar a classe pessoa porque ela que vai
servir de base para a construção das outras classes criar a classe pessoa significa fazer exatamente isso aqui ó clássico pessoa fim de classe vou colocar os atributos dell então vou colocar ó os atributos nome caractere idade inteiro e sexo caracteres em seguida vou colocar os métodos colocar lá os métodos são o fazer aniversário na verdade um metro o método é que tá ali no diagrama de classe que tá parecendo alicia é o método de fazer aniversário eu vou representar ele e eu também vou criar os métodos especiais lembra dos jets dos 7 também vou criar
eu não vou mais representar jet setters aqui que a gente viu bastante sobre isso nas aulas de encapsulamento e nos exercícios que eu espero que você tenha feito desta maneira esse é o código da programação orientada a objeto da classe pessoa que a gente acabou de criar então a partir de agora eu tenho uma classe na qual outras classes podem se basear com parte agora para nossa classe aluno ali o diagrama de classe só da classe aluno onde eu tenho matrícula e cancelar a matrícula então vou criar lá ó classe aluno fim da classe dentro
da classe aluno vou colocar os seus atributos não tem o atributo a matrícula e o curso matrícula inteiro e o curso caracter também vou colocar esse método aqui ou cancelar a matrícula ou deixar o cancelamento tricolor vou botar o código dentro dele e também vou criar todos os guetos e setters já que essa classe está sendo criada encapsulada é importante que eu abro um parêntesis aqui rapidinho tem gente que pensa assim então para fazer o segundo pilar eu tenho que fazer o primeiro pra eu ter herança eu tenho que tentar flamento aí é que você
se engana pequeno gafanhoto você pode fazer encapsulamento sem herança você pode fazer e heranças encapsulamento esses dois primeiros pilares eles não são independentes entre si eu posso ter um sem ter outro é porque o conceito de pilar às vezes você tem que ter sustentação para ter o segundo piloto tem que ter o primeiro pra herança e encapsulamento não tem essa relação já pra polimorfismo uma outra história que a gente vai ver mais para frente mas é claro que se a gente está querendo criar um bom software é bom que ele tenha encapsulamento e herança eu
vou fazer dessa maneira a partir de agora o que está faltando é um pedacinho de código porque eu quero dizer o seguinte eu quero dizer que esse aluno daqui ele herda coisas de pessoas lembra da classe pessoas que eu criei alguns segundos atrás então eu preciso dizer olha só o aluno ele é uma pessoa então ele vai ter nome ele vai ter idade ele vai ter sexo ele vai poder fazer aniversário como é que eu faço isso muito simples dá uma olhada aqui em cima eu vou dizer que a classe aluno estende pessoa quando eu
uso a palavra estende estender é ampliar então estou ampliando as características da pessoa isso torna automaticamente aqui o aluno a filha de pessoa a pessoa é mãe de aluno se você ficou meio confuso dá para você entender já mais pra frente mas antes vamos criar a classe professor na classe professor eu tenho ali especialidade salário ele pode receber aumento então vamos falar a classe professor estende pessoas vão fazer direto aqui o professor é uma pessoa então existentes vamos colocar os atributos a especialidade e salário caractere real e os métodos um método receber aumento tá lá
e eu vou fazer os métodos jet-set de cada um deles assim como eu fiz anteriormente para manter o encapsulamento funcionando e por fim mais uma vez uma repetição de coisas vamos fazer a classe funcionário ou montar lá ó classe funcionário estende pessoa vou colocar todos os atributos o atributo setor e trabalhando trabalhando é lógico não se está trabalhando não vou fazer aqui o método mudar trabalho que está aqui do lado e também vou fazer todos os métodos assessores e os métodos modificadores referentes a essa classe aos atributos dessa classe então é isso com esses códigos
que eu acabei de criar eu posso voltar para o nosso diagrama anterior esse diagrama de classe ele já está prevendo a herança e ele tem alguns nomes que já citei aqui durante a aula mas eu vou complementar agora que existem alguns conceitos adicionais quando a gente trabalha com a herança existem alguns termos bem simples e alguns um pouquinho mais complicados nada difícil pouco mais complicado considerando o diagrama que aquele lado eu tenho pessoas na parte de cima e aluno funcionário professor os três no mesmo nível apesar de estar um pouco deslocados ali os três têm
o mesmo nível todos eles estão logo abaixo de pessoa tecnicamente na programação dentro do objeto a gente vai dizer o seguinte a pessoa é a classe mãe e professor aluno e funcionário são classes filhas da classe pessoa exatamente como a gente fez lá no início com mãe e filha é exatamente o mesmo conceito acontece que muitas bibliografias utilizam outros nomes por exemplo a classe mãe também pode ser chamada de progenitora ou ainda de super classe então se você olhar a programação era objeto for citado mãe progenitora ou então superclasse você está falando sempre a mesma
coisa é uma classe que vai dar origem a outras classes que vão ajudar todas as suas características e comportamentos as classes filhas também podem ser chamadas de subclasses que são classes oriundas das suas super classes para fazer uma subclasse eu não preciso dizer os atributos e comportamentos que vem da sua super classe pois isso já é automático sendo assim agora que você entendeu a estrutura neste diagrama de classe vamos partir para o nosso programa principal esse programa principal vou criar um exemplo aqui vou criar quatro pessoas então dá uma olhada aqui do lado eu tenho
um programa e paulo e um é mil pessoa que dois mil alunos petrecelli o professor ip4 é meu funcionário então eu criei quatro mg que são de classes diferentes então eu tenho o p1 é uma pessoa o p2 é um aluno o p3 um professor que o p4 um funcionário a partir daí você pode dar uma olhada aqui do lado por exemplo aluno não tem escrito aqui que ele tem nome idade mas eu posso fazer naturalmente essa linha aqui ó então eu tenho de 1.7 nome pedro dá uma olhada aqui no seu diagrama de classe
aluno ele tem matrícula e curso só que pelo diagrama de classe aqui ele herda coisas de pessoa então automaticamente aluno também tem nome e idade sexo e todos os métodos que tinha pessoa e se você der uma lembrada você tinha dentro de pessoas a gente tinha um método fazer aniversário mas a gente tinha 797 nome site da dignidade 7-sex ex então todos esses métodos vão ser dados e além desses métodos ele também vai dar todos os atributos nome idade e sexo dessa maneira o aluno ele tem nome e idade sexo matrícula e curso aluno faz
aniversário e aluno cancelar a matrícula eu espero que isso tenha ficado bem claro pra você e se ainda não ficou não se desespera já tá vendo a sua aula prática na linguagem que você escolheu e aí sim você vai poder colocar em prática tudo e ver como é que funciona a programação orientada a objetos utilizando herança dessa maneira essa linha está aqui do lado é totalmente válida assim como por exemplo eu vou colocar sete nome maria provedores vou botar 7 nome cláudio p3 e vou colocar fabianna 179 fabiana 34 eu acabei de dar um nome
pra todos eles têm um pib de 2 p3 e p4 têm nomes porque tem uma pessoa p2 é aluno que era de pessoa e três é professor que também é da pessoa e t4 é funcionário que também era de pessoas então tudo está vindo lá de pessoa então eu posso utilizar sete nome de qualquer um deles sem problema nenhum outra coisa que posso fazer é utilizar métodos específicos de cada uma das classes por exemplo aqui ó p-27 curso informática então se você der uma olhada aqui o nosso aluno ele tem um atributo curso então eu
posso dar os 7 curso informática para ele e dois é um aluno vamos a mais um comando akp 3.7 salário 2503 se você analisar aqui do lado é um professor professora aída gama declara tem um atributo salário tem então ele pode ter o site salário mais um comando p 4 que é um funcionário ponto 7 setor estoque só estou dizendo que o funcionário trabalha no setor de estoque posso também fazer isso sem problema nenhum já que funcionário tem o atributo setor e obviamente se ele tá encapsulado ele tem o método 7 setor agora vamos a
alguns comandos aqui ó por exemplo tem um ponto receberá aumento de 550 e vinte centavos isso é todo um aumento de 550 reais e vinte centavos para o p1 só que tem um problema e um se você olhar em cima é uma pessoa a pessoa não tem salário pessoa não pode receber aumento em salário e pode receber aumento dá uma olhada ali é o professor sendo assim e um que é uma pessoa não tem esse método receber aumento porque esse método receber aumento é somente de um professor um outro comando aqui p2 mudar trabalho isso
é que estou dizendo que o p2 vai mudar o trabalho ele vai aceitar parado e vai começar a trabalhar se ele está trabalhando e vai parar só que tem um problema p 2 é um aluno dá uma olhada no código sendo assim eu não posso mudar o trabalho dele porque ele não é um funcionário e só quem pode começar e parar de trabalhar é um funcionário e por fim mais um command aqui ó de 4.1 cancelar a matrícula o p4 pode cancelar a matrícula não porque p4 é um funcionário e funcionários só pode mudar o
trabalho ou fazer aniversário quem pode cancelar a matrícula é só o aluno que no nosso caso ali é o p2 e não o p4 como está representado aqui do lado dessa maneira as três últimas linhas que estão ali do lado são inválidas e não vão funcionar no nosso código de programação orientada a objetos e aí ficou confuso tá meio estranho esse negócio então faz o seguinte meu querido você tem a opção aqui ó do php e do java você também pode ir aqui no ise interatividade e escolher a linguagem que você quiser pra ver essa
aula e na playlist que você vai acessar você tem que acessar aula 10 b que é a aula de programação orientada a objetos e explicando herança que a primeira parte então é isso pequeno gafanhoto não para agora não não existe agora não escolhe uma linguagem e vamos aprender a fazer ansa diretamente nela um forte abraço e até já já