

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Sem prejuízo de funcionalidade e eficiência de processamento, as linhas 34, 35 e 36 poderiam ser substituídas, respectivamente, pelas linhas de código abaixo.
A<double,int> a = b; a.put(d,i);
a.get(i);
a.put (d);
Certo
Errado
A instrução da linha 1 poderia ser substituída por typedef C(a,b)(a > b)? a : b; sem causar erros de sintaxe e sem alterar a funcionalidade do trecho de código apresentado.
void f_A(int i, int j)
{
Mat = new double*[i];
int a = 0; while (a < i)
{
*(Mat + a) = new double[j];
int b = 0; do
{
*(*(Mat + a)+ b) = a + b++;
} while (b < j);
a++;
}
}
Certo
Errado
A linha 23 poderia ser substituída por void resize(int dim){Elements = new T[dim]; Index = new int[dim];} sem causar erro de compilação.
Ao se eliminar a linha 4 e substituir a linha 14 pela instrução double (*function) (double,double); não haverá mudança de funcionalidade do trecho de código apresentado acima, nem serão introduzidos erros de sintaxe.
A definição da interface de uma classe de objetos é fundamental para o sucesso da concepção orientada a objetos na obtenção dos princípios e no respeito aos critérios de modularidade. Nessa definição, diversas primitivas de uma classe podem ser declaradas mascaradas ou escondidas do sistema no qual a classe está inserida. Isso evita que a integridade de uma classe seja violada por objetos alheios. No trecho de código apresentado, observa-se que os atributos "Elements" (l.10) e "Index" (l.11) não podem ser acessados por objetos que estabeleçam relação de clientela com a classe A<T,U>, somente podendo ser acessados de forma direta pelos procedimentos e pelas funções da própria classe A<T,U> e de suas classes herdeiras.
Certo
Errado
Considere as seguintes afirmações relativas à linguagem C++:
I. É orientada a objetos.
II. Dispõe de tipificação forte.
III. É adequada para processamento em tempo real.
As afirmações corretas são:
A eliminação do trecho "= 0" na instrução "virtual A<T,U> & operator=(const A<T,U> &) = 0;" (l.4) provocaria um erro de compilação na linha 18.
Certo
Errado
Nas linhas 10 e 11 do trecho de código mostrado, verifica-se a definição de dois atributos da classe A<T,U>. Esses atributos estabelecem relações de clientela entre a classe A<T,U> e classes representadas pelas classes genéricas T e U. Devido à generalidade dos tipos T e U, somente será possível estabelecer relações de clientela definitivas no momento da declaração de uma variável do tipo da classe A<T,U>, como observado na linha 34.
Certo
Errado
A função "get" acessada no processamento da instrução da linha 35 é aquela declarada na linha 20, dentro do escopo da classe B<T>.
Certo
Errado
A redefinição/definição, a sobrecarga de funções e a substituição de funções são mecanismos utilizados em um ambiente orientado a objetos para promover a evolução, a extensão e o reúso eficiente de componentes de software. Porém, no trecho de código mostrado, devido às relações estabelecidas entre as classes A<T,U> e B<T>, não é possível encontrar nenhum uso desses mecanismos.
Certo
Errado
A função "Fct_1", definida entre as linhas 16 e 39, exige, como primeiro argumento, um inteiro. Apesar dessa exigência, não haverá erro, em fase de compilação, na linha 56 do trecho de código ao lado, ao ser enviada a enumeração "d_2" de tipo "Def" (l.12) na chamada dessa função.
Certo
Errado
Na definição da função "get" (l.20), não poderá ser realizada chamada à função "resize" (l.23).
Certo
Errado
A herança é uma relação entre classes de objetos que permite tanto a generalização quanto a especialização de uma classe, constituindo uma das ferramentas mais importantes encontradas nas linguagens ditas orientadas a objetos para o reúso e a extensão de componentes de software. No trecho de código apresentado no texto, pode-se verificar, na linha 14, uma relação de herança entre classes capazes de implementar a noção de template em C++.
Certo
Errado
A declaração de classes virtuais puras permite o uso eficiente do polimorfismo e do enlace dinâmico de objetos dentro de um ambiente do tipo orientado a objetos. No trecho de código apresentado, a classe A<T,U> é uma classe virtual pura, e o polimorfismo e o enlace dinâmico podem ser observados na linha 34. A linha 36 é também um caso particular do polimorfismo e do enlace dinâmico, em que uma superclasse é capaz de se adaptar ao código declarado somente em suas classes derivadas.
Certo
Errado