SóProvas


ID
1271152
Banca
MPE-RS
Órgão
MPE-RS
Ano
2012
Provas
Disciplina
Programação
Assuntos

Considere as seguintes afirmações acerca da linguagem de programação Java.
I. Esta linguagem de programação combina características de linguagens tipadas estatica e dinamicamente. Como em uma linguagem de tipagem estática, cada variável e elemento de programação em Java têm um tipo que é conhecido a tempo de compilação, de modo que, a tempo de execução, não há necessidade, normalmente, de se verificar a validade de atribuições entre tipos enquanto o código está sendo executado. Ao contrário das linguagens tradicionais C ou C++, Java também mantém informações a tempo de execução sobre objetos e usa isso para permitir comportamento verdadeiramente dinâmico. O código Java pode carregar novos tipos em tempo de execução e usá- los de forma totalmente orientada a objetos, permitindo polimorfismo.
II. Variáveis declaradas como membros de uma classe são definidas com valores default, se não forem inicializadas explicitamente. Nesse caso, o default para os tipos numéricos é zero; para caracteres, é o caractere nulo (\0); e, para as variáveis booleanas, é o valor falso.
III. Objetos são alocados com o operador NEW usando um construtor de objeto. Um construtor é um método especial com o mesmo nome de sua classe e com nenhum tipo de retorno. É chamado quando uma nova instância da classe é criada, o que dá à classe uma oportunidade para definir o objeto para uso. Construtores, como ocorre com outros métodos, podem aceitar argumentos e podem ser sobrecarregados, embora não sejam herdados como os outros métodos.
Quais estão corretas?

Alternativas
Comentários
  • O gabarito está INCORRETO! A resposta correta é a D! 

    Veja o que o texto afirma no trecho em negrito:

    "I. Esta linguagem de programação combina características de linguagens tipadas estatica e dinamicamente. Como em uma linguagem de tipagem estática, cada variável e elemento de programação em Java têm um tipo que é conhecido a tempo de compilação, de modo que, a tempo de execução, não há necessidade, normalmente, de se verificar a validade de atribuições entre tipos enquanto o código está sendo executado. Ao contrário das linguagens tradicionais C ou C++, Java também mantém informações a tempo de execução sobre objetos e usa isso para permitir comportamento verdadeiramente dinâmico. O código Java pode carregar novos tipos em tempo de execução e usá- los de forma totalmente orientada a objetos, permitindo polimorfismo."

    Este trecho destaco afirma categoricamente que C ou C++ não mantem informações a tempo de execução sobre objetos e isso é um absurdo pois, ao contrário da linguagem C, C++ é orientada a objetos e mantem sim informações de tipo em tempo de execução, o próprio operador de cast necessita desta informação senão não poderia ser implementado. O nome do recurso que controla as informações em tempo de execução no C++ tem um nome bem sugestivo RTTI (Run Time Type Information).

    Fontes: 

    https://msdn.microsoft.com/pt-br/library/b2ay8610.aspx 

    http://pt.wikipedia.org/wiki/Runtime_Type_Information

    http://edn.embarcadero.com/article/10093


  • Provavelmente a o foco está no trecho "linguagens tradicionais" significando que o C ou C++ não nasceram com esse tipo de suporte. No entanto, concordo que é uma questão de português e a questão tem base para ser anulada.