Classes e Objetos¶
Baixar os códigos abaixo¶
tv*.py
tatu*.py
teste*.py
Classes e objetos¶
Classes associam dados (atributos) e operações (métodos) em uma só estrutura
Um objeto é uma variável cujo tipo é uma classe, ou seja, um objeto é uma instância de uma classe
Veremos apenas o básico da orientação à objetos
Classes e objetos¶
Classes e objetos¶
Quando declaramos uma classe, estamos criando um novo tipo de dados
Da mesma forma que quando criamos uma lista ou uma string, estamos instanciando ou criando uma instância dessas classes
É a mesma coisa fazer lista = [] ou lista = list()
O método __init__ é chamado construtor e é chamado na criação do objeto
Classes e objetos¶
O parâmetro self significa o objeto televisão em si
self.ligada é um valor de self, ou seja, do objeto televisão
Sempre que criamos atributos do objeto, devemos associá-los a self.
Caso contrário, se escrevêssemos apenas ligada = False, ligada seria apenas uma variável local do método e não um atributo
Classes e objetos¶
Classes e objetos¶
Você irá informatizar o banco Tatú, controlando o saldo das contas correntes
Cada conta corrente pode ter um ou mais clientes como titular
O banco controla apenas o nome e telefone
A conta corrente apresenta um saldo e um extrato de operações de saques e depósitos
Não há contas especiais, logo o cliente não pode sacar mais do que têm no saldo
Arquivo tatu.py¶
Arquivo teste.py, Saída de teste¶
Extrato de operações¶
Altere o método resumo da classe Conta para extrato, imprimindo agora uma lista de operações de saques e depósitos feitas
Altere o método __init__ para que utilize o método depósito para inicializar o saldo
Arquivo tatu2.py (apenas Conta)¶
Arquivo teste2.py, Saída de teste2¶
Herança¶
A orientação a objetos permite modificar nossas classes, adicionando ou modificando atributos e métodos, tendo como base a classe anterior
Vamos criar contas especiais, onde podemos sacar mais dinheiro que o saldo, até um determinado limite
As operações depósito, extrato e resumo continuam como uma conta normal
Adicionar ContaEspecial tatu3.py¶
ContaEspecial¶
Observe que escrevemos Conta entre parênteses
ContaEspecial herda os métodos e atributos de Conta
self.limite será criado apenas para classes do tipo ContaEspecial
Observe que estamos substituindo completamente o método saque em ContaEspecial
Arquivo teste3.py, Saída teste 3¶
Vantagens da herança¶
Modificamos muito pouco o nosso programa, mantendo a funcionalidade anterior e adicionando novos recursos
Foi possível fazer o reuso dos métodos de Conta
Assim a definição da classe ContaEspecial foi bem menor, incluindo apenas o comportamento diferente