0% acharam este documento útil (0 voto)
93 visualizações

Python POO - Slides

1) O grupo Katie apresenta um minicurso gratuito de programação orientada a objetos em Python. 2) O curso abordará conceitos como classes, métodos, atributos, objetos, herança, composição, encapsulamento e projeto. 3) O curso usará a ferramenta Google Colab para os exercícios práticos.

Enviado por

Rebeca Brandão
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
93 visualizações

Python POO - Slides

1) O grupo Katie apresenta um minicurso gratuito de programação orientada a objetos em Python. 2) O curso abordará conceitos como classes, métodos, atributos, objetos, herança, composição, encapsulamento e projeto. 3) O curso usará a ferramenta Google Colab para os exercícios práticos.

Enviado por

Rebeca Brandão
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 63

Grupo Katie apresenta:

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.

O nome Katie é uma homenagem à cientista Katie Bouman,


que liderou a equipe de cientistas responsável pelo
algoritmo que possibilitou a primeira visualização de
um buraco negro em nossa galáxia.

Chat Trash
File Edit View Label 10:00 AM

Quem somos nós?

Rebeca Brandão Evyllyn dos Santos Mateus Patriota Ullyanne Patriota Hiago Cavalcante

Instrutores Monitores

Chat Trash
File Edit View Label 10:00 AM

Tô com dúvida, e agora?

Não se preocupe! Criamos um


grupo no Whatsapp pra você se
sentir à vontade, tirar suas
dúvidas e compartilharmos
conhecimento!

Chat Trash
File Edit View Label 10:00 AM

Tô com dúvida, e agora?


Não se preocupe! Criamos um grupo Usaremos o Classroom para postar
do Whatsapp pra você se sentir à links úteis e avisos. Você pode
vontade, tirar suas dúvidas e postar sua dúvida lá, mas o grupo
compartilharmos conhecimento! do Whatsapp existe justamente para
isso.

Não se sintam incapacitadas(os) Criamos um material complementar


por não entender alguma coisa. bem legal para você utilizar em
Ninguém achará isso de você. seus estudos, ele será postado no
Estamos aqui para te ajudar :) Classroom.

Chat Trash
File Edit View Label 10:00 AM

O que você verá durante o curso


Dia 1 (25/07) Dia 2 (27/07) Dia 3 (01/08)

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

O que é programação orientada a objetos?


Diferentemente de C ou Fortran, que têm como paradigma a
programação procedural, Python toma para si um paradigma de
programação criado em 1960: programação orientada a objetos.
POO gira completamente em torno da criação e manipulação de
objetos!

Chat Trash
File Edit View Label 10:00 AM

O que é programação orientada a objetos?


E por que objeto?

Imagine que você, cansado de tanto programar, decidiu estudar


a natureza! Percebeu que os humanos e as frutas têm muitas
características diferentes e a maior delas é que toda fruta é
um vegetal e todo humano é um animal. Como bom pesquisador
que és, começou a ver padrões nas coisas e notou que todo
humano respira e que toda fruta amadurece.

Chat Trash
File Edit View Label 10:00 AM

O que é programação orientada a objetos?


E por que objeto?

Pensando nessas diferenças e na facilidade de categorizar os


seres da natureza, a orientação a objetos foi criada.

Assim, os programadores viram que a programação procedural


não conseguia adaptar-se à vida real, pois o código só
poderia ser alterado por meio de funções. A partir disso, o
foco passou a ser o objeto.

Chat Trash
File Edit View Label 10:00 AM

Classes, métodos, atributos e objetos


Conceito

Classe Cachorro: Método: sentar

Objeto: Ralph Objeto: Paçoca Atributo: Pelagem mista


Atributo raça: Pug Atributo raça: Salsicha (múltiplas cores)

Chat Trash
File Edit View Label 10:00 AM

Classes, métodos, atributos e objetos


Conceito

Dessa forma, podemos dizer que as classes


têm como objetivo definir um determinado
grupo de dados de um único tipo ao
especificar os elementos de dados que um
objeto contém (atributos) e o comportamento
pertencente ao objeto (métodos)

Chat Trash
File Edit View Label 10:00 AM

Construtor
Inicializando um objeto

class: definir uma classe


def __init__ : definir construtor

Chat Trash
File Edit View Label 10:00 AM

Definindo uma classe


O parâmetro self e a criação de atributos

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

Definindo uma classe


Métodos

def: criação do método late()

Chat Trash
File Edit View Label 10:00 AM

Objeto

Instanciando nosso primeiro


doguinho, digo, objeto: Totó

Chat Trash
File Edit View Label 10:00 AM

Interação com o objeto

Chat Trash
File Edit View Label 10:00 AM

Atributos de classe

Quantidade = atributo de classe* para


armazenar quantidade de objetos

*Atributo de classe é utilizado para armazenar


informações relevantes à classe como, por exemplo, a
quantidade de objetos de Cachorro que instanciamos.

Chat Trash
File Edit View Label 10:00 AM

Mais sobre métodos

mudaIdade: método capaz de alterar


atributo "idade".

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!

Nos vemos na próxima aula!


✧ ・゚Dúvidas?・゜

Chat Trash
File Edit View Label 10:00 AM

O que já vimos até agora?


Dia 1 (25/07)

1 Classes, métodos,
atributos e objetos

2 Construtor:
inicializando o
objeto

Chat Trash
File Edit View Label 10:00 AM

O que veremos hoje?


Dia 2 (27/07)

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’)

OBS: o método nascer() está em SerVivo!

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.

Você consegue identificar o que está faltando?

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?

Ela recebe brinquedoFavorito diferentemente da sua 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.

Cuidado! Polimorfismo não quer dizer que o objeto fica se


transformando. Muito pelo contrário, um objeto nasce de um
tipo e morre daquele tipo, o que pode mudar é a maneira como
nos referimos a ele.

Chat Trash
File Edit View Label 10:00 AM

Polimorfismo
Exemplo na vida real

Ao ir em alguns estabelecimentos, há sempre uma repartição


restrita a funcionários, permitindo a entrada apenas daqueles
que apresentarem seu crachá.

Chat Trash
File Edit View Label 10:00 AM

Polimorfismo
Exemplo na vida real

Convertendo isso para código, teríamos uma classe mãe


Funcionário e classes filhas Gerente e Atendente, visto que
esses últimos, apesar de serem funcionários, possuem funções e
responsabilidades diferentes em um banco.

Chat Trash
File Edit View Label 10:00 AM

Polimorfismo
Exemplo na vida real

E como permitir que apenas funcionários façam uma determinada


ação, mas ao mesmo tempo torná-las individuais, ou seja, que
cada tipo de funcionário trabalhe, mas trabalhe de determinada
maneira, conforme sua função?

Chat Trash
File Edit View Label 10:00 AM

OPÇÃO 1 - vários ifs

ALERTA DE CODE SMELL!

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

Resultado Final - Polimorfismo

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!

Nos vemos na próxima - e última - aula!


✧ ・゚dúvidas?・゜

Chat Trash
File Edit View Label 10:00 AM

O que já vimos até agora?


Dia 1 (04/10) Dia 2 (06/10)

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

O que veremos hoje?


Dia 3 (08/10)

5 Composição

6 Encapsulamento

Chat Trash
File Edit View Label 10:00 AM

Composição

A composição torna possível que uma


classe tenha como atributos um ou
mais objetos de outras classes e
permite uma associação entre objetos.
Atenção! Este é um
dos conceitos
fundamentais de POO!
Composição Herança

Chat Trash
File Edit View Label 10:00 AM

Composição

Classe Conta criada


para um sistema de
internet banking.

Chat Trash
File Edit View Label 10:00 AM

Composição

Como toda conta possui


histórico de transações,
foi criada também a Classe
Histórico.

Chat Trash
File Edit View Label 10:00 AM

Composição

Será que conseguimos


aproveitar algum
método/atributo da classe
Conta na classe Histórico?

Chat Trash
File Edit View Label 10:00 AM

Composição

A resposta é não!

Um objeto instanciado de Conta é


completamente diferente de um objeto de
Histórico. Eles possuem os próprios
métodos e atributos, não conseguimos
estabelecer uma relação de herança.

Chat Trash
File Edit View Label 10:00 AM

Composição

E é nesse momento que


usaremos a composição!
Ela fará com que cada
objeto de Conta possua
um histórico. Assim,
criamos um atributo em
Conta que recebe um
objeto de Histórico.

Chat Trash
File Edit View Label 10:00 AM

Encapsulamento
Separar em partes

Objetivo: esconder de Importância: permite que


todos os usuários de uma a implementação das
classe algumas funcionalidades de uma
informações que não são classe sejam alteradas
necessárias ao uso da sem que o código que a
classe. usa precise mudar.

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

IMPORTANTE: Só devemos usar


encapsulamento quando ele for
realmente necessário, pois
geralmente não são todos os
atributos de uma classe que
precisam desse recurso.

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

Sugestão para o projeto

O que acontece se
printarmos um
objeto?

Chat Trash
File Edit View Label 10:00 AM

Sugestão para o projeto

método __str__:
útil para printar as
informações do seu
objeto

Chat Trash
File Edit View Label 10:00 AM

Projeto

Após a data de entrega do


projeto, iremos disponibilizar o
código de uma das maneiras de
implementá-lo
lembrando que o critério de emissão do
certificado é a entrega do projeto

Chat Trash
File Edit View Label 10:00 AM

That's all, folks!

Finalizamos o nosso conteúdo por aqui! Esperamos que


você tenha aprendido bastante e que tenha sido uma
experiência bem legal :))

Chegou a hora de fazer o projeto! A


atividade está no Classroom e pode
ser feita até o dia 18/10. Fique à
vontade para consultar os monitores!

Chat Trash
File Edit View Label 10:00 AM

Onde nos encontrar?

Quer ficar sempre por dentro das novidades? Nos


acompanhe em nossas redes sociais!

@katie.ufal KATIE - Projeto de bit.ly/LinkedinKatie bit.ly/SiteKatie


Extensão IC/UFAL

Chat Trash
File Edit View Label 10:00 AM

Chat Trash

Você também pode gostar