Programando em Python - Classes

Programando em Python - Classes

(Parte 1 de 4)

Claudio Esperança

Python: Classes

Orientação a Objetos

É uma disciplina de programação assim como a Programação Estruturada

Tenta unificar as idéias de algoritmos e estruturas de dados através do conceito de Objeto

Um objeto é uma unidade de software que encapsula algoritmos e os dados sobre o qual os algoritmos atuam

Os seguintes conceitos são importantes quando falamos de orientação a objetos:

Polimorfismo Abstração

Polimorfismo

É o que permite que dois objetos diferentes possam ser usados de forma semelhante

Por exemplo, tanto listas quanto tuplas ou strings podem ser indexadas por um número entre colchetes e suportam o método len

Assim, se escrevemos

for i in range(len(X)): print i

...não é possível saber de antemão se X é uma tupla, uma lista ou uma string

Desta forma, se escrevemos um algoritmo para ser aplicado um objeto X, então também pode ser aplicado a um objeto Y desde que Y seja suficientemente polimórfico a X

Abstração (ou encapsulamento)

É o que permite que um objeto seja utilizado sabendo-se sobre ele apenas a sua interface

Em particular, não precisamos conhecer a implementação dos seus métodos

Em O a abstração tem mais alcance pois um objeto encapsula tanto dados como algoritmos

Assim, podemos atribuir objetos ou passar objetos como argumentos, sem necessariamente saber como o objeto está implementado

Herança

É o que permite construir objetos que são especializações de outro objeto

Isso permite o reuso de software já que objetos especializados herdamdos objetos genéricos uma série de atributos comuns

Por exemplo, considere um objeto que representa uma forma geométrica. Então, ele pode ter características tais como área, perímetro, centróide, etc.

Um polígono é uma forma geométrica,

Portanto, herda todas as características de formas geometricas

Deve suportar também características específicas como número de lados e comprimento de arestas

Objetos em Python

Python suporta O através de classes

Uma classe pode ser entendida como uma fábricade objetos, todos com as mesmas características

Diz-se que objeto fabricado por uma classe é uma instância da classe

A rigor, uma classe é também um objeto

Encapsula dados e algoritmos

Entretanto, não é normalmente um objeto fabricado por uma classe, mas um objeto criado pela construção class

Um objeto encapsula dados e algoritmos sob a forma de variáveis e métodos

É comum chamar esses elementos constituintes dos objetos de atributos

Declaração de uma classe

A maneira mais simples é:

class nome: var = valor ...

def metodo(self,arg):

var = valor ...

def metodo(self,arg):

As variáveis e os métodos são escritos precedidos pelo nome da classe e por um ponto (.) Assim, uma variavel vdefinida numa classe cé escrita c.v

Os métodos sempre têm selfcomo primeiro argumento self se refere a uma instância da classe

Uma nova instância da classe é criada usando nome ()

Exemplo

Atributos de instâncias

No exemplo anterior, ae beram atributos da classe Ce portanto usáveis por qualquer instância de C

Mais freqüentemente, precisamos de atributos associados a instâncias individuais

Um atributo attrassociado a uma instância objtem nome obj.attr

Se queremos nos referir a um atributo attrde um objeto dentro de algum de seus métodos, usamos o nome self.attr

Exemplo

>>> class C: def init(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b

(Parte 1 de 4)

Comentários