Após observar as Figuras 12(a), 12(b) e 12(c), analise as a...

Próximas questões
Com base no mesmo assunto
Q1275215 Programação
Para responder à questão, considere as Figuras 12(a) e 12(b). A Figura 12(a) mostra um diagrama de Classes, da UML, a partir do qual implementou-se os programas principal e secundários, na linguagem de programação Java. Sobre esses programas em Java, considere os seguintes aspectos: (1) todos os programas foram implementados dentro de uma package chamada "ciga"; (2) os programas estão funcionando corretamente; (3) os métodos "get" permitem retornar o conteúdo de uma variável, por exemplo, "getR" retorna o conteúdo de "r"; e (4) a variável "x" ainda não foi declarada em nenhum dos programas. A Figura 12(b) mostra, intencionalmente, apenas parte do código fonte, tendo-se inserido, no local apontado pela seta nº 1, um retângulo de modo a ocultar o código fonte existente nesse local. Nas Figuras 12(b) e 12(c) foram inseridos, intencionalmente, retângulos nos locais apontado pelas setas de nº 1, 3 e 4, de modo a ocultar qualquer código existente nesses locais. 

Após observar as Figuras 12(a), 12(b) e 12(c), analise as assertivas abaixo: I. A classe "B", ao ser implementada em um programa em Java, permitirá a violação do princípio fundamental da orientação a objeto chamado encapsulamento. I. Todo objeto da classe "A", ao ser criado, terá somente as variáveis de instância "r" e "s". III. Além dos métodos já existentes na classe "A", é possível, também, criar mais o seguinte, na Figura 12(a): + A(varR : int);
Quais estão corretas?
Alternativas

Comentários

Veja os comentários dos nossos alunos

Questão aparentemente dócil sobre PROGRAMAÇÃO, porém se você está em divida com padrões de projeto( GOF ) vai ser complicado;

I. Correta. Eu sei que você está falando: "Mas Max, olha o 2ª aspectos do enunciado da questão: os programas estão funcionando corretamente; Como irá violar o encapsulamento se esta funcionando?"

Prontamente eu falo: Funcionar é diferente de estar correto. Vocês entenderão nesta imagem: https://image.slidesharecdn.com/cmoderno2019-190419232425/95/escrevendo-c-moderno-2019-mvpconf-27-638.jpg?cb=1555716455

A nossa querida Gangue dos 4 ( Gof) fala em seu livro que HERANÇA VIOLA O ENCAPSULAMENTO! Pergunto para vocês: Há herança na questão? Observem a figura 12 (a). Simples e direto

.

II. Correta, olhando a figura 12 (a) vemos que somente temos 2 atributos na classe A , ambos privados, r e s;

.

III. Correta, estaremos criando métodos com o mesmo nome, mas com assinaturas diferentes, ou seja, sobrecarga de métodos, um tipo de polimorfismo ;

Se você errou não se culpe, acredito que esta foi a questão mais difícil desta prova!

GABARITO ALTERNATIVA E

A classe B não respeita o encapsulamento porque seus atributos estão públicos.

"O encapsulamento protege o acesso direto (referência) aos atributos de uma instância fora da classe onde estes foram declarados. Esta proteção consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados métodos para manipular de forma indireta os atributos da classe"

https://pt.wikibooks.org/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Objetos/Encapsulamento

Para aplicar o conceito de encapsulamento, que consiste em "esconder" o atributo, os atributos da classe B deveriam ser privados, além de ser implementados métodos get e set para manipulá-los.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo