Herança em Python explicada como nunca fizeram - Curso Python POO: Aula 7 — Transcript
Full transcript
- 0:00Chegamos aqui a mais uma fase do seu
- 0:02curso e vídeo de Python com programação
- 0:03orientadas ao objeto. E nesse vídeo
- 0:05aqui, que é a fase sete, a gente vai
- 0:07responder a cinco perguntas. Em primeiro
- 0:09lugar e muito importante, quais são os
- 0:11pilares da programação orientada a
- 0:13objeto? Por falar em pilares, que que
- 0:15significa herança? O seu professor te
- 0:17explicou o que que é herança, mas ficou
- 0:18um pouco confuso. Relaxa que agora você
- 0:20vai entender. E a gente vai explicar
- 0:22termos como superclasse, subclasse,
- 0:25generalização, especialização. E por
- 0:28fim, nós vamos aprender como programar,
- 0:31como fazer, programar o mecanismo de
- 0:32herança utilizando linguagem pipe. Então
- 0:34já vai deixando o like, compartilha essa
- 0:36aula com a galera porque esse conceito
- 0:38tem muita gente que se enrola e eu vou
- 0:39desenrolar sua cachola. [música]
- 0:56Olá, pequeno gafanhoto. Seja muito
- 0:57bem-vindo, muito bem-vinda a mais uma
- 0:59aula aqui do seu curso em vídeo de
- 1:01programação orientada objeto com
- 1:02linguagem Pipon. O meu nome é Gustavo
- 1:03Guanabara, eu sou seu professor e agora
- 1:06nós chegamos à fase sete do seu curso,
- 1:08onde a gente vai falar sobre herança. A
- 1:10gente vai dar os primeiros passos sobre
- 1:12o mecanismo de herança. A gente vai
- 1:13começar a falar sobre os pilares agora.
- 1:15E eu sei que talvez em alguma aula
- 1:16anterior eu tenha falado que o primeiro
- 1:18pilar que a gente vai ver é a abstração.
- 1:20Só que me organizando aqui os conteúdos,
- 1:22eu senti que é mais fácil a gente falar
- 1:23o basicão de herança primeiro, depois a
- 1:26gente vai pra abstração, já é o vídeo
- 1:27logo em seguida. E aí, explicando esse
- 1:29basicão de herança e logo abstração, vai
- 1:32ficar mais fácil de entrar na sua
- 1:33cabeça. Pode confiar no tio que o tio
- 1:35sabe o que tá fazendo. E antes de
- 1:37começar tudo, eu quero deixar um recado
- 1:38muito importante. Acabaram de passar
- 1:41alguns desafios. Se você olhar na
- 1:43playlist completa, ó, clicando aqui em
- 1:44cima, você vai pra playlist completa e
- 1:46se você der uma olhadinha lá, tem sete
- 1:48desafios para fazer. Não faça nada dessa
- 1:50aula antes de realizar os sete desafios.
- 1:53E não é só assistir o vídeo, não é
- 1:55fazer, porque senão lá na frente você
- 1:56vai falar assim: "Nossa, não tô
- 1:57entendendo nada, não tô conseguindo
- 1:58fazer nada". Se você não fez os desafios
- 2:00que acabaram de passar, você pulou
- 2:02etapas. E se você olhar lá no início do
- 2:04módulo, eu falei: "Não pule nenhum
- 2:06vídeo, porque lá na frente, se você se
- 2:07enrolar, a culpa não é minha, a culpa é
- 2:09tua". E logo depois desse esporro
- 2:11podemos começar nossa aula, mas não
- 2:13antes sem um recado do nosso apoiador.
- 2:16Eu já falei da Fetec aqui no curso em
- 2:18vídeo de Python e você já sabe que eles
- 2:20oferecem a grande oportunidade de mudar
- 2:21a vida de jovens aqui do estado do Rio
- 2:23de Janeiro. Só que dessa vez quem vai
- 2:25dar o recado aqui não sou eu, são os
- 2:26próprios alunos da Fitec. Dá só uma
- 2:28olhada aqui.
- 2:32>> Imagine estudar de graça, aprender uma
- 2:33profissão e já sair pronto pro mercado
- 2:35de trabalho. A Fech faz isso acontecer e
- 2:38tá mudando vidas em toda RJ.
- 2:41>> Nos últimos 5 anos, foram mais de
- 2:43200.000 vagas abertas, 3.000
- 2:45oportunidades de estágio, 15 novas
- 2:48[música] unidades e 42 laboratórios de
- 2:50iniciação científica criados.
- 2:53>> Hoje são mais [música] de 70.000 1
- 2:54alunos por ano, estudando em mais de
- 2:561000 cursos gratuitos que abrem portas e
- 2:59constróem futuros.
- 3:00>> E agora [música] é a sua vez de fazer
- 3:01parte dessa história. As inscrições para
- 3:03o primeiro semestre de 2026 já estão
- 3:05abertas. São mais de 7500 vagas
- 3:07distribuídas [música] em mais de 70
- 3:09cursos por todo o estado.
- 3:10>> É oportunidade para educação infantil
- 3:12fundamental, média e cursos técnicas
- 3:15>> ensino superior e até nacord referência
- 3:18internacional em gastronomia. Mas fiquem
- 3:20ligados que as inscrições só vão até o
- 3:22dia 6 de novembro de 2025. FedEc, a
- 3:25fábrica de sonhos do Bob RJ.
- 3:27>> Então, se você mora no estado do Rio de
- 3:29Janeiro ou conhece alguém que more, não
- 3:31deixa de divulgar essas informações. São
- 3:32cursos de extensão, médio técnico,
- 3:35integrado e subsequente e também tem
- 3:37curso de graduação, inclusive nas áreas
- 3:39de tecnologia. Obrigado Rede Fight pelo
- 3:41apoio institucional e você volta aí pro
- 3:43seu vídeo.
- 3:46E se você pulou o recado do apoiador,
- 3:48você não tá ajudando a gente. Coisas que
- 3:50ajudam a gente assistir os apoiadores,
- 3:52deixar seus comentários aqui embaixo,
- 3:54compartilhar as aulas com a galera e
- 3:56principalmente exercitar tudo, porque aí
- 3:58o maior ajudado vai ser você. E vamos
- 4:00começar, como eu tinha prometido
- 4:02anteriormente, a falar sobre os pilares.
- 4:04A programação orientada objeto,
- 4:06dependendo do livro, dependendo da
- 4:07vertente que você vai estudar, considera
- 4:09três ou quatro pilares. Tem alguns
- 4:11livros que consideram até mais. Se você
- 4:13fez o curso de programação orientada a
- 4:14objeto mais antigo daqui, a gente
- 4:16considerou três. Mas dentro desses três,
- 4:17a gente falou sobre abstração, que não
- 4:19era um dos três, né? Nesse curso
- 4:20anterior a gente considerou
- 4:22encapsulamento, herança e polimorfismo.
- 4:24Só que agora eu acrescentei abstração
- 4:26para deixar tudo mais completo,
- 4:27considerando esse pilar. Então, o
- 4:29primeiro pilar que a gente vai anunciar
- 4:31aqui para você é o pilar da abstração,
- 4:33que basicamente é a capacidade de
- 4:35simplificar as coisas e deixar o
- 4:38desnecessário, redundante para lá. Você
- 4:40vai ver isso logo no próximo vídeo. O
- 4:42próximo pilar que eu vou citar aqui é o
- 4:44encapsulamento. O encapsulamento ele vai
- 4:46proteger partes importantes do seu
- 4:48código. Mais para frente a gente vai ver
- 4:49um pouquinho mais sobre encapsulamento.
- 4:51É o terceiro pilar que a gente vai falar
- 4:52aqui na ordem nova que eu coloquei aqui
- 4:54na explicação. Eu só tô deixando nessa
- 4:56ordem que tá aqui porque é a ordem que
- 4:57normalmente aparece nos livros. O
- 4:59próximo pilar que eu vou citar é sim a
- 5:01herança, que é esse pilar que a gente
- 5:02vai ver aqui agora, que ele trata da
- 5:04hierarquia dos dados. Se você souber
- 5:06utilizar superclasses e subclasses,
- 5:08fazer generalizações e especializações,
- 5:11teu código vai ficar mais completo. E
- 5:13por fim, o último pilar, que é o terror
- 5:15de todo mundo, mas é tranquilo, é o
- 5:16polimorfismo. Talvez porque o nome seja
- 5:18diferente, né? Um nome que dá a
- 5:20impressão de que é um pouquinho mais
- 5:21difícil, mas relaxa, lá na frente eu vou
- 5:23te mostrar minha teoria. O polimorfismo
- 5:25permite que você desempenhe talvez
- 5:27atividades de mesmo nome de formas
- 5:29diferentes, utilizando herança,
- 5:31utilizando abstração. Por isso que ele é
- 5:32o último pilar sempre citado e é o
- 5:34último que a gente vai ver também. Mas o
- 5:35que você precisa saber agora é
- 5:37exatamente isso daqui. Quais são os
- 5:38quatro pilares? Abstração,
- 5:40encapsulamento, herança e polimorfismo.
- 5:43Nessa aula, como você já deve ter visto
- 5:44e tá até escrito no título, nós vamos
- 5:46falar sobre herança. O conceito de
- 5:48herança que você pode ver em vários
- 5:50livros é esse daqui. É um
- 5:52relacionamento, eu acrescentaria, é o
- 5:54relacionamento do tipo E1, tu pode até
- 5:56colocar aí, depois a gente vai ver isso,
- 5:58entre itens gerais, que são os
- 6:00ancestrais, e tipos mais específicos,
- 6:02que são os descendentes desses itens,
- 6:04que herdam atributos e métodos dos
- 6:06níveis superiores. E se você olhar isso
- 6:08daqui e fal assim: "Caramba, e agora? Eu
- 6:09não entendi nada. Relaxa, eu vou
- 6:12simplificar para você. Mas se você, sei
- 6:14lá, cair numa prova para você marcar a
- 6:16opção que define herança, cara, algo que
- 6:18parece que isso daqui. Eu tenho itens
- 6:20superiores, que são os ascendentes, os
- 6:22ancestrais. Eu tenho itens inferiores,
- 6:24que são os descendentes ou derivados. E
- 6:27os derivados, os de baixo, herdam, né,
- 6:30ganham características dos superiores. É
- 6:32basicamente isso, características e
- 6:34comportamentos. Esse é o conceito básico
- 6:37e científico de herança. Anota aí para
- 6:39ficar registrada a parte bonitinha, a
- 6:41parte técnica. e acrescenta aí na parte
- 6:43técnica, né, já que você tá anotando,
- 6:45quais são as principais vantagens que a
- 6:46gente encontra nos livros aí também em
- 6:48relação à herança. E a primeira grande
- 6:50vantagem que eu vou colocar aqui é a
- 6:52reutilização de código. Isso porque se
- 6:54você escreve uma classe superior bem
- 6:58escrito, já já você vai ver isso
- 6:59funcionando, você pode utilizar elas em
- 7:01outro projeto, você pode utilizar em
- 7:04outras classes internas do mesmo
- 7:05projeto, se você souber herdar
- 7:07direitinho. Então, o reuso de código
- 7:09geralmente é a maior vantagem citada
- 7:11sempre em herança. Outra grande vantagem
- 7:13é a organização hierárquica. Um sistema
- 7:15bem organizado é um sistema muito mais
- 7:18fácil de ler, muito mais fácil de
- 7:20manter, inclusive tá na lista aqui.
- 7:21Então, a herança ela permite a
- 7:23hierarquização. Você vai ver que existe
- 7:25uma hierarquia nessa aula que você já
- 7:27vai ver. E como eu acabei de citar, a
- 7:29herança também traz facilidade de
- 7:30manutenção, já que o sistema ele é
- 7:32hierarquicamente organizado. A
- 7:34manutenção fica mais fácil. Se você
- 7:36mexer numa classe de cima, todas as de
- 7:38baixo são beneficiadas por essa
- 7:40alteração. Então isso facilita bastante
- 7:41a manutenção. A próxima grande vantagem,
- 7:43a extensibilidade, que é basicamente
- 7:45isso que eu acabei de citar ali também,
- 7:47que é quando você faz uma alteração numa
- 7:49classe, todas as classes que estão
- 7:50abaixo dela já ganham esse benefício,
- 7:52né? ganham essas novas funcionalidades e
- 7:54eu não preciso fazer alteração em cada
- 7:56um de baixo. Se eu alteri na de cima,
- 7:58ele é extensível, ele vai
- 8:00automaticamente todas as de baixo já
- 8:01ganham esse upgrade. E a herança também
- 8:04dá suporte a polimorfismo. Não existe
- 8:06polimorfismo sem herança na grande
- 8:08maioria dos polimorfismos. Existe um que
- 8:10dá para fazer, mas na grande maioria só
- 8:13com herança. Então a herança dá o
- 8:14suporte ao polimorfismo. Lá na frente
- 8:16você vai entender melhor isso. Então se
- 8:18você pegar na maioria dos livros aí de
- 8:20programação orientada objeto, né, e
- 8:21concurso, se você tá fazendo um
- 8:22concurso, talvez na sua prova da
- 8:24faculdade, na prova do colégio, tá aí,
- 8:25ó, precisou de vantagens do uso da
- 8:27herança. Tá aqui citado e explicado aqui
- 8:31pelo tio Guanabara durante toda a aula.
- 8:33Anota isso no seu caderno. Isso porque
- 8:35essa é a base científica. Agora vamos
- 8:38pra parte do Guanabara. Então, paraa
- 8:39parte de simplificar o negócio. Vamos
- 8:41parar para pensar. Olha só, quando eu
- 8:43digo a palavra herança, normalmente as
- 8:47pessoas quando ouvem a palavra herança
- 8:48lembram logo de uma coisa, já vão se
- 8:50referenciando ah, herança é o que o meu
- 8:53tio vai deixar pro meu sobrinho, o que
- 8:54meu pai vai deixar para mim. herança é o
- 8:56dinheiro que meu avô até é, você
- 8:58consegue utilizar esse termo herança
- 8:59para isso. Só que eu colocaria de uma
- 9:02outra maneira, o mesmo uso, né, a mesma
- 9:04palavra polimorficamente utilizada, né,
- 9:07de uma outra forma. Polimorfismo é
- 9:10basicamente fazer de outra forma. Então
- 9:12tem a palavra herança que serve para
- 9:13dinheiro, mas que também serve para essa
- 9:17outro exemplo aqui que eu vou colocar
- 9:18que na parte técnica, na parte de
- 9:20programação, faz mais sentido. Acompanha
- 9:23meu raciocínio aqui. Eh, imagina um
- 9:25passarinho, um passarinho adulto macho,
- 9:27e ele vai se juntar com uma passarinha,
- 9:29uma um pássaro fêmea. E aí eles vão ter
- 9:33um filhotinho e esse filhotinho é filho
- 9:36deles, óbvio. E aí, normalmente quando a
- 9:38gente tem filhos, né, quando pessoas,
- 9:41animais, né, enfim, tem filhotes, tem
- 9:44filhos, esses filhos ganham
- 9:45características principalmente dos pais.
- 9:47Então, nesse exemplo que tá aparecendo
- 9:48aqui do lado, ó, se você olhar o
- 9:50passarinho filhotinho, ele tem algumas
- 9:53peninhas aqui no peito que são muito
- 9:55iguais às peninhas do peito que o pai
- 9:56tem. Então essa parte ele herdou do pai
- 9:59e ele tem, por exemplo, ali a asinha
- 10:01dele aqui embaixo é igualzinha da mãe.
- 10:04Ele herdou da mãe. A gente tem isso, né,
- 10:05na nossa vida real, né? É, eu tenho uma
- 10:07filha e a minha filha tem coisas que são
- 10:10é a a cara, o nariz, o olhinho, o
- 10:14sorriso. Ah, parece mais comigo. Ah, sei
- 10:17lá, a orelha, eh, o a sobrancelha, o
- 10:21tipo de cabelo. Parece mais com a minha
- 10:22mulher. Ela herdou essas características
- 10:25minhas e da minha mulher. Então a gente
- 10:28diz que o filhote herdou essas
- 10:30características e essas características
- 10:32vêm dos pais. Só que ele não herda
- 10:35somente características, ele pode herdar
- 10:37comportamentos também. Por exemplo, esse
- 10:39passarinho aqui, ele pode, sei lá,
- 10:42ciscar, né? Cavar o buraquinho muito
- 10:44parecido com o do pai, fazer do jeito
- 10:46que o pai faz. Ele herdou esse
- 10:49comportamento do pai também. Vou um
- 10:51exemplo da minha filha. A minha filha na
- 10:52hora de dormir, ela tem um comportamento
- 10:54igual o meu, que é ficar coçando a
- 10:55cabeça assim devagarinho e tal. Ou seja,
- 10:57foi um comportamento que ela herdou de
- 10:59mim. Ficou claro isso, né? Então, na
- 11:01programação, quando a gente fala herdou,
- 11:03a gente tá falando de características e
- 11:05comportamentos. Ou seja, um filho herda
- 11:08coisas e comportamentos, né?
- 11:10Funcionalidades e características dos
- 11:13seus pais. Guarda isso na sua cabeça que
- 11:15fica muito mais fácil. Então, sempre que
- 11:17você falar de herança, lembra de pai e
- 11:18filho, né? os pais e o filho, o
- 11:21passarinho que herdou coisa, né, do do
- 11:23dos papais, vai ficar muito mais fácil
- 11:25pra sua cabeça. E outra coisa muito
- 11:27importante que aí vem a especialização
- 11:28que a gente vai ver mais pra frente, por
- 11:30não precisa herdar tudo. Ah, tem que ser
- 11:34igual ao olho da filha do Guanabara é
- 11:36exatamente igual. Não, cara, o pode ter
- 11:39algumas mudançazinhas, algumas
- 11:40características podem ser mudadas. Ela
- 11:42pode acrescentar outras características
- 11:44que eu não tenho, nem que a minha mulher
- 11:46tem. Assim como ela pode herdar
- 11:47comportamentos meu, como por exemplo,
- 11:48antes de dormir ela coçar a cabecinha,
- 11:50mas ela pode criar outras
- 11:52características e outros comportamentos.
- 11:54Tá dando para entender? Então assim, o
- 11:56filho ele não é obrigado a só herdar
- 11:59coisas dos pais. Eles ele pode herdar
- 12:01coisas dos pais, mas ele pode também
- 12:03herdar características e comportamentos
- 12:05e fazer alterações, criar comportamentos
- 12:08novos, criar características novas. Essa
- 12:10que é a beleza da herança. Isso eu tô
- 12:12falando na vida real e na programação. É
- 12:14exatamente a mesma coisa. Tá ficando
- 12:16fácil? Tá ficando claro? Se precisar,
- 12:18assiste essa parte mais de uma vez para
- 12:20ficar tudo claro na sua cabeça. Talvez
- 12:22você esteja, sei lá, assistindo essa
- 12:23aula e no celular ou tava conversando
- 12:25com alguém, não prestou bem atenção.
- 12:27Cara, isso aqui que acabei de falar, né?
- 12:29Todo esse iniciozinho é muito
- 12:30importante. Então, qualquer coisa, volta
- 12:32pro iniciozinho da explicação de
- 12:34herança. Vai nos capítulos aqui do
- 12:35vídeo, porque isso é essencial.
- 12:46E agora que você já entendeu tudo, se
- 12:47precisa, pausa, faz suas anotações.
- 12:50Vamos dar uma olhada aqui com mais
- 12:51espaço, né, pra gente não ficar
- 12:52espremidinho ali na tela. Eu tenho ali,
- 12:54ó, representado a mamãe e o filhote. Tem
- 12:56o papai também, mas eu vou botar aqui só
- 12:57a mamãe e o filhote. Tecnicamente, na
- 12:59prática, nos diagramas de classe, a
- 13:01gente vai representar a herança dessa
- 13:04maneira que aconteceu aqui, ó. é uma
- 13:06setinha para cima, é uma setinha com um
- 13:08triângulo vazado, exatamente como tá
- 13:10ali. Então, sempre que você olhar um
- 13:11diagrama de classes, a gente vai ver,
- 13:13né, vai ter uns desafios aí para até
- 13:15botar em prática diagramas de classe.
- 13:17Sempre que você olhar essa setinha
- 13:19branca que tá aqui, né, pode ser de
- 13:20outras cores, independendo do diagrama,
- 13:22você vai lembrar que isso é uma herança.
- 13:24Então, sempre que você for desenhar
- 13:25também, fale assim, é uma linha fechada
- 13:28e um triangulozinho aberto. A setinha
- 13:30ela é vazada, não pinta ela não. dentro
- 13:32de uma herança, o que a classe que tá
- 13:34acima a gente vai chamar de superclasse,
- 13:37que dá até para botar outros nomes, mas
- 13:38já já você anota. E a classe que tá
- 13:41embaixo, a gente vai chamar de
- 13:43subclasse. Então, a subclasse ela erda
- 13:46coisas da superclasse, certo? É o que
- 13:48tava lá na definição. Como eu disse, a
- 13:50superclasse pode ter outros nomes, como,
- 13:52por exemplo, classe base, ancestral ou
- 13:56classe mãe. Eu já chamei, eu já usei
- 13:57esses termos algumas vezes. Então, se eu
- 13:59falar assim, a classe base, classe base
- 14:00eu não tinha usado. Ah, a classe base
- 14:02tem tais atributos. Classe base é a
- 14:05classe mãe, é a superclasse, é o
- 14:07ancestral. E a subclasse também tem os
- 14:09seus nomes, que é classe derivada,
- 14:12classe descendente ou classe filha.
- 14:14Então, se eu falar de derivada,
- 14:15descendente ou filha ou subclasse, a
- 14:18gente tá falando da classe de baixo
- 14:19numerança. Depois, quando a gente for na
- 14:21parte dois de herança, que vai ficar um
- 14:23pouquinho mais paraa frente, a gente vai
- 14:24ver que nem todas as classes são
- 14:26sóclasses ou só subclasses. Tem algumas
- 14:28classificações para se fazer, mas é
- 14:30sempre assim, você vai classificar pela
- 14:32setinha. Para essa setinha que tá
- 14:34desenhada aí, passarinho mamãe é a
- 14:36superclasse e o passarinho filhote é a
- 14:39subclasse, mas nada impede de que a
- 14:41subclasse, que é o filhotinho, também
- 14:43seja a superclasse de outras classes,
- 14:45tá? Se ficou confuso, relax. A gente vai
- 14:47ver isso lá pra frente, vai ver sobre
- 14:49classe folha, classe raiz, a gente vai
- 14:51falar sobre, né, enfim, a gente vai ter
- 14:53outros termos aí para aprender, mas por
- 14:55enquanto vamos nesse basicão aqui. E o
- 14:56mecanismo de herança também tem um outro
- 14:58nome que é a generalização. E outra
- 15:01coisa importante para você anotar que
- 15:03herança é um relacionamento do tipo é
- 15:05um, ou seja, o passarinho de baixo é um
- 15:09pássaro como o pássaro de cima. Beleza?
- 15:12O filho é um objeto da mesma
- 15:15característica e comportamento da mãe,
- 15:18que é a superclasse. Então, cara, anota
- 15:20isso é muito importante. Herança é um
- 15:22relacionamento do tipo é1 ou é também
- 15:25uma generalização. São nomezinhos que
- 15:27vão aparecendo em prova, em concurso,
- 15:28que às vezes enrola você, mas aí se você
- 15:30tá anotando, você já tá sabendo aí no
- 15:32curso em vídeo que esses termos são
- 15:34utilizados. E aí você vai falar assim:
- 15:35"Pô, Gonabara, então você vai fazer um
- 15:37código para passarinho?" Não, eu vou
- 15:39fazer um código para você que vai ficar
- 15:41bem mais realista, vai ficar bem mais
- 15:43representando a realidade do
- 15:45desenvolvimento de sistemas, que é um
- 15:46exemplo que eu vou criar aqui agora.
- 15:48Pensa comigo aqui, ó. Eu vou colocar
- 15:49três pessoas na tela aqui e eles vão
- 15:51fazer parte de um sisteminha rapidinho
- 15:52aqui que a gente vai desenvolver. E
- 15:54essas pessoas vão ter suas
- 15:55características. O de cima é um jovem, é
- 15:58um aluno, o do meio é um professor e a
- 16:01mocinha lá de baixo, ela é uma
- 16:02funcionária. Vamos imaginar que a gente
- 16:03tá criando um sisteminha para cadastro
- 16:05de controle de escola. Tanto o aluno
- 16:08quanto o professor quanto a funcionária
- 16:10serão classes, né, que virarão objetos e
- 16:12eles têm atributos e métodos. Você viu
- 16:15isso até aqui, né? Essa daqui é a sétima
- 16:17aula. Se você caiu de para-quedas, você
- 16:18tem outras seis aulas para ver. Não
- 16:20adianta chegar aqui e achar que, ah,
- 16:21não, ó, eu não entendi só herança na
- 16:23faculdade. Então, você entendeu
- 16:25propriedade, método. Se você não
- 16:27entendeu, volta um pouquinho mais. Aqui,
- 16:28ó, em cima da minha cabeça, a gente tem
- 16:30isso, a playlist completa, vai lá e
- 16:32assiste, porque a gente tá, né, numa
- 16:34construção aqui. Eu vou colocar aqui
- 16:36algumas características e comportamentos
- 16:38do aluno. Então, eu coloquei ali, ó.
- 16:40Aluno tem nome, idade, o curso que ele
- 16:43faz e a turma. São características do
- 16:46aluno. E comportamento. O aluno faz
- 16:48aniversário e ele faz a matrícula.
- 16:50Coloquei só alguns, tá? Depois a gente
- 16:52vai falar um pouquinho sobre abstração.
- 16:53Logo no próximo vídeo. Vou fazer a mesma
- 16:55coisa pro professor. Aqui para cadastrar
- 16:56um professor no meu sistema, o que que
- 16:58eu vou precisar? Vou botar nome, idade,
- 17:01especialidade, nível, né? Especialidade,
- 17:04se ele é um professor de biologia, se
- 17:05ele é um professor de química, o nível
- 17:06dele, se ele é especialista, se ele já
- 17:09tem mestrado, se já tem doutorado,
- 17:10enfim. E ele também tem os métodos que é
- 17:12fazer aniversário e dar aula, né? Coisas
- 17:15que o professor pode fazer, fazer
- 17:16aniversário e dar aula. você fala, pô,
- 17:18fazer aniversário é porque no sistema
- 17:21fazer aniversário vai fazer algumas
- 17:22coisas ali, sei lá, enfim, é uma
- 17:24característica que o nosso sistema vai
- 17:25ter.
- 17:27E para funcionário, eu também vou botar
- 17:28características e comportamentos, né,
- 17:31atributos e métodos, nome, idade, cargo
- 17:33e setor e coisas que ela pode fazer,
- 17:36fazer aniversário e bater ponto. Se
- 17:38você, né, é uma pessoa inteligente, é um
- 17:40gafanhoto, um agafanhoto inteligente,
- 17:42você já viu que algumas coisas se
- 17:44repetem. Se você analisar as três
- 17:46classes que eu propus aqui do lado, até
- 17:48cheguei mais perto de mim aqui, existem
- 17:50coisas que se repetem. Por exemplo,
- 17:52todas as classes que todas essas três
- 17:54pessoas aqui que vou chamar de classe,
- 17:55elas têm as características nome, idade,
- 17:58todas elas têm em comum e elas também
- 18:00têm o método de fazer aniversário, né? É
- 18:02só você olhar o gráfico aqui do lado, tá
- 18:03tudo marcadinho. Então, essas partes que
- 18:05se repetem, eu não preciso ficar
- 18:07digitando duas vezes, que o mecanismo de
- 18:10herança vai facilitar para mim. No meu
- 18:12sistema, qual é a melhor maneira de eu
- 18:13poderia? no meu sistema, criar a classe
- 18:15aluno, classe funcionário, classe
- 18:17professor e colocar todos os atributos,
- 18:19todos os métodos. Sem problema nenhum,
- 18:20vai funcionar. Agora, uma outra coisa
- 18:23que é mais inteligente é eu fazer o
- 18:25seguinte. Eu crio uma classe, vamos usar
- 18:28genérica, pra gente usar a palavra
- 18:29generalização, eu criei uma classe
- 18:31genérica chamada pessoa. Nessa classe
- 18:34pessoa, eu vou colocar tudo aquilo que
- 18:36eles têm em comum. Então, por exemplo,
- 18:38nome, idade e fazer aniversário foi pra
- 18:41pessoa. Só você olhar ali na tela, né?
- 18:42Se você não tá olhando pra tela, olha
- 18:43pra tela ali. Agora eu coloquei na minha
- 18:46classe pessoa, que esse branquinho aí
- 18:47parece um fantasminha, nome, idade e
- 18:50fazer aniversário, que são as coisas que
- 18:51eu deixei marcada aqui perto de mim. E
- 18:53aí eu não preciso escrever, né,
- 18:55reescrever toda hora. Então eu posso
- 18:57tirar da parte das outras classes essas
- 19:00características e comportamentos que se
- 19:02repetem entre elas. Beleza? Então eu
- 19:04tirei o que se repete das classes
- 19:06principais e joguei tudo para essa minha
- 19:07classe genérica que eu chamei. Só que
- 19:09não adianta só jogar, eu tenho que fazer
- 19:11uma relação, eu tenho que criar uma
- 19:12relação entre eles. E a relação que a
- 19:14gente tá aprendendo nessa aula é a
- 19:15relação de herança. Então eu vou pegar
- 19:17essas três classes de baixo, vou
- 19:19reorganizar, né, hierarquicamente e vou
- 19:21dizer, olha só, olhando vinhas brancas
- 19:24com um triangulozinho vazado, herança,
- 19:26eu digo que aluno, professor e
- 19:29funcionário herdam características e
- 19:31comportamentos da classe pessoa. E
- 19:34lembra que herança é um relacionamento
- 19:36do tipo é1. Então vamos ler, ó. Todos
- 19:38que estão embaixo é uma relação do tipo
- 19:40é um. Aluno é uma pessoa, professor é
- 19:43uma pessoa, funcionário é uma pessoa. Ou
- 19:46seja, todos os que estão embaixo é da
- 19:49relação do tipo é um do que tá superior,
- 19:51beleza? Então todos que estão embaixo
- 19:53vão herdar, vão ganhar automaticamente
- 19:56todas as características e
- 19:57comportamentos do que tá em cima. Ou
- 19:59seja, o aluno, ele vai ter nome, vai ter
- 20:02idade, vai fazer aniversário também. Se
- 20:03eu criar essa relação, a gente vai ver
- 20:05como faz isso no código. O professor
- 20:07também, além de especialidade e nível,
- 20:09dá uma olhada aí na tela, e de dar aula,
- 20:11ele também vai ter nome, idade e fazer
- 20:14aniversário. Isso porque o mecanismo de
- 20:16herança me permite isso, me dá esse
- 20:19benefício. Toda a linguagem orientada
- 20:20objeto vai ter um mecanismo de herança
- 20:22implementado. E como eu disse muitas
- 20:24vezes anteriormente, essa classe de cima
- 20:26é o que a gente diz que é uma
- 20:28generalização e as classes de baixo é o
- 20:30que a gente diz como especialização. Por
- 20:32isso que a gente colocou lá, a classe de
- 20:34cima é a classe generalizada e a classe
- 20:36de baixo é a classe especializada,
- 20:38classe, subclasse, geral, especializada,
- 20:41enfim, vários nomes. E você viu isso
- 20:43anteriormente. Ficou claro essa teoria?
- 20:45Ficou claro tudo isso que eu mostrei
- 20:46aqui para você? Precisa tirar um print?
- 20:48Tira um print, bota no seu caderno isso
- 20:50daqui. Só que a pergunta que não quer
- 20:52calar é: "Tá bom, Anabara, entendi. Mas
- 20:55como é que eu faço isso em Python?" E é
- 20:56exatamente isso que vai acontecer agora
- 20:59na parte prática da sua aula.
- 21:06Então, ó, já estou aqui no meu Windows.
- 21:08Vou abrir o meu P char Charme pra gente
- 21:11poder fazer os exercícios. Lembra de
- 21:13deixar tudo organizadinho para depois
- 21:15você não perder os arquivos, né? Não,
- 21:17não, não faz o exercício um por cima do
- 21:19outro. Gera arquivos separadinhos, tudo
- 21:21bonitinho, tudo organizado, fica mais
- 21:23fácil. Aqui a gente tem, ó, os nossos
- 21:24exercícios que a gente fez até aqui. A
- 21:26gente tem os nossos desafios, como eu
- 21:28disse, ó, no vídeo anterior, né? Nos
- 21:30vídeos anteriores a gente fez o desafio
- 21:3216 até o desafio 22, né? Depois a gente
- 21:34vai ter o 23, 24, 25. Os desafios, os a
- 21:37próxima bateria de desafios vai vir
- 21:39depois da aula de abstração, tá? A gente
- 21:41vai ter essa aula de herança, depois a
- 21:42aula de abstração, depois nós vamos ter
- 21:44cinco desafios, tá? Então é assim que
- 21:46vai funcionar. E a gente tem a parte de
- 21:48reach aqui, que, né, você deve ter visto
- 21:50o vídeo aí na playlist, a biblioteca
- 21:52Rich, que a gente vai utilizar aqui
- 21:53também durante os desafios. Durante os
- 21:55exercícios eu vou tentar não usar tanto,
- 21:57tá? Vou mostrar aqui agora é como que a
- 21:59gente cria o próximo exercício. Vamos
- 22:01criar o exercício 004 aqui, ó. Então,
- 22:03botão direito, nova. Vamos criar uma
- 22:05pasta aqui, um diretório e vamos colocar
- 22:08exercício 004. E dentro do exercício
- 22:11004, eu vou criar um arquivo, um Python
- 22:14file chamado exercício 004. Já já a
- 22:17gente vai aprender a organizar melhor
- 22:18esses arquivos, tá? Então, beleza, já tá
- 22:20criado lá o exercício 004, que é o que a
- 22:23gente vai fazer exatamente agora aqui no
- 22:26mecanismo de herança. Basicamente, o que
- 22:28que eu vou fazer? Exatamente aquele
- 22:29diagrama que a gente fez anteriormente,
- 22:31que eu pedi para você tirar o print, só
- 22:32que em forma de código. Então vamos lá.
- 22:34Primeira coisa que eu vou fazer é criar
- 22:35a classe pessoa, certo? Essa classe
- 22:37pessoa vai ter um método init, que é o
- 22:40construtor. E aí nós vamos ter os
- 22:42seguintes atributos, ó, self.nome e
- 22:45self. Certo? que são as características
- 22:47aqui, são os atributos que a gente
- 22:49colocou aqui como comuns a todas as
- 22:51pessoas, ao aluno, ao professor e ao
- 22:52funcionário. Então eu vou criar aqui um
- 22:54construtor que eu vou criar o nome e a
- 22:56idade e vou jogar esse nome e idade nos
- 22:58meus atributos internos, certo? Poder
- 23:00podar n e i aqui sem problema nenhum. Se
- 23:02eu não informar o nome, o nome vai ser
- 23:04vazio. Se eu não informar a idade, a
- 23:06idade vai ser zero. Coloquei aqui os
- 23:07atributos padrões, né? Não é
- 23:08obrigatório, mas coloquei aqui para
- 23:10simplificar. também vou criar o meu
- 23:12método que é fazer aniversário. O fazer
- 23:15aniversário é simples. Quando a pessoa
- 23:17faz aniversário, o que que ela faz? Ela
- 23:18ganha um ano a mais na idade, não é
- 23:19isso? Então, self idade recebe self
- 23:23idade mais um, ou seja, eu pego mais um
- 23:26ano e coloco para ele. Se eu quiser
- 23:27simplificar isso, eu posso subir tirar
- 23:29isso tudo aqui, ó, e botar mais igual a
- 23:311. Você viu isso lá no módulo de Python,
- 23:33se eu não me engano. Então, funciona
- 23:35também. Agora nós vamos fazer o
- 23:36seguinte, também vou criar a classe
- 23:39aluno, vou botar um PS aqui só para não
- 23:41dar problema e vou criar a classe
- 23:43professor e vou criar a classe
- 23:45funcionário. Lembrando, é interessante
- 23:48você colocar o nome da classe com a
- 23:50primeira letra maiúscula, tá? Então eu
- 23:52tenho essas três, essas quatro classes,
- 23:54né? classe pessoa, a classe aluno,
- 23:56classe professor e a classe funcionária.
- 23:58Só que nesse momento que eu tô fazendo
- 23:59aqui, todas elas estão soltas, não tem a
- 24:02relação de herança. Para eu fazer a
- 24:04relação de herança no Python é muito
- 24:06simples. É só fazer isso aqui, ó. Aluno
- 24:08não é uma pessoa, então entre parênteses
- 24:10aqui do lado da palavra aluno, pessoa.
- 24:11Professor também não é uma pessoa, então
- 24:13pessoa. Funcionário também não é uma
- 24:15pessoa, pessoa. Com isso, eu tô dizendo
- 24:17que essas três classes aqui são
- 24:20subclasses da classe pessoa. Ou seja, se
- 24:22eu criar um aluno, ele automaticamente
- 24:24vai ter nome e idade, porque a classe
- 24:27mãe, a superclasse pessoa tem essas
- 24:29características. Vou fazer o seguinte
- 24:31aqui, vou criar os meus métodos
- 24:32construtores aqui. Tem uma coisa
- 24:34importante para para falar para você
- 24:35nesses nesses casos aqui. Vou criar para
- 24:38todos eles, tá? Também vou criar aqui,
- 24:40tá? Seguinte, quando eu tenho a minha
- 24:42inicialização, o mais comum é o
- 24:43seguinte, se você olhar lá no no
- 24:44diagrama, o aluno, ele tem as seguintes
- 24:46características. Ele tem a
- 24:48característica adicional, que é curso,
- 24:50deixar vazia aqui por enquanto, e também
- 24:53turma, botar selfie na frente, né? são
- 24:55os atributos, né, dessa classe. Ele
- 24:58também tem um método chamado fazer
- 25:01matrícula. Depois eu escrevo o código.
- 25:03Professor, ele vai ter os atributos
- 25:05especialidade e também nível. E ele vai
- 25:08ter também um método que a gente definiu
- 25:11lá, que é o dar aula.
- 25:16E por fim, o funcionário, ele vai ter os
- 25:19atributos cargo e setor
- 25:26e o método bater ponto. Beleza? Então
- 25:29aqui, ó, a gente já criou o esqueleto
- 25:31básico, ainda tá faltando coisa, tá?
- 25:32Então olha, eu tenho a classe pessoa.
- 25:35Normalmente depois de uma classe entre
- 25:36uma classe e outra, a gente vai ver como
- 25:38separar, mas entre uma classe e outra eu
- 25:39vou botar duas linhas vazias, tá? Só
- 25:41para organizar melhor. Então, tenho a
- 25:42classe pessoa que tem os atributos nome
- 25:44e idade, eu tenho o método fazer
- 25:46aniversário que todos vão herdar, né? O
- 25:48aluno, o professor e o funcionário. O
- 25:50aluno, além de herdar nome e idade, ele
- 25:53vai ter curso e turma e o método fazer
- 25:55matrícula. O professor, além de ter
- 25:57nome, idade, especialidade e nível e dar
- 25:59aula, o método dar aula. E o funcionário
- 26:01também vai ter, além de nomeidade, cargo
- 26:03e setor e vai ter o bater ponto, certo?
- 26:05Então, olha esse código aqui, faz na sua
- 26:08casa antes de continuar nesse momento.
- 26:09Ainda falta um pouquinho, mas faz na sua
- 26:11casa. E olha no diagrama. Eu vou pedir
- 26:13até um favor aqui pro editor para ele
- 26:15colocar, ó, pessoa, olha o diagrama que
- 26:18que tá aparecendo aí na tela. Pessoa é a
- 26:20superclasse, aluno é subclasse de
- 26:22pessoa. Como é que eu sei que aluno é
- 26:23subclasse de pessoa? Tá lá aluno e entre
- 26:25parênteses pessoa, né? Ele tá dizendo
- 26:27que aluno erda tudo que pessoa tem.
- 26:29Professor também erda tudo que pessoa
- 26:30tem. Funcionário também erda tudo que
- 26:32pessoa tem. Beleza? Outra coisa
- 26:33importante é o seguinte, tá dando um
- 26:35errinho aqui, todos os inícios, ó, esse
- 26:37init aqui da pessoa tá tudo bem, mas
- 26:38esse init aqui do aluno que é filho de
- 26:42pessoa, tá dando um errinho aqui. Se
- 26:43você passar o mouse em cima, o próprio
- 26:45pai Charm vai te dizer, olha só,
- 26:47adicionar o super class call. Que que é
- 26:50o super class call? É o seguinte
- 26:51comando, ó, super.
- 26:54Que que é isso? Toda vez que eu tenho um
- 26:55filho, né, aluno é filho de pessoa, eu
- 26:57tenho que colocar esse comando super,
- 26:59que é superclasse, vai lá na superclasse
- 27:02e executa o init dela. Ou seja, quando
- 27:04eu boto esse comando, eu não gosto muito
- 27:05disso não, mas enfim, é regra do Python,
- 27:07ele vai lá, executa o init,
- 27:10certo? No caso da mãe, né, para usar o
- 27:12termo certo. Só que o inich da mãe, ele
- 27:14precisa passar nome e idade. Então vou
- 27:16colocar aqui nome e idade também. Vou
- 27:18fazer a mesma coisa. Ah, é aqui eu
- 27:20também tenho que receber nome e tenho
- 27:21que receber idade. Além de nome e idade,
- 27:23eu também tenho que receber curso e
- 27:25turma. Aqui eu vou botar curso e turno.
- 27:27Ou seja, olha só, na hora que eu criar
- 27:28um aluno, eu vou ter que receber o nome
- 27:30dele, a idade dele, o curso dele e a
- 27:32turma dele. Beleza? O nome e a idade eu
- 27:35vou jogar pro inite lá do pai, né, da da
- 27:37da superclasse e o curso e a turma eu
- 27:39vou colocar nos atributos locais. Vou
- 27:41fazer a mesma coisa aqui para professor,
- 27:43ó. Eu vou mandar ele adicionar ou
- 27:46digita. É só digitar, né? Aqui eu também
- 27:47tenho nome e idade. E aqui eu recebo
- 27:50nome, idade, especialidade e nível. Você
- 27:53não entendeu? Na hora que você botar
- 27:55para funcionar, você vai entender
- 27:56melhor. Vai acompanhando, não desiste de
- 27:58mim, não. Aqui mais uma vez mandar ele
- 28:00adicionar a referência do super nome e
- 28:02idade. E aqui eu vou pedir nome, idade,
- 28:04cargo e setor. Beleza? Tá feito aqui.
- 28:07Depois eu vou escrever os métodos aqui
- 28:08bem genericões. Mas vamos fazer o
- 28:10seguinte, ó. Agora eu tenho mais ou
- 28:12menos a estrutura montada. Eui. Isso
- 28:15daqui que você tá vendo é exatamente o
- 28:18desenvolvimento desse diagrama que o
- 28:20editor tá colocando aqui do lado. Agora
- 28:22vamos fazer um teste. Olha só, eu vou te
- 28:24chamar de A1, que vai ser um aluno. Para
- 28:27fazer um aluno, eu tenho que dizer o
- 28:28nome, a idade, o curso e a turma. O nome
- 28:31vai ser José, a idade vai ser 17 anos, o
- 28:35curso vai ser informática e a turma vai
- 28:38ser T01. Beleza? Com isso, eu vou criar
- 28:43um objeto chamado a um que é da classe
- 28:45aluno. Essa parte aqui de criar um
- 28:47objeto a gente viu nas aulas anteriores,
- 28:48né? Então assiste as aulas anteriores. E
- 28:50eu vou fazer o seguinte, eu vou usar um
- 28:52inspect. Você pode fazer assim, ó, que
- 28:53se você tá fazendo pelo celular, print
- 28:55a1.dict,
- 28:57a gente já viu isso, né? Vou executar
- 28:58para você ver o que que ele que que ele
- 29:00faz. Tá vendo, ó? Então, eu tenho lá, ó,
- 29:01na hora que eu mando o A1.dict, ele vai
- 29:03mostrar o nome é José, a idade é 17, o
- 29:06curso é informática, a turma é T01, tá?
- 29:08Dá para fazer isso aqui se você tá
- 29:09usando o celular ou se tá usando o
- 29:11editor, né, online. Agora, se você tá no
- 29:13computador, que é o melhor dos mundos,
- 29:14você vai colocar aqui, ó, inspect usando
- 29:16a biblioteca Rich, né? Então você vai
- 29:18ter que vir aqui em cima e adicionar uma
- 29:20referência pro inspect. Então vou botar
- 29:21aqui, ó, from rich. Não funciona isso no
- 29:24celular, tá? Import, o print e inspect,
- 29:27certo? Tô carregando isso daqui. Por qu
- 29:29o inspect? Ele vai te dar isso daqui, ó.
- 29:32Olha só, eu tenho a característica do
- 29:33meu aluno, né? Ah, tá. Eu tô mandando
- 29:35mostrar o inspect do dict, não quero. Eu
- 29:37quero inspect somente do A1, tá? Inspect
- 29:40A1. Deixa eu executar, perdão. Tá lá, ó.
- 29:43Eu tenho o meu aluno, que é da classe
- 29:45aluno, certo? Então eu tenho, mandei
- 29:47inspeccionar o A1. Ele tá dizendo que o
- 29:49A1 é da classe aluno, ele é um objeto,
- 29:52ele tem o curso informática, ele tem a
- 29:54idade 17, ele tem o nome José e ele tem
- 29:56a turma T01. Beleza? Se você quiser ver
- 29:59os métodos, pode botar assim, ó, methods
- 30:02true, que ele vai ver os métodos também.
- 30:04Ó lá, ele é do curso, a idade, o nome, a
- 30:07turma. Ele tem o método fazer
- 30:09aniversário, ele tem o método fazer
- 30:10matrícula, certo? Então, presta atenção
- 30:12aqui, ó. Ele tá dizendo que meu aluno,
- 30:14ele tem curso, idade, nome e turma. Só
- 30:16que o que eu fiz foi aluno, ele tinha
- 30:19como atributos internos só curso e
- 30:21turma. De onde veio a idade e o nome? A
- 30:24idade e o nome vieram do pai, né? vieram
- 30:27da superclasse da mãe, que é a classe
- 30:29pessoa, certo? Se eu não colocasse a
- 30:31classe pessoa aqui, ó, n o aluno não
- 30:34teria as características e
- 30:35comportamentos da pessoa
- 30:37automaticamente. Como aluno é uma pessoa
- 30:39e pessoa tem nome e idade,
- 30:42automaticamente aluno também tem nome e
- 30:43idade. Como o aluno é uma pessoa, também
- 30:45faz aniversário. Então fazer
- 30:47aniversário, né, faz parte. Então, por
- 30:48exemplo, antes do inspect, se eu mandar
- 30:50o aluno fazer aniversário, presta
- 30:51atenção aqui, ó, ele tá com 17 anos. Se
- 30:53eu mandar a um ponto fazer aniversário,
- 30:56ó, na hora que eu executo, ele já tá com
- 30:5818, ó. Porque antes de inspecionar aqui,
- 31:00eu mandei ele fazer aniversário. E o
- 31:02fazer aniversário vai pegar o quê? A
- 31:03idade dele que era 17, jogar mais um e
- 31:06deixar registrado. Beleza? Então ele
- 31:07consegue mexer com isso. Daí eu consigo
- 31:09também, além de um aluno, ter um
- 31:11professor. Então vou botar lá, ó, P1 vai
- 31:13ser um professor. E para ser um
- 31:15professor eu tenho que informar nome,
- 31:17idade, especialidade e nível. Então vai
- 31:19ser o professor Samuel. Inclusive, um
- 31:22grande abraço pro professor Samuel de
- 31:23Biologia. Ele vai ter a idade, botar lá,
- 31:2537, Samuel, não sei se você tem 37, a
- 31:27especialidade biologia e o nível ele é
- 31:30mestre, mestrado. Se eu mandar, ó,
- 31:33inspect,
- 31:34ele vai mostrar, ó, também eu tenho
- 31:36aluno, tem tudo isso e eu tenho
- 31:38professor, ó. Professor que é o Samuel,
- 31:40eu tenho. Ah, tá. Ele tá vazio aqui por
- 31:42quê? Calma aí, ó. Deu erro por simples
- 31:47também vai dar pro no funcionário. Eu
- 31:49esqueci de botar a especialidade aqui,
- 31:51ó, e esqueci de botar o nível aqui. E
- 31:53também esqueci no no funcionário também,
- 31:55o cargo e o setor. Por isso que ficou
- 31:57vazio. Agora vou executar. Tá tudo
- 31:59resolvido. Ó, o professor é o professor
- 32:01Samuel do de biologia, 37 anos e ele é
- 32:04mestre. Certo? Dá para eu fazer também
- 32:07mostrando os métodos pro Samuel. Tá
- 32:09vendo? Ele pode dar aula, ele pode fazer
- 32:11aniversário. Mesma coisa, 37 anos. Se eu
- 32:13colocar aqui, ó, se eu errar, botar aqui
- 32:15a um ponto fazer aniversário. Eu não tô
- 32:18fazendo o Samuel fazer aniversário, eu
- 32:20tô fazendo o aluno, que eu esqueci o
- 32:22nome dele. Calma aí, deixa eu mostrar.
- 32:24Eu tô fazendo o José fazer aniversário.
- 32:26Então, se eu botar A1 fazer aniversário,
- 32:28o José vai fazer mais um aniversário. Ó,
- 32:30ele tinha 17, foi para 18, ó. Samuel
- 32:33continuou com 37 e provavelmente, ó, o
- 32:36José foi para 18. Ele tinha 17. Ah, tá.
- 32:39Tá. É porque eu inspecionei ele antes.
- 32:40Nesse exato momento ele tá com 19, tá?
- 32:42Porque na verdade eu dei um spect antes,
- 32:45ele fez aniversário depois. Então aqui,
- 32:47ó, se eu botar P1, quem vai fazer o
- 32:48aniversário é o Samuel. Ó, agora o
- 32:51Samuel que tinha 37, tá com 38 anos.
- 32:53Isso tudo eu consigo, por exemplo, aqui
- 32:55esses peçes aqui, né, que eu deixei, por
- 32:57exemplo, dar aula. O aluno fazer
- 33:00aniversário, o aluno fazer matrícula.
- 33:02Vou botar aqui, ó. Eu simplesmente vou
- 33:04fazer o seguinte, ó. Print formatado,
- 33:06né? O aluno, vou botar aqui o nome do
- 33:08aluno, self. nome acabou de fazer
- 33:11matrícula. Poder simples, tá? Dá para
- 33:13vocêar mais isso daqui, né? É porque é
- 33:16um exercício basicão, simples para
- 33:18professor o dar aula. Vou botar aqui
- 33:21print formatado. Professor
- 33:25self.Nome
- 33:26começou a dar aula e vou bater ponto
- 33:29aqui, ó. print formatado. Vou botar o
- 33:32nome do funcionário. Vendo. É, são
- 33:34características dele. Acabou de bater
- 33:37ponto. Então, olha só, lembrando aquelas
- 33:39características que a gente viu. O
- 33:40aluno, ele é uma pessoa, então ele faz
- 33:43aniversário, mas ele criou suas próprios
- 33:46seus próprios métodos. Ele tem um método
- 33:47que é fazer matrícula, né? O pai dele, a
- 33:50mãe dele, né? A superclasse não faz
- 33:51matrícula, mas ele faz. São coisas
- 33:53novas. O filho erda coisas das mães, né?
- 33:56da da classe mãe, mas também pode criar
- 33:58suas próprias características como curso
- 34:00e turma e ter seus próprios
- 34:01comportamentos, como fazer matrícula.
- 34:02Por exemplo, professor não pode fazer
- 34:04matrícula, funcionário não pode fazer
- 34:06matrícula, né? Assim como funcionário
- 34:09não pode dar aula, aluno não pode dar
- 34:10aula porque são características
- 34:12específicas de professor, certo? Então
- 34:14eu consigo montar isso daqui. Vou criar
- 34:16também um funcionário, vou botar aqui
- 34:17também, além de fazer aniversário, pro
- 34:19A1 fazer matrícula e vou fazer aqui pro
- 34:21professor B1 dar aula. Ó, na hora que eu
- 34:24executo, ele cria um aluno. O aluno,
- 34:27cadê? Tá aqui, ó. José acabou de fazer
- 34:29matrícula. Tenho aqui também o professor
- 34:31Samuel começou a dar aula. E tenho
- 34:33também, ah, tenho também não, porque eu
- 34:35não fiz, vou fazer o funcionário aqui
- 34:36agora. Meu funcionário, vou chamar de
- 34:38F1. É o meu primeiro funcionário. Vai
- 34:39ser um funcionário que vai ser a
- 34:42Cláudia. Ela tem 12 anos, funcionário
- 34:45com 12 anos, 27 anos. O cargo dela é
- 34:49secretária, secretária escolar, né?
- 34:51Aquela que faz a matrícula. E o setor
- 34:53dela é secretaria. Beleza? Eu consigo
- 34:55fazer também a funcionária que tem 27
- 34:57anos fazer aniversário na hora que eu
- 34:59quiser. E ela também pode, como método,
- 35:01também bater ponto, certo? E também
- 35:03posso dar um inspect nela, na
- 35:05funcionária e os métodos também
- 35:07verdadeiros. Se você não quiser
- 35:09inspecionar todos, né, aparecer todos,
- 35:10ficar meio bagunçado, você pode botar
- 35:12uma hashtag na frente para ele ignorar,
- 35:13né, e deixar só um espect que vale a
- 35:15pena, né, que você tá testando no
- 35:17momento. Então, olha aqui, ó. O José
- 35:18acabou de fazer a matrícula, depois o
- 35:20professor Manuel começou a dar aula e
- 35:21depois a funcionária Cláudia acabou de
- 35:23bater ponto, certo? A funcionária
- 35:25Cláudia, ela é secretária, né? Tem 28
- 35:28anos, né? Era 27, mas fez aniversário.
- 35:30Ela se chama Cláudia, trabalha na
- 35:31secretaria e ela pode bater ponto e
- 35:33fazer aniversário. Beleza? Então, olha
- 35:35só, aqui eu tenho o meu método
- 35:37principal, certo? Depois a gente vai dar
- 35:39uma organizadinha nele. Isso aqui é é é
- 35:41o teste, é o fazer valer. E aqui é todo
- 35:44o planejamento das classes. Eu tenho a
- 35:45classe pessoa, eu tenho a classe aluno,
- 35:48eu tenho a classe professor e eu tenho a
- 35:50classe funcionário. Sendo que aluno,
- 35:51professor e funcionário são, é um
- 35:53relacionamento do tipo é um funcionário
- 35:55é uma pessoa, professor é uma pessoa e
- 35:58aluno é uma pessoa. Isso porque eu tenho
- 36:00os parênteses aqui que significa
- 36:02herança. Deu para entender? Faz na sua
- 36:05casa. Beleza? Agora você sabe fazer isso
- 36:07em Python. Só que ficou um arquivo muito
- 36:10grande, ficou grandão. E o que eu vou te
- 36:12recomendar é dividir para organizar.
- 36:14Lembra que uma das características da
- 36:16herança é a organização do código? Então
- 36:18dá pra gente dividir as coisas para
- 36:20organizar. Eu não preciso manter tudo
- 36:22num arquivão só de Python. Eu consigo
- 36:24pegar e separar, botar cada classe num
- 36:27arquivo, né? Ou então todas as classes
- 36:29num arquivo separado. Enfim, dá para
- 36:31você colocar sim. E é exatamente isso
- 36:34que eu vou te mostrar agora. Você sabe o
- 36:38quanto é importante para um produtor de
- 36:39conteúdo ter um canal no YouTube, ter
- 36:41você como inscrito no canal e habilitar
- 36:43o sininho de notificação para você saber
- 36:44quando sair vídeo novo. Só que às vezes
- 36:46a plataforma do YouTube não te mostra
- 36:48tudo aquilo que acabou de sair no canal
- 36:50e é por isso que a gente criou um canal
- 36:51de distribuição no Telegram. E você pode
- 36:53acessar agora mesmo t.m/cursinvídeo.
- 36:56Pode se inscrever no nosso canal.
- 36:58Inclusive tem outros canais tentando se
- 36:59fazer passar pela gente. O único válido
- 37:01é esse daqui. E pode ficar tranquilo,
- 37:03ficar tranquila. A gente não fica
- 37:05enchendo vocês de mensagem e sempre que
- 37:07a gente lança uma coisa interessante no
- 37:08canal, eu te aviso por lá. Faça parte
- 37:10você também do nosso canal do Telegram.
- 37:15Que que eu vou fazer aqui? Eu vou pegar
- 37:17esse exercício quatro e vou duplicar, ó.
- 37:18Eu vou dar contrtrl C, conttrl V, vai
- 37:20ser exercício 005. Ó, ele já criou lá o
- 37:23exercício 005 com todos esses arquivos.
- 37:25Vou fechar tudo, ó. Fecha tudo e abre
- 37:27aqui no exercício 005. Aqui eu vou fazer
- 37:29o seguinte, ó. Vou eu vou simplificar.
- 37:31Vou fazer a maneira mais simples e
- 37:33depois a maneira um pouquinho mais
- 37:34complexa. Eu vou renomear ele aqui, ó,
- 37:36rename, botão direito, rename. Vou
- 37:37chamar ele de underline_line
- 37:39main_line_line, certo? Eu vou ter o meu
- 37:42código principal aqui. No meu código
- 37:44principal, além do código principal, ó,
- 37:45vou criar dentro da mesma pasta um novo
- 37:48Python file chamado classes. Vou chamar
- 37:51de classes e005.
- 37:54As classes do exercício 005. E o que que
- 37:56eu vou fazer, ó? Eu vou pegar todas as
- 37:58classes, ó, daqui da classe pessoa até o
- 38:01finalzinho da classe funcionário, certo?
- 38:04Vou tirar, ó, conttrl X, cuidado para
- 38:06não fazer besteira. Conttrl X. E logo em
- 38:08seguida, para não perder, você vem aqui
- 38:10e crtrol V, certo? Eu botei todos os as
- 38:13classes aqui dentro. Ou seja, a parte do
- 38:15meu arquivo principal ficou aqui e a
- 38:17parte das minhas classes ficou aqui. Só
- 38:19que se você for lá no main, tá dando
- 38:21erro, ó. Não tem aluno, não tem
- 38:22professor, não tem funcionário, não tem
- 38:24nada. Por eu tenho que fazer aqui, ó,
- 38:26from classes do exercício 005, importo,
- 38:30professor e funcionário. Certo? Então eu
- 38:32vou lá na classe, eu importo aluno,
- 38:34professor e funcionário. Se eu executar,
- 38:37ó, tá funcionando do mesmo jeito, ó.
- 38:39José acabou de fazer matrícula. Samuel
- 38:41começou a aula, Cláudio acabou de bater
- 38:43ponto. Se eu quiser, eu posso tirar um
- 38:44espect. Um spect é bom para testar, né,
- 38:46para você ver o que tá dentro da
- 38:47variável, mas depois não faz sentido,
- 38:49né, eu ter ele no resultado final. É
- 38:52aqui, ó. José, eu tenho um aluno José,
- 38:53que acabou de se matricular, um
- 38:55professor Samuel que começou a dar aula
- 38:56e uma funcionária Cláudia que acabou de
- 38:58bater ponto. Beleza? Tudo isso com esse
- 38:59código aqui, que agora ficou mais fácil,
- 39:01ó. Eu tenho aqui essas chamadas aqui e
- 39:03as classes ficaram separadas. Beleza?
- 39:05Essa é a maneira mais simplesona de
- 39:07fazer. Dá também, ó, vou fechar todos os
- 39:10arquivos. Não esquece de fechar os
- 39:11arquivos para não ficar bagunçado. Vou
- 39:13selecionar aqui o exercício 005, conttrl
- 39:15C, conttrl V. Vou criar o exercício 006.
- 39:18Só dupliquei, tá? E aí aqui além do main
- 39:20eu não vou ter mais esse classe 005,
- 39:22pode deixar ele aqui ainda, não apaga.
- 39:23Eu vou criar novo Python file. Vou criar
- 39:26o arquivo pessoa, tudo em minúsculo, tá?
- 39:28Vou criar o arquivo Python file, aluno,
- 39:31também vou criar o arquivo professor,
- 39:33também vou criar o arquivo funcionário,
- 39:36certo? Então eu tenho agora aqui além do
- 39:38meu main, que é o meu arquivo principal,
- 39:40eu vou ter aluno, vou ter funcionário,
- 39:43professor e pessoa. E aí o que que eu
- 39:45vou fazer? Eu vou vir aqui nessa classe,
- 39:46vou pegar a classe pessoa, pegar o
- 39:49código de pessoa, contrtrl X e vou jogar
- 39:52aqui dentro de pessoa. Cadê pessoa? Tá
- 39:53aqui, ó. Joguei pessoa aqui dentro
- 39:56também. Vou pegar a classe aluno, ó.
- 39:59Contrtrol X. Vou jogar aqui dentro de
- 40:01aluno com uma pequena alteração, ó.
- 40:03Conttrl V. Como não tem pessoa aqui, vem
- 40:05aqui, ó. From pessoa, import pessoa.
- 40:09Lembrando, ó, maiúsculo e minúsculo, tá?
- 40:10Aqui pessoa minúscula é o nome do
- 40:12arquivo e aqui pessoa P maiúscula é o
- 40:13nome da classe, certo? Também vou fazer
- 40:15a mesma coisa para Opa, o fazer
- 40:17matrícula não foi, ó. Deixa eu tirar
- 40:19esse fazer matrícula daqui e jogar
- 40:21dentro de aluno. Ficou faltando. Beleza.
- 40:24Organiza aí para ficar tudo bonitinho.
- 40:26Também vou pegar a classe professor e
- 40:28vou fazer a mesma coisa, ó. Vou pegar
- 40:29todo o código do professor, vou tirar
- 40:31daqui, vou jogar aqui, ó. From pessoa,
- 40:34import pessoa, porque eu também vou
- 40:37precisar, né? Porque professor é uma
- 40:38pessoa, herança, né? Então tem que
- 40:40importar. E também tem o funcionário.
- 40:42Vou vir aqui nas classes, vou pegar o
- 40:44código de funcionário, tiro daqui e jogo
- 40:47para dentro de funcionário. From
- 40:48pessoas, import pessoa e também tá lá
- 40:52funcionário. Eu assim, eu gosto disso.
- 40:55Para esse projeto pequenininho, não fez
- 40:56sentido fazer tanta coisa assim. E esse
- 40:59arquivo classe aqui, ó, a gente já pode
- 41:00remover ele, ó. Posso apertar aqui
- 41:02delete. Ah, eu não posso deletar ainda
- 41:05porque olha só, eu eu preciso vir aqui
- 41:07no main. Esse import aqui não vai
- 41:08funcionar mais, né? Eu vou ter que tirar
- 41:10essa daqui e vou ter que importar, já
- 41:11que eu quero aluno, professor e
- 41:12funcionário nesse exercício. From aluno,
- 41:15importo,
- 41:17from professor, import professor e from
- 41:20funcionário, importário. Certo? Agora
- 41:24sim eu posso deletar esse classe 5 aqui.
- 41:27Ã, safe delete. Ok, beleza. Agora eu
- 41:30posso executar, ó. Vou deixar o main
- 41:31aberto, né? Aqui em cima, current file e
- 41:34vou dar play. Funcionou? Ainda não.
- 41:36Calma aí. A um fazer matrícula. Vamos
- 41:38fazer matrícula que tem algum problema
- 41:40no aluno aqui. Ah, tá. É porque quando
- 41:42eu colei, ó, viu? Eu eu falei para você
- 41:44olhar direitinho e e não olhei o meu.
- 41:46Vou voltar aqui a identação. Usei o
- 41:48shift delete para ele ficar certinho
- 41:50aqui na ção, né? Lembrando que Python
- 41:52sem identação não é Python. Vou voltar
- 41:54aqui pro main, vou mandar executar. Aí
- 41:55tá lá, ó. José acabou de fazer
- 41:57matrícula, professor Samuel começou a
- 41:58dar aula, Cláudia acabou de bater ponto,
- 42:00certo? tá funcionando. Então,
- 42:02basicamente, o que a gente fez foi isso
- 42:03aqui. A gente separou as classes. A
- 42:05gente tem o main e a gente tem as
- 42:06classes. Botar um exemplo aqui da da
- 42:08divisão que a gente fez, ó. A gente tem
- 42:10o o arquivo main. O arquivo main.p, se
- 42:13eu precisar de um aluno, ele vai
- 42:15carregar a classe aluno. E dentro da
- 42:17classe aluno. Eu tenho também o arquivo
- 42:20pessoa. Pai, que tem a classe Pessoa,
- 42:21certo? E o M também vai chamar professor
- 42:23e também vai chamar funcionário.
- 42:25Tranquilo? É basicamente essa
- 42:26arquitetura aqui que a gente criou
- 42:28organizacional. Tranquilo? Então, olha
- 42:30só, eh, eu não gosto muito dessa
- 42:33organização para projetos pequenos, mas
- 42:35para projetos grandes, isso daqui ajuda
- 42:37demais. Inclusive tem a possibilidade
- 42:39até de pegar todas essas classes, jogar
- 42:40dentro de uma pasta para poder, né,
- 42:42organizar os módulos, tá? Outra coisa
- 42:44importante, quando o projeto é grande, o
- 42:45meu main.p, esse nome de arquivo, é o
- 42:47nome padrão, tá? É underline_line
- 42:49main.p. Tem gente que, né, o certo de
- 42:52fazer seria isso daqui, ó. A gente não
- 42:53vai fazer muito não. A gente vai fazer
- 42:55def main, a gente vai querer colocar
- 42:56tudo isso aqui dentro de um método
- 42:58chamado main. Isso aqui vai ter que tudo
- 43:00entrar, tá? Ó aqui, ó. Tudo indetado
- 43:02para dentro. Então, tem o método main,
- 43:03só que tem um problema. Se eu executar
- 43:05aqui, ele agora parou de fazer tudo. E
- 43:07aí eu vou ter que fazer um if lá
- 43:08embaixo, ó. Você vai fazer o seguinte
- 43:10aqui, ó. Se underline underline name for
- 43:12igual igual a underline underline, entre
- 43:15aspas, main, ou seja, se o nome do
- 43:17arquivo for main, ele vai chamar o
- 43:18método main, certo? Isso daqui é quando
- 43:20você tem módulos muito grandes, o
- 43:22arquivo underline underline Min, né? O
- 43:24código tem que est dentro de um de uma
- 43:25função, tá? Então eu tenho lá, ó, o
- 43:27defm, que é uma uma função main, uma
- 43:29função normal, um método normal, né? Não
- 43:31tá dentro de classe e esse if aqui de
- 43:33baixo simplesmente vai verificar o nome
- 43:35do arquivo é underline_line main.p, não
- 43:38precisa do pp, tá? É só underline. O
- 43:39nome do arquivo é underline_line main.
- 43:41Ah, o nome do arquivo é underline_line
- 43:42main, então chama o main. Isso daqui é
- 43:45uma segurança para modularização, para
- 43:47programação modular com Python. E aí ele
- 43:50voltou a funcionar. Beleza? Então olha
- 43:52só, a gente fez nessa aula o exercício
- 43:544, 5 e 6. O qu sem modularização
- 43:57nenhuma, tá? Todo a classe, os objetos
- 44:00no mesmo arquivo. A gente vai até fazer
- 44:02isso de novo algumas vezes, sem problema
- 44:04nenhum, tá? Para arquivos pequenos, para
- 44:06projetos pequenos, tudo bem fazer como o
- 44:09exercício quatro. O exercício cinco, eu
- 44:11joguei a parte principal, dá para fazer
- 44:13também aquele negocinho aqui, ó.
- 44:14Deathman, jogar isso aqui para dentro,
- 44:18só para modularizar, tá? E aqui é aquele
- 44:20if lá, se underline_line name for igual
- 44:25dois iguais, tá? Não esquece
- 44:26underline_line main do também chama a
- 44:30função main. Aí vocês vão ver em vários
- 44:32livros aqui. Deixa eu executar só para
- 44:33ver se tá funcionando. Tudo funcionando
- 44:35perfeitamente. Então olha só. Então a
- 44:37segunda maneira foi botando o principal
- 44:39separado e todas as classes unidas num
- 44:42mesmo código, certo? Lembrando que tem
- 44:43as importações lá em cima, né? Eu tenho
- 44:45que vir aqui em cima e importar as as
- 44:47classes. E por fim, o exercício seis, eu
- 44:50peguei a herança e levei ao extremo. Eu
- 44:53tenho o meu código principal, que são as
- 44:55chamadas, que tá muito parecido com
- 44:56outro, né? Só as importações aqui
- 44:57ficaram diferentes. Eu tenho a classe
- 44:59pessoa só num arquivo separado, tá
- 45:02vendo? Ficou pouquinho, mas quando você
- 45:03vai programando e a classe tá com muita
- 45:04coisa, essa é a maneira mais organizada
- 45:06de fazer. Tenho também a classe aluno
- 45:08também com seu código que é filho de
- 45:10pessoa. Então ter que importar aqui.
- 45:12Tenho também funcionário que também é
- 45:14filho de pessoa e tenho também professor
- 45:16que também é filho de pessoa. Cada um
- 45:18com seu código, né? Cada um importando
- 45:20pessoa, né? Já que tenho que utilizar
- 45:22aqui, fazendo a hierarquia e meu código
- 45:24principal aqui chamando todo mundo.
- 45:26Fechou? Ufa, né, cara? É muita coisa.
- 45:29Isso é só a introdução à herança. Espero
- 45:31que você tenha entendido. Espero que
- 45:33você pratique. Relaxe que a gente vai
- 45:34fazer exercícios mais para frente, tá?
- 45:36Mas é muito importante a gente entender
- 45:38os pilares da maneira mais completa, mas
- 45:42ainda assim simplificada, como eu tentei
- 45:44trazer aqui nesse vídeo. Então não se
- 45:45esquece, ó, deixa o like, mostra pras
- 45:48pessoas, compartilha, fala: "Cara, olha
- 45:50só, orientação objeto com esse cara aqui
- 45:52em Python. Agora eu tô entendendo.
- 45:54Espero de verdade que eu tenha te
- 45:55ajudado." Fechou? Então é isso, meu
- 45:57querido. É isso, minha querida. a gente
- 45:58se vê na próxima aula, onde a gente vai
- 46:00falar sobre o segundo pilar, na verdade,
- 46:02né, que seria o primeiro, que seria
- 46:04abstração, né, pros livros. Mas pra
- 46:06gente aqui a abstração vai vir depois de
- 46:07herança. A gente ainda vai voltar a ter
- 46:09herança, tá? Essa aula aqui, se você
- 46:10voltar lá, é herança parte um, a gente
- 46:12vai ter herança parte dois aqui para ver
- 46:14alguns conceitos
- 46:15adicionais que ficaram faltando. Então,
- 46:17eu não quis colocar tudo nessa aula de
- 46:19herança completona não, que senão ia
- 46:20ficar muito grande, né? A gente além de
- 46:22herança, a gente ainda viu um pouquinho
- 46:23de modularização, que foi o final do
- 46:25módulo 3, né? O mundo três falou um
- 46:27pouquinho sobre modularização. A gente
- 46:28ainda fez modularização aqui, organizou
- 46:30tudo bonitinho, fizemos o main do
- 46:32módulo, né, com underline_line
- 46:33main_line_line.p. Fizemos tudo
- 46:35organizado. Espero que você tenha
- 46:37gostado. Espero que você esteja fazendo
- 46:39aí na sua casa também. Assista esse
- 46:40vídeo mais de uma vez, mostra pras
- 46:42pessoas e faça o curso completo, porque
- 46:44ele tá muito caprichado. Um grande
- 46:46abraço e a gente se vê na próxima, onde
- 46:48a gente vai falar sobre abstração. Ciao
- 46:50ciao
- 46:53[música]
About this transcript
This page contains the full transcript of Herança em Python explicada como nunca fizeram - Curso Python POO: Aula 7 by Curso em Vídeo, generated from the public captions YouTube serves with the video. The transcript has 9,325 words across 1,367 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.