Prévia do material em texto
Ao desenvolver em Java, é essencial evitar práticas inadequadas da programação estruturada, buscando aproveitar os recursos oferecidos pela linguagem para garantir código mais legível, eficiente e livre de erros. Utilizar a classe StringBuilder para manipulação de strings, a classe BigDecimal para valores monetários e o foreach para simplificar loops for são algumas das boas práticas recomendadas. Esses recursos ajudam a minimizar instâncias desnecessárias de objetos, evitar imprecisões em cálculos e simplificar a manipulação de coleções. Fonte: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda Seus Conceitos e Suas Aplicabilidades de Forma Efetiva. 1. ed. São Paulo: Casa do Código, 2016. Com base no texto fornecido sobre as práticas recomendadas na programação orientada a objetos em Java, analise as afirmativas a seguir: I. Buscar por classes auxiliares e recursos oferecidos pela linguagem pode tornar o desenvolvimento em Java mais difícil e ineficaz. II. O foreach é uma alternativa ao loop for tradicional e simplifica a manipulação de coleções, percorrendo automaticamente os elementos. III. O uso indiscriminado de concatenação de strings pode prejudicar a legibilidade do código e criar instâncias desnecessárias de objetos. IV. A classe BigDecimal é recomendada para lidar com valores monetários devido à sua precisão e eficiência na manipulação de números decimais. É correto o que se afirma em: A I, II e III, apenas. B II e III, apenas. C III e IV, apenas. D II, III e IV, apenas. E I e IV, apenas. No desenvolvimento de software, coesão e acoplamento são dois princípios fundamentais de design que influenciam a qualidade e a manutenibilidade do software. A coesão refere-se ao grau em que os elementos dentro de um módulo estão relacionados e trabalham juntos para realizar uma única tarefa ou responsabilidade. Por outro lado, o acoplamento mede a dependência entre os módulos ou componentes de um sistema. Um acoplamento baixo é desejável, pois indica que os módulos são independentes e podem ser modificados com pouco impacto nos outros componentes do sistema. Fonte: Adaptado de: LEITE, T.; CARVALHO, T. Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva. 1. ed. São Paulo: Casa do Código, 2016. Considerando o texto-base sobre coesão e acoplamento, analise as afirmativas a seguir: I. A coesão e o acoplamento são princípios fundamentais de design que influenciam a qualidade e a manutenibilidade do software. II. A coesão se refere ao grau em que os elementos dentro de um módulo estão relacionados e trabalham juntos para realizar uma única tarefa ou responsabilidade. III. Um acoplamento baixo é desejável, pois indica que os módulos são independentes e podem ser modificados com pouco impacto nos outros componentes do sistema. IV. Um alto grau de coesão é desejável em sistemas de software, pois facilita a manutenção e evolução do sistema, mantendo as responsabilidades dos módulos bem definidas e agrupadas. É correto o que se afirma em: A I, apenas. B I, II, III e IV. C III e IV, apenas. D I, II e III, apenas. E II e IV, apenas. Na programação orientada a objetos, a herança é um conceito fundamental. Ela permite que uma classe, denominada subclasse, herde atributos e métodos de outra classe, chamada superclasse. Isso promove a reutilização de código e a criação de hierarquias entre as classes. A herança pode ser simples, quando uma subclasse herda de uma única superclasse, ou múltipla, quando uma subclasse herda de várias superclasses. A herança possibilita o uso do polimorfismo, que é a capacidade de objetos de classes diferentes responderem de forma distinta a uma mesma mensagem. Fonte: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda Seus Conceitos e Suas Aplicabilidades de Forma Efetiva. 1. ed. São Paulo: Casa do Código, 2016. Considere o exemplo de uma hierarquia de classes relacionadas a veículos. Temos quatro classes: "Veiculo", “Carro”, "CarroEletrico", "CarroCombustao" e “CarroHibrido”. Com base nos conceitos apresentados e considerando o exemplo da hierarquia de classes de veículos, analise as afirmativas a seguir: I. A herança permite que uma subclasse como "Carro” herde atributos e métodos da superclasse "Veiculo", promovendo a reutilização de código. II. A herança pode ser simples, como quando "Carro" herda apenas de "Veiculo", ou múltipla, como “CarroHibrido” herda característica de “CarroEletrico” e “CarroCombustao”. III. Na herança múltipla, como o caso de "CarroHibrido", a classe pode herdar características de várias superclasses, proporcionando uma maior flexibilidade no design do sistema, embora também possa resultar em complexidades adicionais. IV. O uso do polimorfismo, possibilitado pela herança, permite que objetos de classes diferentes respondam de forma distinta a uma mesma mensagem. Por exemplo, um método "ligar()" pode ser implementado de maneiras diferentes para um "CarroEletrico", que liga um motor elétrico, e um "CarroCombustao", que liga um motor a combustão. É correto o que se afirma em: A I, apenas. B I, II, III e IV. C III e IV, apenas. D II e IV, apenas. 2 3 E I, II e III, apenas. Nas boas práticas de uso da orientação a objetos descritas por Carvalho (2016), enfatiza-se a importância de cuidar dos métodos em uma classe, destacando a redução do tamanho, a eliminação da repetição de código e a gestão adequada dos parâmetros. De acordo com as orientações de Carvalho (2016), métodos menores e mais concisos são preferíveis, facilitando a compreensão e a manutenção do código. Evitar a passagem de muitos parâmetros de forma isolada também é recomendado, pois pode aumentar o acoplamento e dificultar futuras alterações. A organização adequada dos métodos é crucial para desenvolver sistemas mais claros e sustentáveis. Fonte: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda Seus Conceitos e Suas Aplicabilidades de Forma Efetiva. 1. ed. São Paulo: Casa do Código, 2016. Com base nas boas práticas de orientação a objetos descritas por Carvalho (2016), analise as afirmativas a seguir: I. Reduzir o tamanho dos métodos pode contribuir para uma melhor compreensão do código e facilitar sua manutenção ao longo do tempo. II. Evitar a repetição de código nos métodos é uma prática recomendada, pois reduz a redundância e promove uma melhor organização do código. III. Passar uma grande quantidade de parâmetros de forma isolada simultaneamente para os métodos é uma abordagem apropriada no contexto orientado a objetos. É correto o que se afirma em: A I, II e III. B I, apenas. C I e II, apenas. D II e III, apenas. E III, apenas. A Programação Orientada a Objetos (POO) é uma abordagem de desenvolvimento de software que modela objetos do mundo real. Ela utiliza conceitos como abstração, que simplifica a complexidade por meio de modelos essenciais; encapsulamento, que oculta detalhes internos; e herança, que permite criar novas classes com base em classes existentes. Além disso, a associação une objetos com interesses comuns. Fonte: adaptado de: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva. 1. ed. São Paulo: Casa do Código, 2016. Na biblioteca, diversas classes são fundamentais para o adequado gerenciamento de recursos e informações. Entre elas, destacam-se "Livro", "Autor", "Pessoa" e "Funcionário". Um exemplo notável é o autor "Guimarães Rosa", cuja obra "Grande Sertão: Veredas" está disponível para empréstimo. A classe "Livro" possui atributos como "nome", "título", "cargo" e "data de empréstimo", além dos métodos "emprestarLivro()" e "listarAutor()", permitindo uma gestão eficiente das operações de empréstimo e fornecendo informações sobre os autores das obras. Com base no exposto, analise as afirmativas a seguir: I. Pessoa herda característica de Livros. II. A classe Autor é uma associação da classe Livro. III. A classe Livros encapsula os atributos e os métodos. IV. Funcionário e Autor herdam características de Pessoa.É corretoo que se afirma em: A II e III, apenas. B II, III e IV, apenas. C I, II e III, apenas. D I e IV, apenas. E III e IV, apenas. A Programação Orientada a Objetos (POO) é uma abordagem de desenvolvimento de software que modela objetos do mundo real. Ela utiliza conceitos como abstração, que simplifica a complexidade por meio de modelos essenciais; encapsulamento, que oculta detalhes internos; e herança, que permite criar novas classes com base em classes existentes. Além disso, a associação une objetos com interesses comuns. Fonte: adaptado de: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva. 1. ed. São Paulo: Casa do Código, 2016. Suponha que na estrutura de uma empresa foram definidas três classes: Gerente, Funcionário e Vendedor. Dentro dessa hierarquia, os Gerentes têm a responsabilidade de coordenar os Vendedores e ambos são considerados Funcionários da empresa. Com base no exposto, analise as opções a seguir: I. Gerente é abstração de Vendedor. II. Gerente e Vendedor são associações. III. Gerente e Vendedor herdam de Funcionário. IV. Gerente e Vendedor especializam Funcionário.É correto o que se afirma em: A III e IV, apenas. B I e IV, apenas. C II, III e IV, apenas. D I, II e III, apenas. Revisar Conteúdo do Livro 4 5 6 E II e III, apenas. A programação orientada a objetos foi impulsionada por dois marcos históricos: a linguagem SIMULA, que introduziu conceitos fundamentais como classes e objetos, e o Smalltalk, que não só consolidou esses conceitos, mas também inovou com uma interface gráfica de usuário e um ambiente de desenvolvimento integrado. Ambos desempenharam papéis cruciais na evolução da programação, oferecendo as bases teóricas e práticas que moldaram o paradigma da programação orientada a objetos como o conhecemos hoje. Fonte: Adaptado de: BOOCH, G. Object-Oriented Analysis and Design with Applications. Addison-Wesley, 1991. No desenvolvimento da programação orientada a objetos, dois marcos históricos foram fundamentais: o surgimento da linguagem SIMULA e o desenvolvimento do Smalltalk. Sobre esses marcos, analise as afirmativas a seguir: I. O Smalltalk, desenvolvido por Alan Kay no Xerox PARC, trouxe inovações importantes, incluindo uma GUI e um IDE, que revolucionaram o desenvolvimento de software. II. A linguagem SIMULA, derivada da simulação de eventos discretos, introduziu conceitos-chave da programação orientada a objetos, como classes, objetos, herança e encapsulamento. III. O SIMULA e o Smalltalk foram baseados em linguagens de programação de alto nível, como Fortran e Algol 60, respectivamente, adaptando-as para atender às necessidades específicas da programação orientada a objetos. É correto o que se afirma em: A II e III, apenas. B I, apenas. C I e II, apenas. D III, apenas. E I, II e III. A programação estruturada, que se baseia em sequência, decisão e iteração, foi o paradigma dominante antes da orientação a objetos. Embora seja capaz de lidar com problemas simples, pode se tornar complexa em situações mais elaboradas, como sistemas de controle de bibliotecas, devido à sua limitação na representação de relações complexas entre os dados. Por outro lado, a orientação a objetos organiza a complexidade ao modelar entidades do mundo real como objetos com comportamentos e propriedades definidas, facilitando a manutenção e compreensão do código. Fonte: Adaptado de: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva. 1. ed. São Paulo: Casa do Código, 2016. Identifique uma das principais limitações da programação estruturada que é superada com a implementação da programação orientada a objetos: A Propensão a erros devido à redundância de código. B Falta de abstrações de dados. C Dificuldade em lidar com estruturas básicas de programação. D Limitações na representação de relações complexas entre os dados. E Complexidade na manutenção de um código organizado. O encapsulamento é uma peça fundamental na programação orientada a objetos, sendo vital para assegurar a qualidade e segurança das aplicações. Ele proporciona uma camada de proteção ao ocultar os detalhes internos de uma classe e fornecer uma interface controlada para interações externas. Para manter esse encapsulamento, é crucial evitar o uso excessivo de métodos get/set, optando por estratégias mais robustas como a sobrecarga do construtor e a implementação de métodos de negócio. Além disso, a imutabilidade de classes é essencial, especialmente em ambientes concorrentes, garantindo que o estado de um objeto não seja alterado após sua criação. Essas práticas não apenas promovem um melhor encapsulamento, mas também contribuem significativamente para a segurança e estabilidade das aplicações orientadas a objetos. Fonte: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda Seus Conceitos e Suas Aplicabilidades de Forma Efetiva. 1. ed. São Paulo: Casa do Código, 2016. Com base nas informações apresentadas, avalie as asserções a seguir e a relação proposta entre elas: I. Todos os atributos devem ser definidos como privados para garantir o encapsulamento e ocultação da informação. PORQUE II. Os métodos públicos devem definir claramente a API da classe, enquanto os métodos privados devem ser utilizados para organizar a lógica interna da classe. A respeito dessas asserções, assinale a opção correta: A A asserção I é uma proposição verdadeira e a II é uma proposição falsa. B A asserção I é uma proposição falsa e a II é uma proposição verdadeira. C As asserções I e II são falsas. D As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. Atenção: Esta questão foi cancelada, porém a pontuação foi considerada. 7 8 9 E As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. No contexto da programação em Java, é crucial sobrescrever os métodos ‘equals’, ‘hashCode’ e ‘toString’ ao lidar com coleções de objetos. Essa prática garante operações como adição, remoção, pesquisa e acesso aos elementos que funcionem corretamente. A falta de implementação desses métodos pode causar falhas em operações, comprometer o encapsulamento e tornar o código propenso a erros. Fonte: CARVALHO, Tiago Leite. Orientação a Objetos: Aprenda Seus Conceitos e Suas Aplicabilidades de Forma Efetiva. 1. ed. São Paulo: Casa do Código, 2016. Assinale a alternativa que corresponde à prática destacada, como crucial para evitar resultados indesejados ao lidar com coleções em Java: A Sobrescrever os métodos `equals`, `hashCode` e `toString` para a classe relevante. B Evitar a implementação do método `equals` para preservar o encapsulamento. C Depender de métodos padrão fornecidos pela linguagem Java. D Utilizar métodos de remoção e pesquisa com classes primitivas. E Utilizar concatenações diretas de objetos para facilitar o acesso aos elementos. 10