0% acharam este documento útil (0 voto)
0 visualizações17 páginas

AulaPython10 Classes

O documento aborda conceitos fundamentais de programação, incluindo programação procedimental e orientada a objetos. Ele detalha terminologias como classes, objetos, atributos e métodos, além de discutir encapsulamento, construtores, comparação e cópia de objetos, e sobrecarga de operadores em Python. Também fornece links para vídeo aulas complementares sobre programação orientada a objetos.

Enviado por

João Vitor
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)
0 visualizações17 páginas

AulaPython10 Classes

O documento aborda conceitos fundamentais de programação, incluindo programação procedimental e orientada a objetos. Ele detalha terminologias como classes, objetos, atributos e métodos, além de discutir encapsulamento, construtores, comparação e cópia de objetos, e sobrecarga de operadores em Python. Também fornece links para vídeo aulas complementares sobre programação orientada a objetos.

Enviado por

João Vitor
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/ 17

30/05/2022

Prof. André Backes

Programação procedimental
 Também chamada de programação procedural
 Contêm um conjunto de passos computacionais a serem
executados
 Problemas são decompostos em sub-problemas
 Modularização
 Um programa é construído definindo funções
 Uma função pode ser chamada a qualquer momento durante a
execução do programa
 A ênfase está nas operações desenvolvidas

1
30/05/2022

Programação orientada a
objetos
 Trabalha com o conceito de classe e objeto
 Dados e operações são agregadas a entidades chamadas
objetos
 Problemas são decompostos em objetos que interagem
entre si
 Cada objeto é uma unidade de software
 A ênfase está na interação
 Forma geral em Python

Terminologia
 Classe
 Representa um conjunto de
objetos que possuem a mesma
estrutura de dados (atributos)
e comportamento (operações)
 Ex: classe dos Seres Humanos

2
30/05/2022

Terminologia
 Objeto
 O objeto é uma instância de
uma classe
 Os métodos define o
comportamento dos objetos
 Seu estado é mantido por meio de
atributos
 Forma de instanciar
objeto = nome-classe()

Terminologia
 Objeto
 Cada objeto tem uma
identidade própria
 Ele é distinguível de qualquer
outro objeto mesmo que
seus atributos sejam idênticos
 Exemplo de objetos da classe
Seres Humanos: Ricardo, João,
Ana, ...

3
30/05/2022

Terminologia
 Atributos
 Basicamente, é a estrutura de
dados que vai representar a
classe
 Conjunto de propriedades do
objeto
 Valores internos do objeto
 Exemplo de atributos da classe
Seres Humanos: nome, idade,
altura, ...

Terminologia
 Método
 Conjunto de funcionalidades
da classe
 Definem as habilidades dos
objetos
 Exemplo de métodos da classe
Seres Humanos: correr, nadar, ...

4
30/05/2022

Acessando os atributos
 Para acessar os atributos de um Exemplo
objeto utilizamos a seguinte
notação
 objeto.atributo

 Desse modo, podemos modificar o


seu valor ou usá-lo em expressões
 Em Python não podemos proibir o Saída
acesso aos atributos de objetos.
Podemos até incluir novos
atributos (p.y)

Acessando os atributos
 O acesso direto aos atributos de objetos não é
aconselhável
 Algumas linguagens permitem restringir o acesso aos
atributos de um objeto
 Neste caso, o atributo é chamado de privado
 Python não possui uma construção sintática
equivalente

5
30/05/2022

Acessando os atributos
 Felizmente, o interpretador
Python possui suporte parecido a Exemplo
variáveis privadas
 Métodos e atributos cujo nome é
iniciado por dois sublinhados (__y)
são considerados privados e não
podem ser acessados diretamente

Saída Saída

Encapsulamento
 Serve para controlar o acesso Exemplo
aos atributos de um objeto
 Trata-se de uma forma
eficiente de proteger os dados
manipulados dentro da classe
 Ao invés de modificar os
atributos diretamente, os
mesmo somente poderão ser
acessados pelos métodos Saída
definidos na classe
 O parâmetro self é o objeto
sobre o qual o método opera

6
30/05/2022

Encapsulamento
 Cuidado: Exemplo
 Os métodos falham se o
atributo a ser acessado não
existir dentro da classe
 Uma forma de evitar isso é
definir um construtor

Saída

Construtor
 Construtor é um método especial que é chamado
assim que uma nova instância do objeto é criada
 É responsável pela alocação de recursos necessários ao
funcionamento do objeto e da definição inicial dos
estados dos atributos
 Por meio dele podemos garantir que o atributo sempre
existe (inicializador de atributo)

7
30/05/2022

Construtor
 Forma geral do construtor em Exemplo
Python
def __init__(self)
 Dentro dele podemos definir
e inicializar (com um valor
pré-definido ou passado por
parâmetro) todos os atributos
do objeto
 O parâmetro self deve ser
sempre o primeiro e é o objeto Saída
sobre o qual o método opera

Construtor
Exemplo
 Apesar do nome do construtor
iniciar com dois sublinhados, ele
não é considerado um método
“privado” pelo interpretador
Python
 Outros métodos cujo nome é
iniciado por dois sublinhados
(__getY) são considerados privados
e não podem ser acessados
diretamente

Saída

8
30/05/2022

Imprimindo um objeto
 Por definição, a impressão de
um objeto não é muito
informativa Exemplo
 Basicamente, apenas
algumas informações
técnicas

Saída

Imprimindo um objeto
 Podemos definir o método __str__ para converter o
objeto para texto
 Assim, podemos definir o que será impresso sempre que o
objeto for impresso
 O método deve retornar uma string

 Forma geral

9
30/05/2022

Imprimindo um objeto
Exemplo

Saída

Comparando objetos
 Comparar dois objetos não é uma tarefa tão simples
quanto possa parecer
 Por definição o operador == testa se os dois argumentos
são o mesmo objeto
 Nenhuma comparação entre os atributos dos objetos é
realizada

10
30/05/2022

Comparando objetos
Exemplo

Saída

Comparando objetos
 No exemplo anterior
 Temos 2 objetos diferentes (instâncias) com o mesmo
conteúdo
 E 3 referências diferentes a esses objetos.
 A operação de atribuição não cria uma cópia do objeto!
p1 p3 p2

X=1 X=1
Y=2 Y=2

52006696 52223560

11
30/05/2022

Comparando objetos
 Para fazer a comparação de objetos, o mais indicado é
definir um método na classe para testar se dois objetos
possuem os mesmos valores de atributos
Exemplo

Saída

Cópia de objetos
 Como vimos, a operação de atribuição não é indica
para criar uma cópia de um objeto
 Precisamos garantir que temos dois objetos diferentes,
mas com o mesmo conteúdo

 Uma forma de fazer isso é utilizando a função de cópia


que existe no módulo copy do Python

12
30/05/2022

Cópia de objetos
Exemplo

Saída

Cópia de objetos
 A função copy.copy() permite duplicar qualquer
objeto
 p1 e p2 não representam mais o mesmo ponto, são
objetos diferentes. Mas eles contem os mesmo dados

 Infelizmente, o método copy() faz somente uma cópia


superficial do objeto
 Esse método não é capaz de copiar objetos embutidos
dentro de outros objetos

13
30/05/2022

Cópia de objetos
 Tentando copiar um objeto lista de dentro do objeto
Ponto: mesma lista em objetos diferentes!!

Exemplo

Saída

Cópia de objetos
 Nesse caso, precisamos de uma cópia profunda dos
dados
 Precisamos copiar todos os níveis de um objeto

 Uma forma de fazer isso é utilizando a função de


deepcopy(), também do módulo copy do Python
 Esse método copia não somente o objeto, mas também
todo e qualquer objeto embutido neste objeto

14
30/05/2022

Cópia de objetos
 Tentando copiar um objeto lista de dentro do objeto
Ponto: lista diferentes!!
Exemplo

Saída

Sobrecarga de operadores
 Nada mais é do que a possibilidade definir o
comportamento de alguns operadores básicos da
linguagem para novos tipos de dados
 Exemplo: ==, >, <, +, -, *, etc.

 É apenas uma conveniência. Com a sobrecarga,


podemos escrever
 p1 + p2 ao invés de p1.soma(p2)
 p1 == p2 ao invés de p1.igual(p2)

15
30/05/2022

Sobrecarga de operadores
 Para tanto, a linguagem Python disponibiliza vários
métodos que podem ser implementados e que
correspondem a certos operadores. Exemplo:
Operador Método Exemplo
+ __add__ A+B
- __sub__ A–B
* __mul__ A*B
/ __div__ A/B
== __eq__ A == B
!= __ne__ A != B
> __gt__ A>B
< __lt__ A<B

Sobrecarga de operadores
Exemplo

Saída

16
30/05/2022

Material Complementar
 Vídeo Aulas
 Aula 38 - Programação Orientada a Objetos (POO)
 https://youtu.be/jm3jDYIOAxs
 Aula 39 - POO: Acesso aos atributos e métodos
 https://youtu.be/i6tgjRB3mtA
 Aula 40 - POO: Construtor e Destrutor
 https://youtu.be/VBQRmafpQBs
 Aula 41 - POO: Imprimindo um objeto
 https://youtu.be/PRriYps2Pcw

Material Complementar
 Vídeo Aulas
 Aula 42 - POO: Comparando objetos
 https://youtu.be/_5MYPk_6EtQ
 Aula 43 - POO: Sobrecarga de operadores
 https://youtu.be/c83D0BUsgiw
 Aula 44 - POO: Cópia de objetos
 https://youtu.be/69jsXNCrGjI
 Aula 45 - POO: Herança
 https://youtu.be/iEFQ_2_nTi0
 Aula 46 - POO: Iterator
 https://youtu.be/5wVWM5ReBrs

17

Você também pode gostar