Você está na página 1de 13

Introduo

a Python (cont.)
Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br
2011 Vinicius Cardoso Garcia

Referncias
Notas de aula do prof. Tiago A. E. Ferreira (UFRPE) How to Think Like a Computer Scien-st
hSp://www.greenteapress.com/thinkpython/ thinkCSpy

Aprenda Computao com Python


hSp://www.franciscosouza.com.br/ aprendacompy/

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Classes
Denio de uma classe em Python
class NomeDaClasse :! !<comandos >!

Na pr-ca os comandos dentro de uma classe sero funes


Quando se cria uma classe um novo espao de nomes criado, sendo todos as atribuies de variveis da classe atribudas a este escopo local. Ao trmino do processo de denio da Classe (sem erros), um objeto de classe criado.
Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Objetos de Classe
Suportam dois -pos de operaes:
Referncia a atributos; e Instanciao.

Referncia a Atributos:
Sintaxe: objeto.atributo
Atributos vlidos so todos os nomes presente o espao de nomes do objeto. Ex.:
class MinhaClasse :! !Um exemplo simples de classe! !i = 12345! !def f(x):! ! !return hello world!

MinhaClasse.i e MinhaClasse.f so referncias vlidas. O atributo __doc__ tambm vlido, retornando o docstring: Um exemplo simples de classe
Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Objetos de Classe
Instanciao de Classe
X = MinhaClasse()!

Cria uma nova instncia da Classe, atribuindo o novo objeto a varivel X

De forma padro, esta operao cria um objeto vazio (NULL) Contudo possvel criar um objeto em um estado j pr- denido. Para tanto, existe um mtodo especial __init__()
def __init__(self) :! !self.data = []!

Quando uma classe instanciada, automa-camente o mtodo __init__() invocado!


Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Objetos de Classe
Assim, possvel modicar o mtodo __init__() para determinar como um objeto deve ser inicializado.
Exemplo:

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Instncias
As nicas operaes reconhecidas por instncias so as referncias aos atributos
Existem dois atributos:
Atributos de dados (ou simplesmente atributos) Atributos de referncia (ou mtodos)

Atributos de Dados:
Estes no precisam ser declarados.
Exemplo: seja x uma instncia da classe MinhaClasse

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Instncias
Mtodos
Os mtodos so as funes que pertencem asinstncias das Classes

Seja x uma instncia da classe MinhaClasse, ento,


x.f(arg) estar invocando o mtodo f.

Por conveno, o primeiro argumento de qualquer mtodo frequentement self Mtodos podem invocar outros mtodos atravs do argumento self:

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Herana
Uma Classe pode herdar os atributos de uma outra Classe atravs do processo de Herana!
A sintaxe de uma classe derivada :

Se um atributo invocado no for da classe derivada, este ser procurado na classe base
Tal processo recursivo!

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

Herana MlCpla
Em Python possvel ter heranas ml-plas:

Contudo, sabido que a herana ml-pla pode vir a gerar muita dor de cabea
Alm do que em teoria os problemas podem ser resolvidos por herana simples!
Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

10

Variveis Privadas
Qualquer iden-cador do -po __nome__ ou __nome_ subs-tuido por
_className_nome, onde className o nome da classe corrente. Esta construo pode ser u-lizada para tornar privada:
Instncias; Variveis da Classe; e Mtodos

Fora de uma Classe no se aplica tal procedimento Haver truncamento no iden-cador se _className_nome -ver mais de 255 caracteres
Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

11

Alguns Atributos Especiais


Alm do construtor de uma Classe:
O mtodo __init__(self) possvel citar:

Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

12

ACvidade PrCca
Crie as classes
Cliente
Nome CPF Endereco Telefone Numero Agencia Saldo Saque Deposito

Banco
Nome Cliente Conta-Corrente

Conta Corrente

Com estas 3 classes crie um programa que cadastre clientes no banco e estes possam movimentar as contas
Quando print OBJ-Banco gerar um relatrio com todas as contas!
Algoritmos e Estrutura de Dados Introduo a Python 2011 Vinicius Cardoso Garcia

13