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

(Example8_1)

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

(Example8_2)

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

Outro exemplo OOP

(Example8_9)

Show Comments
Next Section - Revisão Geral 1