Magna Concursos
2284894 Ano: 2014
Disciplina: TI - Desenvolvimento de Sistemas
Banca: UFSCAR
Orgão: UFSCAR
Provas:

O código a seguir, escrito em uma típica linguagem orientada a objetos, trata da renderização (Render) contínua de múltiplas camadas (Layers) em uma cena de um jogo (Scene). Analise-o:

interface Layer {

void Render();

}
class Scene {

public Layer[] Layers;
private int NextLayer;
public int GetNextLayer () { return NextLayer; }
public void SetNextLayer (int p) { this.NextLayer = p; }
public Layer GetCurrentLayer () { return Layers[NextLayer];

}
}
class MainClass {

public static void Main (string[] args) {

var numLayers = 10;
var scene = new Scene { NextLayer = 0, Layers = new

Layer[numLayers] };

while (true) {

Layer l = scene.GetCurrentLayer();
l.Render();
int currentLayer = scene.GetNextLayer();

currentLayer ++;

if(currentLayer >= scene.Layers.Length)

currentLayer = 0;

scene.SetNextLayer(currentLayer);

} } }

Considere também as seguintes modificações no código:

M1. Mover a lógica de rodízio, que atualmente está implementada no método “Main” da classe “MainClass” para dentro de um método “mainloop” na própria classe “MainClass”.

M2. Transformar o atributo “Layers” da classe “Scene” de “public” para “private”.

M3. Transformar o atributo “NextLayer” da classe “Scene” de “private” para “public”.

M4. Adicionar um construtor à classe “Scene”, que recebe como parâmetro o número de camadas e inicializa o vetor de camadas “Layers”. Modificar o método “Main” da classe “MainClass” para utilizar esse construtor ao criar a instância “scene”.

M5. Transformar os métodos “SetNextLayer” e “GetNextLayer” de “public” para “private”.

M6. Adicionar um método na classe “Scene” que recebe como parâmetro um objeto do tipo “Layer” e o adiciona ao vetor de camadas “Layers”. Utilizar esse método na classe “MainClass” para adicionar camadas à cena.

M7. Mover a lógica de rodízio, que atualmente está implementada na classe “MainClass” para dentro do método “GetCurrentLayer” da classe “Scene”.

M8. Adicionar um construtor à classe “MainClass” , que recebe como parâmetro o número de camadas e inicializa o vetor de camadas “Layers”. Modificar o método “Main” da classe “MainClass” para utilizar esse construtor e criar uma instância de “MainClass”.

M9. Remover os métodos “SetNextLayer” e “GetCurrentLayer” da classe “Scene”.

Qual das alternativas abaixo descreve um conjunto de modificações que, quando realizadas em conjunto, resulta em um código onde os princípios da orientação a objetos são mais bem aplicados?

 

Provas

Questão presente nas seguintes provas

Técnico de TI

60 Questões