Skip to content
This repository has been archived by the owner on Aug 26, 2020. It is now read-only.

Classes

Paulino edited this page Apr 11, 2019 · 1 revision

Orientação a Objetos II

Programação Procedural

No paradigma de programação procedural, ou programação imperativa, as programação acontece através de um conjunto de instruções que mudam o estado das estruturas de dados. Nesse paradigma as instruções, também chamados de rotinas ou funções, e os dados têm uma divisão clara. Por exemplo:

def split_string(text):
    '''Essa função divide uma string em uma lista de palavras
    '''
    lista = []
    word = ""
    for c in text:
        if c == " ":
            lista.append(word)
            word = ""
        else:
            word += c
    if word: lista.append(word)
    return lista

print(split_string("Heaven is a place on Earth with you"))

Na função acima, uma string é passada como parâmetro para uma lista a função que retorna uma lista, onde cada um dos elementos é uma palavra (substrings separadas por espaço), gerando o seguinte output:

>> ["Heaven", "is", 'a', "place", "on", "Earth", "with", "you"]

Objetos

A programação orientada a objetos se baseia no conceito de objetos, onde cada objeto possui um grupo de características e uma utilidade. Na programação orientada a objetos, as instruções que interagem com os objetos estão contidas (encapsuladas) dentro do próprio objeto. A implementação da split_string, pode ser feita dentro da classe str, assim a chamada da função é transformada em uma chamada de método.

print("Heaven is a place on Earth with you".split())
>> ["Heaven", "is", 'a', "place", "on", "Earth", "with", "you"]

Imagine, por exemplo, um forno. Um forno possui os comandos para ligar o forno, aumentar e diminuir a temperatura e desligar o forno. Enquanto na programação orientada a objetos estas funções seriam como botões presentes no forno, na programação estruturada essas funções seriam controladas de forma externa ao forno. O encapsulamento das funções nos objetos não só facilita na hora da consulta como torna mais intuitiva a construção dessas funções.

Atributos e Métodos

Como dito anteriormente, objetos possuem características e funções. Na programação orientada a objetos essas características são os atributos e essa funções são os métodos. De forma simplificada imagine os atributos como sendo variáveis que dizem algo sobre o seu objeto. Assim como os métodos que seriam funções que o seu objeto seria capaz de realizar.

Classes

Em Python os objetos pertencem a uma classe. Uma classe representa um molde do seu objeto, isto é, todos os objetos de uma determinada classe se comportam de forma similar. A inicialização de uma nova classe é feita através do palavra reservada class.

class Pessoa:
    pass

O comportamento de métodos e atributos também é definido dentro do contexto da classe. Para determinar a construção da classe usa-se um método especial do Python, o método __init__, ou método construtor:

class Pessoa:
    def __init__(self, nome):
        self.nome = nome

No exemplo anterior, a classe Pessoa possui um método chamado __init__. O método __init__ determina como acontece o processo de instanciação de um objeto do tipo Pessoa. Isto é, o que acontece quando um novo objeto do tipo Pessoa é criado. No método do exemplo anterior, o método init precisa de um parâmetro, o nome. Este por sua vez é salvo em um atributo do método, o self.nome. Entenda a palavra self como uma referência ao próprio objeto. A linha de código self.nome = nome.