// aula 02 · Python · POO
Conceito central — a analogia do Guanabara
É 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.
É 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
São as variáveis internas do objeto. Descrevem o que ele tem.
Ex: cor, marca, tipo, ponta, carga, tampada.
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().
É a combinação dos valores dos atributos naquele momento.
Ex: caneta azul, destampada, carga 80%.
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
Visível de qualquer lugar do programa.
Acesso restrito à classe que o definiu. Protege os dados internos.
Visível para a classe e para suas subclasses (herança).
Métodos que leem (get) e alteram (set) atributos privados de forma segura.
Os 4 pilares da POO
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.
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.
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.
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