Introducão | Orientação a Objeto
- Introducão | Orientação a Objeto
🔒 Abstração × Encapsulamento
Esses dois conceitos são parecidos, mas não iguais:
| Conceito | O que faz | Exemplo |
|---|---|---|
| Abstração | Mostra o que algo faz (interface) | Classe abstrata Forma define area() |
| Encapsulamento | Esconde como algo faz (detalhes internos) | Uso de atributos privados como self.__raio |
🧠 Abstração × Adapter
| Conceito | Abstração (interface/classe abstrata) | Adapter (padrão de projeto) |
|---|---|---|
| Propósito | Definir um contrato genérico para comportamentos | Adaptar uma interface existente para outra desejada |
| Foco | "O que algo pode fazer" (sem se preocupar com como) | "Como tornar algo compatível com outra interface" |
| Exemplo comum | ILogger, IRepository, Stream | XmlSerializerAdapter, ThirdPartyAuthAdapter |
| É um padrão? | Não — é um conceito de modelagem OO | Sim — é um padrão do catálogo GoF |
| Relacionamento | Generalização | Composição ou Delegação |