Python é uma ótima linguagem de alto nível e fortemente orientada a objeto. Em Python quase tudo é objeto, sendo assim, com forte apoio nativo, fica fácil criar classes para aprendizagem. Vamos visualizar uma classe que uma vez fornecido o raio, ou seja um número, ele me retorne a área superficial de uma esfera e ainda seu volume. Segue abaixo a classe esfera, além disso esse classe ainda tem um atributo, o valor "Pi":
import math
class esfera:
pi = 3.14 #atributo
def __init__(self, raio): #construtor
self.raio = raio
def volume(self): #metodo_para_calculo_do_volume
self.VolumeEsfera = (4/3) * self.pi * pow(self.raio,3)
print "Volume da esfera: %f" %self.VolumeEsfera
def superficie(self): #metodo_para_calculo_da_superficie
self.AreaEsfera = 4 * self.pi * pow(self.raio, 2)
print "Area da Esfera: %f" %self.AreaEsfera
Salve o código acima em um arquivo com a extensão .py, abra um terminal (vá de xterm mesmo) e rode o seguinte comando para carregar a classe:
$ python -i classe_esfera.py
Se o python estiver corretamente instalado, deve simplesmente aparecer um prompt sem mensagem alguma, apenas um prompt ">>>". Agora vamos instanciar a classe e calcular a superfície e volume para um raio igual a 6 metros.
Observe o código abaixo:
>>> var = esfera(6)
>>> var.volume()
Volume da esfera: 678.240000
>>> var.superficie()
Area superficial da esfera: 452.160000
>>> var.pi
3.14
Bem, vamos lá! A primeira linha instanciamos a classe passando o valor do raio. Agora temos uma instância de nome var e chamaremos os métodos que calculam a superfície e o volume a partir desta instância e no final ainda chamamos o atributo, mostrando o valor de pi, como segue as linhas do código acima.
A classe seguinte calcula a raiz de uma equação de segundo grau. Para isso basta fornecer os valores de a, b, c da equação (ax^2 + bx + c) no momento que formos instanciá-la.
#!/usr/bin/python
import math
class Raizes:
def __init__(self, a, b, c): #construtores
self.a = a
self.b = b
self.c = c
self.delta = self.b**2 - 4 * self.a * self.c
def calcula_Raizes(self): #metodo_de_calculo_das_raizes
if self.delta < 0:
print "Delta negativo:ndelta: %f" %(self.delta)
elif self.delta == 0:
self.xxx = (-self.b + math.sqrt(self.delta)) / 2*self.a
print "Valor Calculado.nx: %fndelta: %f" %(self.xxx, self.delta)
elif self.delta > 0:
self.x = (-self.b + math.sqrt(self.delta)) / 2*self.a
self.xx = (-self.b - math.sqrt(self.delta)) / 2*self.a
print "Raizes.nx: %fnxx: %fndelta: %f" %(self.x, self.xx, self.delta)
Salve a classe em um arquivo e proceda da seguinte maneira para calcular as raizes:
$ python -i classe_equacao.py
>>>
var = Raizes(2, -5, 3)
>>>
var.calcula_Raizes()
Raizes.
x: 6.000000
xx: 4.000000
delta: 1.000000
>>>
Primeiramente carregamos a classe e em seguida instanciamos, vinculando à variável
var e passando os valores 2, -5, 3. Uma vez instanciada a classe, podemos acessar os seus métodos, é o que fazemos quando rodamos o comando
var.calcula_Raizes().
Pra encerrar...
Esqueci de dizer que é possível instanciar uma classe várias vezes e com valores diferentes vinculando cada instância a um valor por exemplo.
$ python -i classe_equacao.py
>>>
var = esfera(4)
>>>
var.volume()
Volume da esfera: 200.960000
>>>
var.superficie()
Area da Esfera: 200.960000
>>>
uia = esfera(2)
>>>
uia.volume()
Volume da esfera: 25.120000
>>>
uia.superficie()
Area da Esfera: 50.240000
Vou parar por aqui mesmo porque senão esse post fica muito grande, na verdade não tive a intenção de ensinar formalmente orientação a objeto, mas deixo a dica, no site do
python brasil tem ótimos tutoriais sobre o assunto, lá sim você vai criar dúvidas sólidas e quem sabe esse post possa ser mais útil.
Vale ressaltar também que esse post surgiu da minha frustração quando resolvi aprender orientação a objeto. Percebi que existiam vários códigos com exemplos, mas nada que me descrevesse conceitualmente o que seria de fato programar usando OO.
[1] - Uma função pode ser definida como segue abaixo
função SomaDoisNumeros(inteiro A, inteiro B) {
inteiro C
C = A + B
return C
}
[2] - Patuás são enfeites, colares e utensílios decorativos, palavra muito usada no nordeste