// aula 02 · Python · POO

Classes, Objetos, Atributos
e os 4 Pilares


Conceito central — a analogia do Guanabara

📋

Classe — o molde

É o projeto, a "forma de bolo". Define como todos os objetos daquele tipo vão ser. Não existe no mundo real — é só a especificação.

Ex: a classe Caneta descreve o que toda caneta tem.

🖊️

Objeto — a instância

É o bolo já feito. Uma caneta de verdade, criada a partir da classe. Cada objeto é independente e pode ter valores diferentes nos atributos.

Ex: c1 = Caneta() cria um objeto real.


O que compõe um objeto

Atributos

Características

São as variáveis internas do objeto. Descrevem o que ele tem.

Ex: cor, marca, tipo, ponta, carga, tampada.

Métodos

Comportamentos

São as funções do objeto. Descrevem o que ele faz ou o que pode ser feito com ele.

Ex: tampar(), destampar(), escrever(), recarregar().

Estado

Situação atual

É a combinação dos valores dos atributos naquele momento.

Ex: caneta azul, destampada, carga 80%.

Instância

Objeto criado

Cada objeto gerado a partir de uma classe é uma instância diferente, com seus próprios valores.

Ex: c1 e c2 são instâncias de Caneta.


Visibilidade dos atributos e métodos

public

Qualquer um acessa

Visível de qualquer lugar do programa.

private

Só a própria classe

Acesso restrito à classe que o definiu. Protege os dados internos.

protected

Classe + filhas

Visível para a classe e para suas subclasses (herança).

Getters/Setters

Controlam o acesso

Métodos que leem (get) e alteram (set) atributos privados de forma segura.


Os 4 pilares da POO

Pilar 1

🧩 Abstração

Focar no que é essencial e ignorar os detalhes desnecessários. Ao criar uma classe Caneta, você não precisa modelar a física do plástico — só o que importa para o programa.

Pilar 2

🔒 Encapsulamento

Esconder os dados internos do objeto. Os atributos ficam privados e só são acessados por métodos controlados (getters/setters). Protege a integridade do objeto.

Pilar 3

🧬 Herança

Uma classe pode herdar atributos e métodos de outra. A classe Caneta Especial herda de Caneta tudo que já foi definido, evitando repetição de código.

Pilar 4

🎭 Polimorfismo

O mesmo método pode se comportar de formas diferentes dependendo do objeto. Caneta e Lápis podem ter o método escrever(), mas cada um age à sua maneira.


Exemplo prático — classe Caneta (Python)

class Caneta:
    # Construtor — define os atributos ao criar o objeto
    def __init__(self, cor, marca):
        self.__cor     = cor    # privado
        self.__marca   = marca
        self.__tampada = True

    # Getter
    def get_cor(self): return self.__cor

    # Métodos
    def tampar(self):    self.__tampada = True
    def destampar(self): self.__tampada = False
    def escrever(self):
        if self.__tampada:
            print("Destampe a caneta primeiro!")
        else:
            print(f"Escrevendo com {self.__cor}")

# Criando objetos (instâncias)
c1 = Caneta("azul",     "BIC")
c2 = Caneta("vermelha", "Pilot")
c1.destampar()
c1.escrever()  # → Escrevendo com azul