Python POO - Slides
Python POO - Slides
nicurso de Python - PO
Mi O
Katie’s Month
File Edit View Label 10:00 AM
KATIE
Saindo do buraco negro e impulsionando meninas para a computação
O Instituto de Computação (IC) sempre teve poucas
mulheres em seu corpo discente, sendo isso um reflexo
de como é o mercado de trabalho na área de computação.
Assim, se fez necessário a fundação de um projeto que
acolhesse e incentivasse mulheres na área.
Chat Trash
File Edit View Label 10:00 AM
Rebeca Brandão Evyllyn dos Santos Mateus Patriota Ullyanne Patriota Hiago Cavalcante
Instrutores Monitores
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
1 Classes, métodos,
atributos e objetos 3 Herança
5 Composição
2 Construtor:
inicializando o
objeto 4 Polimorfismo 6 Encapsulamento
Chat Trash
File Edit View Label 10:00 AM
Google Colab
Ferramenta
Chat Trash
File Edit View Label 10:00 AM
Projeto
Após este minicurso, você estará totalmente apto para desenvolver...
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Construtor
Inicializando um objeto
Chat Trash
File Edit View Label 10:00 AM
self: representação
da instância.
possibilidade de ter
atributos distintos
e/ou únicos em cada
instância.
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Objeto
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Atributos de classe
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Classes default
O que vimos até agora foi a criação str (string) = "Hello World"
de classes personalizadas, onde int (integer) = 1
definimos as características que uma float = 1.54
instância de uma classe deve ter e
list = [1, 2, 3]
seus métodos.
Mas você sabia que existem classes
definidas pelo próprio Python? São
elas str, int, float, list etc.
Chat Trash
File Edit View Label 11:00 AM
Até 27/07!
Chat Trash
File Edit View Label 10:00 AM
1 Classes, métodos,
atributos e objetos
2 Construtor:
inicializando o
objeto
Chat Trash
File Edit View Label 10:00 AM
3 Herança
4 Polimorfismo
Chat Trash
File Edit View Label 10:00 AM
Herança
Todo filho tem algumas características dos pais e chamamos
isso de herança genética! Inspirando-se neste conceito de
herança, foi criado o conceito de herança na programação e
então implementado em Python.
Chat Trash
File Edit View Label 10:00 AM
Herança
Sabemos que tanto o gato quanto o humano são seres vivos e
portanto nascem e amadurecem. Observe a classe SerVivo:
Chat Trash
File Edit View Label 10:00 AM
Herança
Então as classes Humano e Gato podem herdar as propriedades
de SerVivo!
Chat Trash
File Edit View Label 10:00 AM
Herança
Podemos mandar o objeto Humano nascer? Claro!
humano.nascer(‘Wilson’)
Chat Trash
File Edit View Label 10:00 AM
Herança
E se pedirmos ao objeto Gato para sorrir ou ao objeto Humano
para miar?
erro de atribuição!
Chat Trash
File Edit View Label 10:00 AM
Herança
Vamos agora criar uma nova classe filha de SerVivo (ou apenas
subclasse): Cachorro.
Chat Trash
File Edit View Label 10:00 AM
Herança
Perceba que diferentemente das outras classes, não chamamos
super().__init__() em seu construtor. Por conta disso, o
interpretador não inicia a nova classe com o construtor da
classe mãe. Dessa maneira, nosso objeto Cachorro não herdará
nunca o atributo idade, somente os métodos.
Chat Trash
File Edit View Label 10:00 AM
Herança
Se quisermos, além de usar os atributos da classe mãe,
adicionar novos atributos, é somente preciso adicionar ao
__init__ da classe filha.
Crianca vai herdar atributos e
métodos tanto de Humano quanto de
SerVivo.
Chat Trash
File Edit View Label 10:00 AM
Herança
E se quisermos um __init__ na classe filha que receba pelo
menos um input do usuário diferente da classe mãe?
Chat Trash
File Edit View Label 10:00 AM
Herança
Em adição, a herança nos possibilita o uso de métodos
sobrescritos: se um filho tem um método com o mesmo nome de
um método do pai, o interpretador executa o do filho.
Chat Trash
File Edit View Label 10:00 AM
Polimorfismo
Polimorfismo é a capacidade de um objeto poder ser
referenciado de várias formas.
Chat Trash
File Edit View Label 10:00 AM
Polimorfismo
Exemplo na vida real
Chat Trash
File Edit View Label 10:00 AM
Polimorfismo
Exemplo na vida real
Chat Trash
File Edit View Label 10:00 AM
Polimorfismo
Exemplo na vida real
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
OPÇÃO 2 - Polimorfismo!
Ainda bem que temos o polimorfismo para salvar o dia!
Não importa como nos referenciamos a um objeto, o método que
será invocado é sempre o que pertence a ele mesmo.
Chat Trash
File Edit View Label 10:00 AM
Funcionários
Assim, chegamos ao nosso objetivo
com uma classe mãe Funcionário e
classes filhas Gerente e
Atendente.
Chat Trash
File Edit View Label 10:00 AM
Legal, né?
Dessa forma, o código está enxuto. A única
coisa que precisamos entender, com esse
trecho de código, é que queremos que os
funcionários trabalhem.
Chat Trash
File Edit View Label 11:00 AM
Até 08/10!
Chat Trash
File Edit View Label 10:00 AM
1 Classes, métodos,
atributos e objetos 3 Herança
2 Construtor:
inicializando o
objeto 4 Polimorfismo
Chat Trash
File Edit View Label 10:00 AM
5 Composição
6 Encapsulamento
Chat Trash
File Edit View Label 10:00 AM
Composição
Chat Trash
File Edit View Label 10:00 AM
Composição
Chat Trash
File Edit View Label 10:00 AM
Composição
Chat Trash
File Edit View Label 10:00 AM
Composição
Chat Trash
File Edit View Label 10:00 AM
Composição
A resposta é não!
Chat Trash
File Edit View Label 10:00 AM
Composição
Chat Trash
File Edit View Label 10:00 AM
Encapsulamento
Separar em partes
Chat Trash
File Edit View Label 10:00 AM
Encapsulamento
Problema: Como nossa
classe é projetada com
atributos públicos,
podemos quebrar a
interface e simplesmente
acessar e alterar os
atributos que deveriam ser
protegidos.
Chat Trash
File Edit View Label 10:00 AM
Encapsulamento
Solução: Manter os
atributos protegidos e
decorar os métodos com
um decorador que se
chama property.
Chat Trash
File Edit View Label 10:00 AM
Encapsulamento
Mais sobre o property:
Possui métodos extras, como
um getter e um setter.
Quando aplicado em um
objeto, nos retorna uma
cópia dele com as suas
funcionalidades. Logo, somos
capazes de chamar nossos
métodos sem os parênteses e
como se fossem atributos
públicos.
Chat Trash
File Edit View Label 10:00 AM
Encapsulamento
Chat Trash
File Edit View Label 10:00 AM
Antes de finalizar...
Sugestão para o projeto
O que acontece se
printarmos um
objeto?
Chat Trash
File Edit View Label 10:00 AM
O que acontece se
printarmos um
objeto?
Chat Trash
File Edit View Label 10:00 AM
método __str__:
útil para printar as
informações do seu
objeto
Chat Trash
File Edit View Label 10:00 AM
Projeto
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash
File Edit View Label 10:00 AM
Chat Trash