Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
PROGRAMAÇÃO ORIENTADA A OBJETOS
1 Introdução a classes, objetos e métodos
1. A POO é um paradigma de programação com base no conceito de "objetos" que podem assumir dados na forma de campos, também conhecidos como propriedades de um código. Métodos e classes também são importantes na POO. Em relação ao papel das classes, assinale a resposta correta.
B. É a partir das classes que a linguagem orientada a objetos se estrutura.
2. Um objeto é instanciado por meio de uma classe. A diferença é que um objeto em Java é a entidade física e lógica, ao passo que uma classe em Java é considerada apenas como uma entidade lógica. Em relação à forma geral de uma classe, assinale a resposta correta.
C. Uma classe é criada com a palavra-chave class.
3. Um dos maiores desafios da POO é satisfazer o cliente, entregando um produto de qualidade. No entanto, a maior vantagem está na forma como suas características possibilitam minimizar a complexidade no desenvolvimento e na manutenção de software, aumentando a produtividade durante o processo de desenvolvimento. Os objetos são os elementos básicos da POO. Sobre os objetos e suas características, assinale a resposta correta.
B. São compostos por estado e comportamento.
4. Na linguagem de programação Java, a visibilidade padrão dos objetos, classes, atributos e métodos está limitada ao mesmo conjunto de elementos, ou seja, todos devem estar inseridos em um mesmo pacote. No código-fonte, a palavra-chave public modifica a visibilidade, excluindo as restrições e tornando o código mais amplo. Analise o código a seguir e selecione a afirmativa correta:
public class Veiculo {
private String placa;
private String cor;
private int anoFabricacao;
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public int getAnoFabricacao() {
return anoFabricacao;
}
public void setAnoFabricacao(int anoFabricacao) {
this.anoFabricacao = anoFabricacao;
}
}
B. As palavras-chave this em this.cor, this.placa e this.anoFrabricacao informam ao método que estamos nos referindo à variável de instância.
5. A POO foi criada como uma alternativa para a programação estruturada, trazendo proximidade entre as "coisas" do mundo real e os objetos, criados no mundo virtual para refletir a realidade. Um objeto é algo genérico que pode definir qualquer coisa tangível. Quais são os componentes implementados para realizar algum tipo de tarefa?
D. Métodos.
1.2 Atributos e métodos de classe
1. Na programação orientada a objetos, uma variável é um recurso capaz de armazenar um ou mais valores na memória do programa. O valor pode ser acessado em qualquer parte do programa, sempre que necessário, desde que seja declarado corretamente. Sobre as varáveis, marque a alternativa correta.
A. Uma variável estática representa informações em nível de classe.
2. As palavras-chaves, ou palavras reservadas, são utilizadas na estrutura de uma linguagem de programação para chamar métodos, funções e recursos nativos, garantindo que o termo não possa ser utilizado pelo desenvolvedor para outras funcionalidades. Da mesma forma, a declaração de uma variável de classe utiliza uma palavra-chave para ser invocada. Selecione a alternativa que representa a palavra-chave correta.
E. static.
3. Um método em Java é equivalente a uma função, sub-rotina ou procedimento em outras linguagens de programação. O Java não trata dos métodos como globais. Cada método deve ser definido dentro de uma classe conforme suas características próprias. Em relação aos métodos estáticos ou de classes, marque a afirmativa correta.
E. Métodos estáticos são declarados colocando-se a palavra-chave static antes do tipo de retorno.
4. Os métodos de classes são definidos como funções independentemente de qualquer variável de instância atribuída aos objetos. Os métodos são invocados sem depender de nenhum objeto e suas características. Analise as afirmativas a seguir e marque a alternativa correta:
I. Para um método de classe acessar membros de classe não estáticos, deve-se colocar a palavra-chave static no membro a ser acessado.
II. Um método estático não pode acessar membros de classe não estáticos.
III. Para acessar membros de classe não estáticos, é preciso colocar a palavra-chave protected no membro a ser acessado e declarar o método usando o get na frente do seu nome.
Está correto o que se afirma em:
C. II, apenas.
5. A programação orientada a objetos é um modelo de programação em que o desenvolvedor pode trabalhar com diferentes linguagens de programação. Em Java, é possível trabalhar com várias classes, que têm as características de definir objetos na vida real. Cada classe determina o comportamento de um objeto. Tanto as classes como os métodos são importantes e marcados por diferentes estados definidos por propriedades. Nesse contexto, marque a alternativa correta.
C. Se um método estático tentar acessar outro método não estático da classe usando somente o nome do método, ocorrerá um erro de compilação.
2.1 Padrões de projeto orientados a objeto
1. O uso de padrões de projetos na construção de software tem vantagens relacionadas ao tempo e à lógica de programação. Sobre as características dos padrões de projeto orientados a objetos, veja as afirmações a seguir:
I. Projetar software reutilizável orientado a objetos é uma tarefa complexa.
II. Bons projetistas sabem que devem resolver problemas de software a partir do zero.
III. Projetistas, quando encontram uma solução, reutilizam-na várias vezes.
IV. Padrões de projeto conseguem resolver problemas específicos e complexos.
Está correto o que se afirma em:
E. III e IV.
2. Em geral, um padrão tem quatro elementos essenciais. Nesse sentido, observe os elementos essenciais a seguir e os relacione com suas respectivas descrições:
I. Nome padrão
II. Problema
III. Solução
IV. Consequência
( ) Elementos que compõem o padrão de projetos, seus relacionamentos, suas responsabilidades e colaborações.
( ) Referência utilizada para descrever um problema de projeto que torna mais fácil comunicar projetos.
( ) Em que situação aplicar o padrão; pode incluir uma lista de condições a serem satisfeitas para que sua aplicação faça sentido.
( ) Resultado da análise das vantagens e desvantagens da aplicação do padrão; é importante para compreender benefícios da aplicação do padrão.
Assinale a alternativa em que é apresentada a ordem correta:
C. III, I, II, IV.
3. O catálogo de padrões de projetos escrito pelo GOF tem 23 padrões. Os padrões de projeto variam na sua granularidade e no seu nível de abstração. Como existem muitos padrões, eles foram organizados. Com isso, os padrões de projeto foram classificados por dois critérios: o primeiro chama-se finalidade e o segundo, escopo. Referente ao critério de finalidade, observe as afirmações a seguir e as relacione com suas respectivas descrições:
I. Criação
II. Estrutural
III. Comportamental
( ) Preocupa-se com o processo de desenvolvimento de novos objetos e classes, com sua instanciação.
( ) Preocupa-se em concretizar as maneiras como classes ou objetos interagem e distribuem responsabilidades.
( ) Preocupa-se com o processo de composição de classes e objetos, aumentando sua funcionalidade.
Assinale a alternativa em que é apresentada a ordem correta:
C. I, III, II.
4. Os padrões de projetos são úteis em diferentes tipos de sistemas e aplicações, sendo classificados de acordo com sua função na resolução de problemas previamente descritos. Nesse contexto, assinale a alternativa que descreve o padrão Strategy.
D. Define uma família de algoritmos, encapsula cada um deles e torna-os intercambiáveis.
5. A utilização de padrões de projetos orientados a objeto depende de algumas características específicas que envolvem as classes e seus parâmetros. Nesse contexto, analise as afirmações a seguir:
I. O critério "escopo" especifica se o padrão se aplica primeiramente
a classes ou a objetos.
II. O padrão para classes lida com os relacionamentos entre classes e suas subclasses.
III. Alguns padrões são frequentemente usados em conjuntos.
IV. O padrão Builder tem propósito estrutural.
V. O padrão Visotor tem finalidade de criação.
Está correto o que se afirma em:
E. I, II e III.
2.2 Projetando classes
1. É importante que o desenvolvedor compreenda a importância de manter as tarefas a serem executadas na construção de um código de maneira organizada. Assim como as boas práticas, os processos também devem ser conduzidos na ordem correta, considerando também a importância de cada um deles. Em orientação a objetos, como devemos começar as atividades de programação?
D. Identificando objetos e as classes às quais eles pertencem.
2. Ao criar um aplicativo, podem ser criadas diferentes classes, o que também traz maior coesão ao programa. Se uma classe com o nome “Cadastro” for criada, ainda não estará claro qual será sua responsabilidade, mas, se uma segunda classe, denominada “Cliente”, for criada, é evidente que seu objetivo será tratar da criação do objeto “Cliente”. Considerando as informações sobre as classes, o que é correto afirmar?
C. Se você não pode afirmar, a partir do nome da classe, o que um objeto da classe supostamente deve fazer, provavelmente você não está no caminho certo.
3. No contexto de desenvolvimento de software, em diversas situações, os desenvolvedores passam por problemas ou encontram bugs que precisam ser corrigidos, por influenciarem negativamente a funcionalidade de um aplicativo. Para evitar tais defeitos, alguns princípios podem ser aplicados, em conjunto com as boas práticas de programação. Referente a coesão e acoplamento, o que se pode afirmar?
C. Quando a interface pública de uma classe referencia vários conceitos, é um bom sinal de que pode ser hora de utilizar classes separadas.
4. É uma boa prática evitar conflitos gerados pela nomeação incorreta de classes. Existem recursos que facilitam a escrita do código e auxiliam no processo de manter os objetos e todos os outros componentes atualizados. Os pacotes facilitam a busca ou pesquisa de classes, interfaces e enumerações. Ainda sobre os pacotes, o que é correto afirmar?
E. São um conjunto de classes relacionadas.
5. Analise o código abaixo:
/*
package media;
public class calcularMedia {
private double nota1;
private double nota2;
private double media;
private int matricula;
private String nome;
public void calcularMedia(double nota1, double nota2){
this.nota1 = nota1;
this.nota2 = nota2;
media = (nota1 + nota2)/2;
}
public void cadastrarAluno(int cod, String matricula){
this.cod=cod;
this.matricula = matricula;
}
}
*/
O que é correto afirmar?
D. Essa classe não apresenta coesão.
3.1 Classes abstratas
1. Para representar objetos projetados do mundo real para a programação, diferentes elementos são necessários. Ao implementar um código em Java, as classes são utilizadas para declarar atributos e métodos. Um tipo de classe muito comum na linguagem é a classe abstrata. Marque a alternativa que melhor define as classes abstratas.
A. Classes abstratas auxiliam quando algum comportamento é definido para a maioria ou para todos os objetos de dado tipo.
2. Em classes abstratas, temos um padrão de acordo com o qual uma área de conhecimento particular de uma classe exige que outra pessoa providencie uma parte que está faltando. Além de ser conhecido como Template-Method, também podemos nos referir ao recurso como:
E. método gabarito.
3. De forma genérica, um método em Java pode definir uma função, sub-rotina ou procedimento. Em algumas linguagens, mas não em Java, existe o conceito de métodos globais. Em Java, todos os métodos precisam ser definidos dentro de uma classe, como os métodos abstratos. Sobre os métodos abstratos, é correto afirmar que:
B. são métodos sem implementação.
4. Alguns conceitos podem parecer semelhantes em Java como classes abstratas e interfaces ou quando classes abstratas e métodos abstratos são comparados. O método abstrato define a assinatura e não contém código igualmente como ocorre na definição de interfaces. A classe abstrata define atributos e métodos implementados, definindo o acesso às subclasses. Em relação aos conceitos de classe e métodos abstratos, assinale a alternativa correta.
E. Quando têm métodos abstratos, as classes devem ser declaradas abstratas.
5. Com base na programação de objetos em Java, podemos vincular muitos conceitos do mundo real com o mundo da programação. O mesmo ocorre com o conceito de herança, em que as classes refletem o comportamento de outras. Nesse processo, temos os conceitos de superclasse e subclasse. Em relação à herança em orientação a objetos, assinale a alternativa correta.
D. Quando uma subclasse herda um método abstrato da superclasse, este não deve ser implementado.
3.2 Classes aninhadas
1. O uso de classes aninhadas contribui para o desenvolvimento de software em vários aspectos. Sobre o conceito de classes aninhadas, veja as afirmações a seguir:
I. Classes aninhadas são declaradas dentro de um mesmo projeto.
II. Classes aninhadas são declaradas dentro de outras classes.
III. Classes aninhadas são declaradas com a palavra-chave abstract.
IV. Classes aninhadas dependem da existência de outra classe para serem declaradas.
Está correto o que se afirma em:
A. II e IV.
2. As classes aninhadas são úteis em diferentes tipos de sistemas e aplicações e têm características específicas. Sobre o conceito e as características de classes externas, veja as afirmações a seguir:
I. Classes externas são classes declaradas com o modificador de acesso public.
II. Classes aninhadas classificadas como protected são protegidas.
III. Classes externas são classes que contêm classes aninhadas.
IV. Classes externas são todas aquelas que têm membros como atributos e métodos.
Está correto o que se afirma em:
C. II e III.
3. As classes aninhadas podem ser divididas em dois tipos principais que apresentam características diferentes. Nesse sentido, observe os tipos de classes aninhadas a seguir e os relacione com suas respectivas características:
I. Classes aninhadas internas
II. Classes aninhadas estáticas
( ) Têm acesso aos membros privados não estáticos da classe externa.
( ) Chamam as variáveis de instância de sua classe externa com uma referência de objeto.
( ) Membros estáticos podem ser declarados dentro delas.
( ) Referem-se diretamente às variáveis de instância definidas em sua classe externa.
Assinale a alternativa em que é apresentada a ordem correta.
D. I, II, II, I.
4. A aplicação de classes aninhadas em um código-fonte depende da utilização de uma sintaxe de código específica, a fim de garantir sua funcionalidade. Nesse sentido, observe o código-fonte a seguir:
Agora, veja as afirmações a seguir sobre o código apresentado:
I. A classe Permissions é declarada dentro da classe BankAccount.
II. A classe Permissions é um membro da classe BankAccount.
III. Se a classe BankAccount estivesse dentro do pacote banco, o nome completo da classe seria BankAccount.Permissions.
IV. A classe Permissions é proibida de acessar os membros de BankAccount.
Está correto o que se afirma em:
E. I e II.
5. Existem algumas maneiras de instanciar uma classe aninhada não estática. Considere uma classe externa chamada A e uma classe aninhada chamada B. Qual alternativa tem o código correto para essa situação?
D. A.B variavel = new A().new B();
4.1 Classes com tipos genéricos
1. Os tipos genéricos também têm diversas vantagens, como o aumento da estabilidade dos tipos durante a compilação da aplicação. Sobre os tipos genéricos, veja as afirmações a seguir:
I. O tópico genérico é extenso.
II. Genéricos são tipos primitivos de dados.
III. Ao declarar um atributo como String, declara-se que ele é um genérico.
IV. Ao usar tipos genéricos, é possível definir um algoritmo uma única vez.
V. Com genéricos, o código pode ser
reutilizado.
Está correto o que se afirma em:
C. I, IV e V.
2. Os tipos genéricos são úteis em diferentes tipos de sistemas e aplicações, com uma função específica. Nesse contexto, assinale a alternativa que descreve a que se refere o termo “genéricos” no conceito dos tipos genéricos:
E. Tipos de dados parametrizados.
3. A aplicação de tipos genéricos em um código-fonte depende da utilização de uma sintaxe de código específica. Nesse sentido, observe os modelos de trechos de códigos-fonte a seguir e os relacione com suas respectivas descrições:
I. class NomeDaClasse{ //implementação. }
II. class abstract NomeDaClasse{ //implementação.
III. class NomeDaClasse extends Generica{ //implementação. }
IV. class NomeDaClasse implements Generica{ //implementação. }
V. class NomeDaClasse { //implementação. }
( ) Declara um parâmetro de tipo genérico para a classe.
( ) Declara uma classe abstrata.
( ) Informa que a classe está implementando uma interface com o nome “Generica”.
( ) Sintaxe básica de declaração de classes.
( ) Informa que a classe é uma extensão da classe com o nome “Generica”.
Assinale a alternativa que apresenta a ordem correta.
E. V, II, IV, I, III.
4. A sintaxe de um código-fonte é muito importante para que a aplicação seja implementada e executada da maneira correta com todos os seus recursos, inclusive os tipos genéricos que forem definidos. Nesse sentido, observe o código-fonte a seguir:
Analise as afirmações a seguir sobre o código apresentado:
I. Na linha 1, a letra “T” representa o nome de um parâmetro de tipo.
II. O código da linha 2 provocará um erro de compilação pela falta de um tipo válido para o atributo “ob”.
III. Nas linhas 10, 11 e 12, tem-se o método “getob()”, que retorna um tipo “T”.
IV. Na linha 28, é criada uma versão de “Gen” para inteiros e atribuída uma referência a “iOb” a uma instância da classe “Generica”.
Está correto o que se afirma em:
B. I e III.
5. A utilização de tipos genéricos na API Java depende de algumas características específicas, que envolvem as classes e seus parâmetros. Nesse contexto, veja as afirmações a seguir:
I. Genéricos funcionam com qualquer tipo de dados.
II. Tipos genéricos diferem de acordo com seus argumentos de tipo.
III. Classes genéricas podem ser declaradas com mais de um parâmetro.
IV. É recomendável que os nomes de parâmetros de tipos tenham exclusivamente uma letra.
V. As letras a serem utilizadas como nomes de parâmetros de tipos devem ser “T”, “E” ou “V”.
Está correto o que se afirma em:
E. II, III e IV.
4.2 Interfaces
1. Todos os componentes têm um papel importante na linguagem de programação orientada a objetos. Porém, um deles é considerado unidade fundamental de uma estrutura de código.
Considerando o conceito apresentado, assinale a alternativa que contém o recurso que representa tal unidade.
E. Classes.
2. Diferentemente de uma classe, uma interface em Java não suporta qualquer tipo de código, ao passo que uma classe abstrata pode prover um código completo ou ter apenas a declaração de um modelo a ser sobrescrito.
Assinale a alternativa que apresenta a definição de interface.
B. Interface define tipos em forma abstrata.
3. Em uma estrutura de herança, uma classe usa membros de outra classe. Interfaces fornecem membros para que outras classes possam fazer uso deles. Ao implementar heranças e interfaces, algumas diferenças precisam ser notadas.
Sobre a herança, assinale a alternativa correta.
A. Herança é uma estrutura que tem uma superclasse e subclasses que herdam membros dessa superclasse.
4. Ao criar uma interface com o nome Contrato e com o método sem retorno chamado entrarComTexto(), é necessário definir alguns componentes.
A forma correta de criar a interface em Java é:
D. public interface Contrato{ void entrarComTexto(String texto); }
5. Uma classe que implementa uma interface assume a responsabilidade de executar as ações que a interface define. A é a classe e B é a interface.
Dessa forma, para obter as assinaturas dos métodos da interface em uma classe, analise os códigos a seguir e identifique a forma correta de implementação.
D. public class A implements B { }
Sobrescrita
1. A sobrescrita permite aplicar a modelagem sobre diagramas de classes e suas definições. Além disso, pode ser elaborada considerando a declaração de nome de uma classe com uma ou mais subclasses atribuídas a si. Um método pode ser sobrescrito apenas quando:
D. é acessível.
2. Em alguns casos, existe a necessidade de herdar habilidades em Java, porém é necessário garantir a possibilidade e personalizá-las. A herança deve considerar a mudança de comportamento entre as classes. Nesse contexto, ao sobrescrever um método adotado pela linguagem de programação Java e outras orientadas a objeto, é necessário considerar que o ato praticado será:
A. substituir a implementação do método da superclasse.
3. Métodos representam uma parte essencial na POO, utilizados para que seja possível consultar e alterar atributos elencados aos objetos. Sobre as características de um método na sobrescrita, é correto afirmar que:
C. um método declarado como protected na superclasse pode ser declarado public na subclasse.
4. Em Java, implementar classes é possível por meio de palavras-chaves. Para definir classes públicas, é necessário declarar a classe por meio do comando public class; já para modificar o acesso do método utiliza-se public void.
Considerando as informações repassadas, analise o código a seguir:
public class Animal{
public void locomover(){
System.out.println("Se locomove");
}
}
public class Peixe extendas Animal {
public void locomover(){
System.out.println("Nada");
}
}
Ao analisar o código, está correto afirmar que:
D. ao instanciar a classe Peixe e, por meio de uma variável de referência, chamar o método locomover(), a saída que se tem é: Nada.
5. A sobrescrita utiliza um conjunto de modificadores para definir o conceito de herança. Em relação à herança e à sobrescrita, é correto afirmar que:
E. uma invocação externa do método da subclasse, acessível fora de sua classe, resulta na invocação da implementação da superclasse.
Construtores e herança
1. Em Java, não é possível que uma classe faça herança de múltiplas classes. Outro conceito importante sobre herança é que, ao programar nessa linguagem, o construtor é definido como um método que deve ser renomeado da mesma forma que a classe. Na estrutura de herança, para instanciar uma classe-filha, qual é o construtor utilizado?
B. O construtor da subclasse.
2. Uma linguagem orientada a objetos como Java utiliza construtores para executar a tarefa de criação de objetos na memória, cujo objetivo é instanciar a classe que foi definida. Em relação a construtores, analise as afirmações a seguir.
I. O construtor não tem tipo de retorno.
II. Ao nomear um construtor, deve-se colocar o mesmo nome da classe a que pertence.
III. Os modificadores de acesso do construtor podem ser: public, private e protected.
IV. Toda classe em Java tem, no mínimo, um construtor.
V. Construtores não podem ter argumentos.
Está correto o que se afirma em:
E. I, II, III e IV.
3. Para declarar uma classe na linguagem Java, o desenvolvedor faz uso de uma sintaxe simples, de fácil compreensão e que facilita o processo de criação de atributos, propriedades e métodos.
A forma geral de uma declaração class que herda uma superclasse é:
A. class nome-subclasse extends nome-superclasse { //corpo da classe }
4. Quando tanto a superclasse quanto a subclasse definem construtores, o processo é um pouco mais complicado, pois os dois construtores devem ser executados. Nesse caso, devemos usar outra das palavras-chave do Java.
Marque a alternativa que apresente a palavra-chave a ser usada nessa situação.
E. super.
5. Ao criar uma aplicação em que a classe-pessoa é a classe-pai da classe-aluno, tem-se o seguinte:
Na classe-pessoa, o atributo de nome é privado, por isso o acesso não pode ser feito pela classe-aluno. Para
um sistema no qual a classe-pessoa não tem o nome alterado, o constructor pessoa (String nome) instancia a classe com o nome dado.
Analise as afirmações a seguir.
I. Quando uma classe chama super(), está chamando o construtor de sua superclasse imediatamente.
II. super( ) sempre referencia a superclasse imediatamente acima da classe chamadora.
III. super( ) deve ser sempre a primeira instrução executada dentro de um construtor de subclasse.
IV. A única forma de usar super é a seguinte: super().
V. Há uma segunda forma de super que age um pouco como this, exceto por referenciar sempre a superclasse da subclasse em que é usada.
Essa aplicação tem a forma geral a seguir: super.membro. Está correto o que se afirma em:
E. I, II, III e V.
Introdução à herança
1. Na orientação a objetos existe um importante conceito, que é a herança.
Marque a alternativa que melhor define herança em orientação a objetos.
E. A herança é um mecanismo para aprimorar as classes existentes.
2. A redução de um código permite maior facilidade para que o desenvolvedor possa revisar seu código, realizar a manutenção dos recursos e ter melhor visibilidade sobre a implementação de uma aplicação.
Quando é identificada a possibilidade de usar herança em um projeto?
D. Quando há relação em atributos em comum entre duas ou mais classes.
3. Em uma estrutura de programação orientada a objetos, o desenvolvedor deve estar atendo ao comportamento generalizado dos objetos, assim como ao processo de especialização das operações ou atributos.
Em relação à herança, o que é possível afirmar?
D. Em herança existem classes genéricas e especializadas.
4. As classes em Java podem ser classificadas em diferentes tipos. Em geral, para declarar as classes, é necessário criar um nome e certificar-se de que a classe tem um corpo, especificado dentro de um par de chaves { }. Métodos, atributos e palavras-chaves também devem ser declarados corretamente.
Analise o seguinte código de uma classe em Java:
public class Agua extends Bebida {
private String ph;
public String getPh(){ return ph;
}
public void setPh(String ph){
this.ph=ph;
}
}
C. A palavra-chave "extends" informa que a classe "Agua" é uma extensão da classe "Bebida".
5. As classes públicas podem ser acessadas por qualquer outra classe, enquanto as classes privadas podem ser acessadas apenas por métodos da mesma classe. As palavras-chave utilizadas são, respectivamente, private e public na linguagem de programação Java.
Analise o código a seguir:
public class Animal {
private int idAnimal;
private String nome;
private int idade;
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome = nome;
}
public int getIdade(){
return idade;
}
public void setIdade(int idade){ this.idade = idade;
}
}
=================== // ============================
public class Mamifero extends Animal{
private String gestacao;
private String especVida;
public String getGestacao(){ return gestacao;
}
public void setGestacao(String gestacao){ this.gestacao = gestacao;} public String getEspecVida(){ return especVida; } public void setEspecVida(String especVida){ this.especVida = especVida;
}
}
=============================//==========================
public class Cachorro Mamifero{
private String raca;
public String getRaca(){ return raca;
}
public void setRaca(String raca){ this.raca = raca;
}
}
============================//============================
public class Homem extends Mamifero{
private String etnia;
public String getEtnia(){ return etnia;
}
public void setEtnia(String etnia){
this.etnia = etnia;
}
}
E. A classe "Homem" é subclasse; a classe "Mamifero" é subclasse e superclasse; e a classe "Animal" é superclasse.
Introdução ao polimorfismo
1. O polimorfismo é um dos quatro pilares da programação de orientação a objetos, aplicado com o objetivo de manter um código limpo e organizado. Além disso, permite o compartilhamento de comportamentos e substituições de acordo com a necessidade do código.
Qual é a melhor forma de aplicação do polimorfismo?
C. Quando cada classe implementa o mesmo método de diferentes maneiras.
2. Para entendermos melhor e trabalharmos com polimorfismo, é de extrema importância sabermos alguns conceitos, como as "interfaces", pois, assim como em qualquer linguagem de programação, em Java os métodos, processos e objetos trabalham em conjunto.
Sobre as interfaces na programação orientada a objetos, é correto afirmar que:
C. diferentemente de uma classe, um tipo de interface não fornece nenhuma implementação.
3. O polimorfismo pode ser aplicado a diferentes contextos do mundo real. No entanto, na programação orientada a objetos e na linguagem Java, sua aplicação é mais específica. A forma principal do polimorfismo é a herança.
O que é correto afirmar sobre o polimorfismo?
D. Programar no específico é quando o programa determina o tipo de objeto no momento da execução.
4. O polimorfismo permite que classes abstratas recebam comportamento por meio de classes concretas.
Selecione a alternativa que representa a relação do polimorfismo com interfaces e superclasses.
D. Quando uma classe implementa uma interface, ela se obriga a utilizar e implementar todos os métodos da interface; com isso, temos um comportamento polimórfico.
5. Em programação orientada a objetos, polimorfismo é o princípio de que duas ou mais classes derivadas da mesma superclasse podem chamar métodos com a mesma assinatura, mas têm um comportamento diferente.
Considerando o conceito apresentado, analise o seguinte código:
D. O código 4 está escrito de forma errada, pois, para utilizarmos uma interface, devemos colocar a palavra-chave "implements", não "extends".
image1.png
image2.png
image3.png