Angola e Portugal · todas as cidades Subdomínios em perfilvia.com
Programação e informática

Programação orientada a objetos explicada de forma simples

Entende classes, objetos, atributos, métodos, herança e encapsulamento com exemplos em Python e um caso do dia a dia fácil de seguir.

· 3 min de leitura · Equipa Comunidade Sempre Online

Ilustração sobre programação orientada a objetos – guia do blog Comunidade Sempre Online

A programação orientada a objetos (POO) é uma forma de organizar o código em torno de "coisas" do mundo real ou do problema: um aluno, uma conta bancária, um produto. É um dos temas mais pedidos em cursos de informática e quase todas as linguagens modernas a suportam. Vamos explicá-la sem complicar.

A ideia central

Em vez de ter dezenas de variáveis e funções soltas, juntas dados e comportamentos numa mesma unidade, o objeto. Uma conta bancária, por exemplo, tem dados (titular, saldo) e comportamentos (depositar, levantar).

Classes e objetos

  • Classe: o molde, a planta. Define como é e o que faz uma conta.
  • Objeto (instância): uma conta concreta criada a partir desse molde.
class ContaBancaria:
    def __init__(self, titular, saldo=0):
        self.titular = titular
        self.saldo = saldo

    def depositar(self, valor):
        if valor <= 0:
            raise ValueError("O valor tem de ser positivo")
        self.saldo += valor

    def levantar(self, valor):
        if valor > self.saldo:
            raise ValueError("Saldo insuficiente")
        self.saldo -= valor

conta = ContaBancaria("Maria", 10000)
conta.depositar(2500)
conta.levantar(4000)
print(conta.titular, conta.saldo)   # Maria 8500
  • __init__ é o construtor: corre quando crias o objeto.
  • self representa o próprio objeto.
  • titular e saldo são atributos (dados).
  • depositar e levantar são métodos (funções da classe).

Os quatro pilares

1. Encapsulamento

Esconder os detalhes internos e proteger os dados. No exemplo, o saldo só deve mudar através de depositar e levantar, que validam os valores. Em Python, usa-se a convenção _saldo para indicar que é interno.

2. Abstração

Mostrar só o essencial. Quem usa a conta não precisa de saber como o saldo é guardado; só precisa de saber que pode depositar e levantar.

3. Herança

Criar uma classe nova a partir de outra, reaproveitando o que já existe:

class ContaPoupanca(ContaBancaria):
    def __init__(self, titular, saldo=0, taxa=0.02):
        super().__init__(titular, saldo)
        self.taxa = taxa

    def render_juros(self):
        self.saldo += self.saldo * self.taxa

p = ContaPoupanca("João", 50000)
p.render_juros()
print(p.saldo)  # 51000.0

A ContaPoupanca tem tudo o que a ContaBancaria tem, mais o que é seu.

4. Polimorfismo

Objetos diferentes respondem ao mesmo "pedido" à sua maneira. Por exemplo, Circulo e Retangulo podem ter ambos um método area(), calculado de forma diferente. Quem chama só precisa de saber que existe area().

Quando usar POO

  • Quando o programa tem muitas entidades com dados e comportamentos (utilizadores, produtos, encomendas).
  • Quando vários objetos partilham características (herança).
  • Em projetos grandes, onde a organização é crucial.

Para scripts pequenos, funções simples bastam. Não é preciso usar classes em tudo.

Erros comuns de iniciantes

  • Criar classes demasiado grandes, que fazem tudo.
  • Usar herança só para reaproveitar código, quando os objetos não têm relação lógica ("é um").
  • Deixar todos os atributos abertos, sem validação.
  • Esquecer o self nos métodos.

Em que linguagens existe

Python, Java, C#, PHP, JavaScript, Kotlin, Swift, C++ e muitas outras. Os conceitos são os mesmos; muda a sintaxe. Por isso vale a pena aprendê-los bem numa linguagem.

Como praticar

  1. Cria uma classe Aluno com nome e notas, e um método que devolve a média.
  2. Cria uma classe Produto e uma classe Carrinho que soma os preços.
  3. Faz uma pequena biblioteca com Livro, Utilizador e Emprestimo.

Antes, garante que dominas variáveis, funções e listas.

Perguntas frequentes

POO é obrigatória para ser programador?

Não é obrigatória para tudo, mas é muito comum e aparece em cursos e entrevistas. Vale a pena dominá-la.

Qual a diferença entre classe e objeto?

A classe é o molde; o objeto é uma coisa concreta feita com esse molde.

POO é melhor do que programação funcional?

Nenhuma é "melhor" em absoluto. São estilos diferentes e muitos projetos misturam os dois.

Se quiseres ajuda

Podemos fazer isto contigo.

Ver todos os serviços
Fala connosco

Tens uma dúvida sobre este tema?

Escreve-nos pelo WhatsApp e respondemos com preço, disponibilidade e prazo, se precisares de um serviço.

Falar no WhatsApp
Todo o projeto tem um orçamento. O valor final é confirmado conforme o serviço.
WhatsApp · Falar agora