sábado, 28 de março de 2020

Classes e Objetos em Python

Classes e Objetos em Python


Python é uma linguagem de programação orientada a objetos. Isso quer dizer que quase tudo na linguagem tem métodos e propriedades.
A classe é como um molde onde vários objetos são criados, todos com as mesmas características. Um objeto sempre pertence a alguma classe.

Criando uma classe

Para criar uma classe em python é utilizada a palavra reservada class.
Exemplo
class Umaclasse:
  nome = 'Uchiha Itachi'
Nesse exemplo criamos uma classe com a propriedade nome.

Criando um objeto

Agora que já criamos uma classe podemos criar um objeto utilizando esse “molde”.
Exemplo
class Umaclasse:
  nome = 'Uchiha Itachi'

classe = Umaclasse()
print(classe.nome)

Função __init__()

Toda classe tem a função __init__(), até a nossa classe que acabamos de criar. Essa função é criada automaticamente quando criamos uma classe. Mesmo ela não aparecendo no nosso código ela está lá, e é executada toda fez que é criado um novo objeto pertencendo a nossa classe.
Mesmo essa função sendo adicionada no nosso código automaticamente, nos podemos modifica-la para fazer algo realmente útil. Essa função é utilizada para definir as propriedades dos nossos objetos.
Exemplo
class personagem:
  def __init__(self, nome, idade):
    self.nome = nome
    self.idade = idade

personagem01 = personagem('Itachi Uchiha', 21)
personagem02 = personagem('Kakashi Hatake', 31)

print(personagem01.nome)
print(personagem01.idade)

print(personagem02.nome)
print(personagem02.idade)
Repare que em nenhum momento chamamos a função __init__() e mesmo assim ela foi executada. Isso acontece porque quando um objeto é criado a função init é executada, sempre.
O parâmetro self é apenas para identificar o próprio objeto. Você pode ser a linha três (self.nome = nome) assim: a propriedade nome desse objeto será igual á nome (argumento recebido). O nome self pode ser trocado por outro, contanto que seja o primeiro argumento da função init.
Exemplo
class personagem:
  def __init__(primeiro_argumento, nome, idade):
    primeiro_argumento.nome = nome
    primeiro_argumento.idade = idade

personagem01 = personagem('Itachi Uchiha', 21)

print(personagem01.nome)
print(personagem01.idade)

Propriedades dos objetos

As propriedades são como as características de um objeto. Por exemplo, o personagem Kakashi Hatake tem o cabelo branco, um olho vermelho, é quase sem chakra, é humilde (copiou mais de mil justsus mais só usa alguns). Essas são as características do personagem. Podemos dizer que o objeto “Kakashi Hatake” é da classe pessoa, tem uma cabeça, dois braços, etc. Pertencer à mesma classe quer disser que os objetos dessa classe têm as mesmas características, mais com valores diferentes.
Exemplo
class pessoa:
  def __init__(self, nome, idade, cor_olho, cabelo = 'Preto'):
    self.nome = nome
    self.idade = idade
    self.cor_olho = cor_olho
    self.cabelo = cabelo

Kakashi_Hatake = pessoa('Kakashi Hatake', 31, 'Vermelho', 'Cinza')
Itachi_Uchiha = pessoa('Itachi Uchira', 21, 'Vermelho')
Sakura_Haruno = pessoa('Sakura Haruno', 17, 'Verde', 'Rosa')

print(Kakashi_Hatake.nome)
print(Kakashi_Hatake.idade)
print(Kakashi_Hatake.cor_olho)
print(Kakashi_Hatake.cabelo)

Métodos dos objetos

Os métodos são funções dentro de uma classe. Um objeto, além de ter características ele tem funções (métodos). Todo objeto tem suas características e suas funções. Um personagem no mundo de Naruto, por exemplo, pode andar, correr, lançar jutsus. Podemos codificar essas funções (métodos) no nosso código.
Exemplo
class pessoa:
  def __init__(self, nome, idade, cor_olho):
    self.nome = nome
    self.idade = idade
    self.cor_olho = cor_olho

  def lancarJutsu(self, jutsu):
    print('Lançando jutsu ' + jutsu)

  andando = False

Itachi_Uchiha = pessoa('Itachi Uchira', 21, 'Vermelho')

print(Itachi_Uchiha.nome)
Itachi_Uchiha.lancarJutsu('Tsukuyomi')
Itachi_Uchiha.andando = True
print(Itachi_Uchiha.andando)
Um dos objetivos da programação orientada a objetos é o encapsulamento. Com o encapsulamento as variáveis e funções ficam unidas, independentes do resto do programa. Assim podemos criar um programa em blocos e utilizar esses blocos em outros programas com pouca alteração, e às vezes nenhuma.

0 comentários:

Postar um comentário