Prévia do material em texto
**Prova de Programação Orientada a Objetos** 1. **Encapsulamento:** O que é encapsulamento em? A) Ocultação de métodos para simplificar a interface; aumenta a complexidade. C) Utilização de polimorfismo em todas as classes; facilita a reutilização de código. D) Separação de classes em módulos distintos; otimiza a distribuição do software. 2. **Herança:** Explique o conceito de e forneça um exemplo prático de sua aplicação. A) Compartilhamento de dados entre objetos; ex.: compartilhar variáveis entre classes. B) Reutilização de características de uma classe em outra; ex.: criar uma classe "Gato" derivada de "Animal". C) Troca de métodos entre classes; ex.: implementar métodos de uma classe em outra. D) Mistura de características de múltiplas classes em uma; ex.: combinar "Carro" e "Avião" em uma única classe. 3. **Polimorfismo:** Como o polimorfismo é implementado em programação orientada a objetos e qual seu benefício? A) Através da redefinição de métodos em várias classes; permite o uso de sobrecarga. B) Através da definição de métodos comuns em várias classes; facilita a organização do código. C) Através da utilização de interfaces; aumenta a complexidade do sistema. D) Através da capacidade de objetos de diferentes classes serem tratados como instâncias da mesma classe base; promove flexibilidade no código. 4. **Métodos Abstratos:** O que são métodos abstratos em POO e como são utilizados? A) Métodos que não possuem implementação; exigem a definição em todas as classes derivadas. B) Métodos que não podem ser acessados externamente; são utilizados apenas internamente. C) Métodos que encapsulam lógica de negócios complexa; são comuns em classes de serviço. D) Métodos que implementam operações matemáticas; utilizados para cálculos avançados. 5. **Associação:** Descreva o conceito de associação em programação orientada a objetos e forneça um exemplo. A) Vínculo entre classes que permite compartilhar métodos; ex.: relação entre "Carro" e "Motor". B) Relação entre objetos de diferentes classes; ex.: um "Cliente" associado a uma "Conta Bancária". C) Agrupamento de classes em um mesmo pacote; ex.: pacote "Modelo" contendo "Carro" e "Casa". D) Conexão direta entre atributos de uma classe; ex.: "Pessoa" com atributo "Endereço". 6. **Interfaces:** O que são interfaces em POO e como elas são usadas para alcançar a implementação múltipla? A) Contratos que especificam a implementação de métodos; uma classe pode implementar várias interfaces. B) Estruturas de controle de acesso; definem quem pode acessar determinados métodos. C) Listas de atributos de uma classe; definem a estrutura de dados da classe. D) Módulos de código separados; agrupam métodos relacionados em uma única classe. 7. **Sobrecarga de Métodos:** Explique o conceito de em POO e forneça um exemplo prático. A) Utilização de métodos em diferentes classes; ex.: método "Calcular" em classes diferentes. D) Implementação de métodos em várias interfaces; ex.: método "Salvar" em interfaces "Exportável" e "Importável". 8. **Composição:** O que é composição em programação orientada a objetos e qual sua vantagem sobre a herança? A) Compartilhamento de atributos entre classes; mais eficiente que herança. B) Combinação de características de várias classes em uma única; aumenta a complexidade do código. C) Agrupamento de objetos complexos a partir de objetos mais simples; evita problemas de hierarquia. D) Herança de métodos e atributos de uma classe para outra; simplifica a criação de novas classes. 9. **Pacotes (Packages):** Qual é a função dos pacotes em programação orientada a objetos e como eles organizam o código? A) Proteção de classes contra acesso externo; restringem o acesso às instâncias. B) Agrupamento de classes relacionadas; organizam o código em módulos. C) Definição de métodos em um mesmo local; evitam a repetição de código. D) Criação de classes abstratas; permitem o compartilhamento de métodos. 10. **Agregação:** Descreva o conceito de agregação em POO e forneça um exemplo prático. A) Combinação de classes para criar uma nova; ex.: "Carro" + "Motor" = "Carro Elétrico". B) Vínculo entre objetos de diferentes classes; ex.: "Pessoa" associada a várias "Compras". C) Redefinição de métodos em classes derivadas; ex.: "Desenhar" em classes de formas diferentes. D) Associação de atributos em uma classe; ex.: "Carro" com atributos "Cor" e "Modelo". 11. **Delegação:** O que é delegação em POO e como ela difere da composição? A) Atribuição de tarefas a classes derivadas; semelhante à composição. B) Transferência de responsabilidades entre objetos; diferente da composição. C) Compartilhamento de métodos entre classes; semelhante à herança. D) Organização de classes em módulos; semelhante à composição. 12. **Mensagens:** Como as mensagens são utilizadas em programação orientada a objetos e qual sua importância? A) Sinais de alerta entre objetos; aumentam a segurança do código. B) Chamadas de métodos entre objetos; permitem a comunicação entre eles. C) Avisos de erro durante a execução; facilitam a depuração do código. D) Exibições gráficas de interação; tornam o código mais amigável. 13. **Padrões de Projeto:** Explique o conceito de padrões de projeto em POO e forneça um exemplo comum. A) Abordagens específicas para resolver problemas recorrentes; ex.: padrão "Singleton". B) Métodos exclusivos de uma linguagem de programação; ex.: padrão "for" em Python. C) Estruturas de controle de acesso; ex.: padrão "private" em Java. D) Modificações em métodos de uma classe; ex.: padrão "override" em C++. 14. **Estados e Comportamentos:** Em POO, como os estados e comportamentos são representados em uma classe? A) Estados são atributos; comportamentos são métodos. B) Estados são métodos; comportamentos são atributos. C) Ambos são representados por atributos. D) Ambos são representados por métodos. 15. **Persistência de Objetos:** O que é persistência de objetos e como ela é aplicada em programação orientada a objetos? A) Salvar objetos em formato binário; otimizar o espaço em disco. B) Manter a existência de objetos durante a execução; evita a desativação acidental. C) Armazenar objetos em banco de dados ou arquivos; preservar dados entre execuções. D) Atribuir objetos a variáveis; facilitar a referência entre eles. 16. **Serialização:** Explique o conceito de serialização em POO e qual sua finalidade. A) Transformação de objetos em dados binários ou texto; facilita a persistência ou transmissão. B) Combinação de métodos de várias classes; permite a criação de novos comportamentos. C) Associação de objetos a uma classe base; simplifica a reutilização de código. D) Redefinição de métodos em classes derivadas; melhora a eficiência em tempo de execução. 17. **Framework:** O que é um framework em POO e qual seu papel no desenvolvimento de software? A) Implementação de estruturas de controle de acesso; otimiza a execução do código. B) Conjunto de classes e métodos reutilizáveis; fornece uma base para o desenvolvimento de aplicações. C) Agrupamento de objetos relacionados; organiza o código em módulos. D) Padrões específicos para a implementação de métodos; melhora a coesão do código. 18. **Responsabilidade Única:** Explique o princípio da responsabilidade única em POO e por que é importante. A) Atribuição de uma única responsabilidade a cada objeto; melhora a coesão. B) Compartilhamento de responsabilidades entre objetos; simplifica o código. C) Agrupamento de métodosrelacionados em uma única classe; facilita a manutenção. D) Delegação de responsabilidades a classes derivadas; aumenta a complexidade. 19. **Refatoração:** O que é em programação orientada a objetos e qual seu propósito? C) Substituição de objetos em tempo de execução; evita falhas em tempo de compilação. D) Troca de métodos entre classes; permite a reutilização de código. 20. **Testes Unitários:** Como os testes unitários são aplicados em programação orientada a objetos e qual sua importância? A) Verificação da integridade dos atributos; simplifica a detecção de bugs. B) Validação de classes derivadas; aumenta a eficiência do código. C) Verificação de métodos isolados; garante o funcionamento correto de partes específicas do código. D) Substituição de objetos em tempo de execução; melhora a eficiência em tempo de compilação.