Artigo POO Python
Artigo POO Python
Resumo
A programação orientada a objetos é um paradigma de programação na qual classes
definem objetos da vida real. Cada classe irá determinar o comportamento dos objetos,
definindo por métodos e seus possíveis estados que são definidos através de seus atributos. Este
paradigma de programação foi criado com o intuito de aproximar o mundo virtual com o mundo
real. Para dar suporte à definição de objeto, foi criada uma estrutura que se denomina Classe,
que reúne objetos com suas características em comum, descreve todos os serviços disponíveis
por seus objetos e quais informações podem ser armazenadas no mesmo.
Palavras-chave: Orientação a objeto. Classes. Objetos.
Introdução
Com a programação orientada a objetos, conseguimos trazer objetos da vida real ao
mundo virtual, como por exemplo um carro, podemos transforma-lo em um objeto, descrevendo
suas características e as funções que ele executa, deste modo temos um carro virtualmente, no
qual ele executa oque sua modelagem precisa.
Em Python, os objetos são criados a partir de classes por meio de atribuições; O objeto
é uma instância da classe, que possui suas proprias características. Um objeto continua existindo
na memória enquanto houver pelo menos um referência a ele. O interpretador do Python possui
uma funcão que é chamada de “coletor de lixo ou Garbage Collector” que limpa a memória de
objetos sem referências.
1 Classe em Python
Para começar, adicionaremos uma Class Carro, para criar esta classe vamos começar
definindo o que é necessário para criar um objeto deste tipo e para isso teríamos que começar
pelo inicializador.
O Python possui uma flexibilidade, que permite que criemos um objeto ao
colocarmos pass e indicarmos que simplesmente estamos passando-o. Por exemplo,
trabalharemos com o carro golf, em seguida verificaremos se o objeto está pronto, com print().
Até o momento, “golf” não possui atributos, se clicarmos no botão “Run Code”, a IDE
ou seu editor de códigos vai imprimir no terminal ou console as informações de algumas
memórias do Python.
Agora vamos modelar essa classe, que na verdade não possui apenas pass, e sim
atributos como def, com o qual definiremos o construtor ( __init__). O construtor sempre
receberá self e também passaremos outros atributos como: nome, marca, ano e cor. Assim, são
exibidas as informações correspondentes ao tentarmos imprimir um objeto que seja do
tipo Carro:
2 Método
Um método é uma função que “pertence” a um objeto instância em Python, o termo
método não é aplicado exclusivamente em instâncias de classes definidas pelo usuário, outros
tipos de objetos também podem ter métodos. Por exemplo, listar possuem os métodos append,
insert, remove, sort e entre outros. O método serve para definirmos algo que será modificado
posteriormente, e que nào será definido no momento da criação.
Classes proporcionam uma forma de organizar dados e funcionalidades juntos. Criar
uma nova classe cria um novo “tipo” de objeto, permitindo que novas “instâncias” desse tipo
sejam produzidas. Cada instância da classe pode ter atributos anexados a ela, para manter seu
estado. Instâncias da classe também podem ter métodos (definidos pela classe) para modificar
seu estado.
Em comparação com outras linguagens de programação, o mecanismo de classes de
Python introduz a programação orientada a objetos sem acrescentar muitas novidades de sintaxe
ou semântica. É uma mistura de mecanismos equivalentes encontrados em C++ e Modula-3.
As classes em Python oferecem todas as características tradicionais da programação orientada
a objetos: o mecanismo de herança permite múltiplas classes base (herança múltipla), uma
classe derivada pode sobrescrever quaisquer métodos de uma classe ancestral, e um método
pode invocar outro método homônimo de uma classe ancestral. Objetos podem armazenar uma
quantidade arbitrária de dados de qualquer tipo. Assim como acontece com os módulos, as
classes fazem parte da natureza dinâmica de Python: são criadas em tempo de execução, e
podem ser alteradas após sua criação (“9. Classes — documentação Python 3.9.5”).
No trecho de código abaixo, temos os métodos “porta_fechada” e “abrir_porta”, no qual
“abrir_porta” recebe como parâmetro “porta_fecha” e caso a porta esteja fechado irá abrir a
porta e caso esteja aberta não irá abrir a porta.
3
3 Herança
A herança determina que uma classe (filha) pode herdar atributos e métodos de outra
classe (pai) e, assim evitar que haja muita repetição de código.
Neste caso criamos a classe Moto que é filha da classe Carro, nela herdamos os atributos e
métodos, nesta classe filha adicionamos apenas mais um atributo que é “tipo”, nele passaremos
o estilo da moto (naked ou carenada) e também herdamos da classe pai os métodos ligar,
desligar e estado.
Note que a classe filha só estão repassando seus de nome, ano, marca e cor para a classe
Pai através do super() e que nenhum método foi implementado dentro dessa classe.
4
Agora, por herdar a classe Carro, a classe Moto pode, sem nenhuma alteração, utilizar o método
estado() e ligar(), definidos na classe pai (PINHEIRO, 2019).
4 Encapsulamento
Encapsulamento é quando procuramos esconder de clientes (usuários de uma classe)
todas as informações que não são necessárias ao uso da classe. Por exemplo, suponha que
precisássemos criar uma classe para armazenar as informações de funcionários de uma empresa,
como ilustrado no código abaixo (RAMALHO, 2013) .
Nesta classe, o salário de um funcionário é calculado com base nas horas trabalhadas.
As informações sigilosas dos funcionários, como o salário, estão expostas a clientes da classe,
o que não é desejado. Para garantir que algo não seja visível a clientes da classe, existe uma
convenção de que dados ou métodos cujo nome começa com dois underscores (__) não devem
ser acessados fora da classe.
Desta forma ao tentar alterar o valor da propriedade salario, o cliente recebe um erro
avisando a forma correta de mudar o salário de um funcionário. Além destes dois níveis de
visibilidade, Python nos permite também criar variáveis ou métodos que são visíveis somente na
classe e em classes dela derivadas. A convenção é que variáveis ou métodos cujo nome começa
com _ (um underscore apenas) são visíveis em uma hierarquia de classes, ou seja, na classe base
e nas classes derivadas, mas não devem ser acessados fora destes casos.
5 Referências
9. Classes — documentação Python 3.9.5. Disponível em: <https://docs.python.org/pt-
br/3/tutorial/classes.html>. Acesso em: 20 maio. 2021.
PINHEIRO, F. Utilizando herança no Python. Disponível em:
<https://www.treinaweb.com.br/blog/utilizando-heranca-no-python/>. Acesso em: 20 maio.
2021.
RAMALHO, L. Encapsulamento em Python: 2013.
6