Questões de Tecnologia da Informação · ProGPe UFSCAR

Tecnologia da InformaçãoOutros temasProGPe UFSCAR 2014

UFSCAR

Questão de Tecnologia da Informação

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) { 30 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?

Sua resposta

Mais questões de Outros temas

Questão de prova oficial, com o gabarito definitivo publicado pela banca. Reproduzida para fins de estudo.