⚠️ Aviso: Este conteúdo foi gerado com ajuda de Inteligência Artificial (IA) e pode conter erros ou imprecisões.
Sempre verifique a informação antes de utilizar.


1. O que é Programação Orientada a Objetos (POO) e como ela se diferencia de outros paradigmas de programação?

A Programação Orientada a Objetos (POO) é um paradigma de programação baseado em objetos, que combinam dados e comportamentos. Utiliza conceitos fundamentais como classes, herança e encapsulamento.

Diferenças para outros paradigmas:

  • Programação Linear: Executa instruções em sequência, do início ao fim, sem desvios ou repetições; ideal para programas simples.
  • Programação Estruturada: Organiza o código em blocos com estruturas de controle (if, while, for), melhorando leitura e manutenção.
  • Programação Modular: Divide o programa em módulos ou funções independentes, promovendo reutilização e organização do código.

A POO concentra responsabilidades de validações e manipulações de dados dentro dos objetos, evitando lógica espalhada pelo código.


2. Quais eram os desafios da programação antes da POO e como a POO propõe resolvê-los?

Desafios antes da POO:

  • Linguagens de baixo nível, específicas para cada computador, dificultando portabilidade.
  • Responsabilidades de validação espalhadas por todo o código (ex.: validar CPF ou idade mínima em vários pontos).

Solução da POO:

  • Concentra responsabilidades em um único ponto (objeto ou classe).
  • Facilita manutenção, organização e reusabilidade, pois alterações são feitas em apenas um lugar sem impactar outras partes do sistema.

3. O que é um “objeto” em POO e quais são suas características principais?

Um objeto é a representação de algo material ou abstrato, descrito por:

  • Atributos (Características): Propriedades que o objeto “tem”.
    Ex.: Para uma Caneta → modelo, cor, ponta, carga, tampada.

  • Métodos (Comportamentos): Ações que o objeto “faz”.
    Ex.: rabiscar(), escrever(), tampar(), destampar().

  • Estado Atual: Situação atual do objeto, baseada nos valores de seus atributos.
    Ex.: modelo = "xxx-123", cor = azul, carga = 90%, tampada = sim.


4. Qual é a relação entre “classe” e “objeto”?

  • Classe: Molde ou planta para criar objetos. Define atributos e métodos comuns a todos os objetos da classe.
    Ex.: A classe Caneta define que todas as canetas terão modelo, cor, ponta, carga e comportamentos como escrever() e tampar().

  • Objeto: Instância concreta da classe. Cada objeto tem seus próprios valores de atributos.
    Ex.: c1 = nova Caneta() → objeto c1 da classe Caneta, com modelo = "xxx-123" e cor = azul.

Objetos são acessados por referências na memória.


5. O que significa “instanciar” um objeto?

Instanciar significa criar uma instância concreta de uma classe.
Exemplo em pseudocódigo:

  
c1 = nova Caneta()
c1.modelo = "xxx-123"
c1.cor = "azul"
c1.destampar()
  
  • c1 é o objeto instanciado.
  • A partir de c1, podemos acessar atributos e métodos.

6. Como a POO lida com a complexidade do mundo real através da “abstração”?

  • Abstração: simplifica a complexidade, modelando apenas os aspectos essenciais do problema.
  • Ignora detalhes irrelevantes.
  • Permite representar entidades de forma simples, clara e funcional, capturando apenas o necessário para a solução.

Ex.: Um desenho de pessoa não precisa mostrar cada detalhe para representar sua estrutura geral; o mesmo vale para objetos em POO.


7. Por que é importante concentrar a responsabilidade de verificações e validações em um só lugar na POO?

Benefícios:

  • Manutenção: Alterações em regras são feitas em um único ponto.
  • Reusabilidade: Lógica encapsulada pode ser reutilizada.
  • Organização: Código mais limpo e coeso.
  • Confiabilidade: Objetos sempre permanecem em estado válido.
  • Colaboração: Facilita trabalho em equipe sem duplicar validações.

8. Quais são os principais componentes que descrevem um objeto em termos de código?

Exemplo: objeto Caneta

Atributos (variáveis):

  • modelo: texto
  • cor: texto
  • ponta: decimal
  • carga: inteiro
  • tampada: lógico

Métodos (funções/procedimentos):

  • rabiscar()
  • escrever()
  • tampar()
  • destampar()

Estado (valores atuais dos atributos):

  • modelo = "xxx-123"
  • cor = azul
  • ponta = 0.5
  • carga = 90%
  • tampada = sim

Last updated 15 set. 2025, 18:37 -0300 . history