image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Fernanda Araujo
Fernanda Araujo19/06/2025 17:41
Compartilhe
WEX - End to End EngineeringRecomendados para vocêWEX - End to End Engineering

Paradigmas de Linguagens de Programação em Python: Python Orientado a Objetos (Part. 06)

  • #Python

A Programação Orientada a Objetos (POO) é muito mais do que uma técnica de codificação: ela representa uma forma de pensar e modelar problemas complexos de forma abstrata, aproximando o código da realidade. Como bem afirma Jaeger (1995), "a tecnologia baseada em objetos é mais do que apenas uma forma de programar", sendo um modo de pensar.

Neste artigo, vamos explorar profundamente o paradigma orientado a objetos com foco na linguagem Python, passando pelos pilares da POO, suas aplicações práticas, tratamento de exceções, e conceitos avançados como metaclasses e testes unitários.

Conceitos Fundamentais da POO

Diferente da programação convencional, que se baseia em fluxos sequenciais e estruturas como funções isoladas, a POO organiza o código em torno de objetos — entidades que combinam dados e comportamentos.

Na POO, pensamos nos elementos do sistema como entidades do mundo real: usuários, produtos, sensores, documentos. Isso permite maior clareza, modularidade, reaproveitamento e manutenção do código.

Pilares da Orientação a Objetos

A Programação Orientada a Objetos se apoia em quatro pilares principais:

  • Abstração: foca apenas nos detalhes essenciais, escondendo a complexidade desnecessária.
  • Encapsulamento: protege os dados, expondo apenas o que for necessário.
  • Herança: permite que classes compartilhem comportamentos e características.
  • Polimorfismo: permite múltiplas implementações com a mesma interface.

Classes e Objetos na Prática

Uma classe define a estrutura de um objeto. Já um objeto é uma instância dessa estrutura.

python

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

p1 = Pessoa("Fernanda")  # Objeto criado

Atributos e Métodos

  • Atributos: são características da classe (nome, idade).
  • Métodos: são comportamentos (falar, andar).
python

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

  def falar(self):
      return f"{self.nome} está falando."

Encapsulamento e Segurança dos Dados

O encapsulamento protege o acesso direto aos dados internos da classe:

python

class Conta:
  def __init__(self, saldo):
      self.__saldo = saldo  # atributo privado

  def ver_saldo(self):
      return self.__saldo

Métodos Acessores (@property)

Permitem o acesso controlado aos atributos:

python

class Produto:
  def __init__(self, preco):
      self._preco = preco

  @property
  def preco(self):
      return self._preco

  @preco.setter
  def preco(self, valor):
      if valor > 0:
          self._preco = valor

Herança e Polimorfismo

Herança Simples e Múltipla

A herança permite reutilizar código entre classes.

python

class Animal:
  def falar(self):
      print("Som genérico")

class Cachorro(Animal):
  def falar(self):
      print("Au au")

Polimorfismo de Inclusão e Sobrecarga

  • Inclusão: sobrescreve métodos da superclasse.
  • Sobrecarga: permite múltiplos métodos com o mesmo nome (Python simula via parâmetros opcionais).

Técnicas Avançadas em POO

Atributos e Métodos de Classe

python

class Pessoa:
  populacao = 0  # atributo de classe

  def __init__(self, nome):
      self.nome = nome
      Pessoa.populacao += 1

  @classmethod
  def total(cls):
      return cls.populacao

Métodos Estáticos

python

class Util:
  @staticmethod
  def somar(a, b):
      return a + b

Associação, Agregação e Referência na Memória

  • Associação: relação entre dois objetos.
  • Agregação: relação de “tem um”, mas com independência.
python

class Motor:
  pass

class Carro:
  def __init__(self, motor):
      self.motor = motor

A agregação é importante para manter a coerência e integridade dos dados sem misturar responsabilidades.

Classes Abstratas e Tratamento de Exceções

Classes Abstratas

Impedem a instanciação direta e exigem implementação de métodos:

python

from abc import ABC, abstractmethod

class Forma(ABC):
  @abstractmethod
  def area(self):
      pass

Tratamento de Exceções

python

try:
  resultado = 10 / 0
except ZeroDivisionError:
  print("Erro: divisão por zero")

Exceções Personalizadas

python

class SaldoInsuficiente(Exception):
  pass

def sacar(valor):
  if valor > 100:
      raise SaldoInsuficiente("Saldo insuficiente")

POO além da Teoria: Metaclasses, Design Patterns e Testes

Metaclasses

Permitem alterar a construção das classes:

python

class Meta(type):
  def __new__(cls, name, bases, dct):
      print(f"Classe criada: {name}")
      return super().__new__(cls, name, bases, dct)

Design Patterns

São soluções reutilizáveis para problemas comuns na arquitetura de software. Exemplos em POO:

  • Singleton
  • Factory
  • Observer
  • Strategy

Testes Unitários com unittest

python

import unittest

class TesteSoma(unittest.TestCase):
  def test_soma(self):
      self.assertEqual(1 + 1, 2)

if __name__ == "__main__":
  unittest.main()

🔚 Conclusão

A Programação Orientada a Objetos é um pilar essencial para o desenvolvimento moderno, e Python oferece ferramentas completas para explorar esse paradigma em toda sua profundidade — desde os conceitos básicos até aplicações avançadas com metaclasses e testes automatizados.

Compreender a orientação a objetos em Python é dar um passo decisivo rumo à maturidade como desenvolvedora ou desenvolvedor de software, capaz de modelar sistemas reais com clareza, segurança e manutenção eficiente.

image

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentários (1)
Otávio Guedes
Otávio Guedes - 19/06/2025 21:14

Adorei o seu artigo Fernanda. PARABÉNS!! vai ajudar muito na área de back-end quando quiser um código mais limpo ;)

Recomendados para vocêWEX - End to End Engineering