Semana 13: Iniciando a disciplina de POO

1. Conceitos da Programação Orientada a Objetos

A programação orientada a objetos é um paradigma que facilita o desenvolvimento de software ao se basear na criação de componentes chamados objetos, que interagem entre si. Estes objetos têm estado (atributos) e comportamento (métodos), sendo modelados a partir de classes. Os pilares da POO incluem:

  • Abstração: Definir o essencial, ocultando detalhes complexos.
  • Encapsulamento: Proteger os dados de acesso externo.
  • Herança: Reutilizar código entre classes em uma hierarquia.
  • Polimorfismo: Permitir que diferentes classes respondam de forma variada a uma mesma chamada de método.

2. História e Paradigma da POO

O paradigma orientado a objetos reflete o mundo real ao utilizar objetos que representam entidades com estado e comportamento. Surgido com linguagens como Smalltalk e Eiffel, esse paradigma facilita a construção de sistemas complexos através da colaboração entre objetos.

3. Benefícios da POO

A POO proporciona:

  • Modularidade: Permite dividir o código em partes independentes.
  • Reutilização: Classes e métodos podem ser reutilizados, aumentando a eficiência.
  • Manutenção facilitada: Pequenas mudanças no código afetam apenas parte do sistema.
  • Organização e estrutura: Facilita o trabalho em equipe e o desenvolvimento de grandes projetos.

4. Implementação em Python

Em Python, a POO é implementada através de classes, instâncias e métodos. Classes definem estruturas para objetos, enquanto instâncias são objetos concretos criados a partir dessas classes. Métodos podem operar sobre instâncias ou diretamente na classe, com a ajuda de decoradores como @classmethod.

5. Encapsulamento em Python

Exemplo de Encapsulamento

Encapsulamento é a prática de esconder detalhes internos de uma classe e expor apenas o necessário. Python oferece suporte a:

  • Atributos públicos: Acessíveis de qualquer lugar.
  • Atributos protegidos: Indicados por _, acessíveis dentro da classe e subclasses.
  • Atributos privados: Usados com __, acessíveis apenas dentro da classe.

6. Herança e Polimorfismo

A herança permite que uma classe herde atributos e métodos de outra, enquanto o polimorfismo permite que métodos com o mesmo nome atuem de formas diferentes em classes distintas.

7. Exemplo Prático

Como exemplo prático, discutimos a criação de uma Calculadora de IMC em Python e atividades como o desenvolvimento de uma classe Pessoa, explorando atributos e métodos, e simulando interações entre objetos.

Essa jornada pela POO em Python nos mostra como é possível estruturar o desenvolvimento de software de forma mais eficiente e intuitiva.