Prévia do material em texto
• Pergunta 1
0,25 de 0,25 pontos
Suponha que você tenha que implementar um projeto que relaciona a classe pessoa
(que contém o método locomover ) a três tipos de veículos: carro (métodos acelera e freia ), bicicleta
(métodos pedala e freia ) e moto (métodos acelera
e freia ). Para melhorar o projeto, pode-se, por exemplo, adotar o padrão strategy . Para essa
questão, suponha as afirmativas abaixo.
I. A nova versão implementaria uma interface do tipo veículo , que contém os métodos acelera e freia.
II. A nova versão implementaria uma nova classe do tipo veículo , que contém os
métodos acelera e freia.
III. Na nova versão, as classes carro , bicicleta e moto
implementariam a interface veículo.
IV. Na nova versão, as classes carro , bicicleta e moto fariam parte da composição da classe veículo .
V. Na nova versão, as classes carro , bicicleta e moto fariam um relacionamento de cardinalidade 1:1
para a interface veículo.
Assinale a alternativa correta.
Resposta Selecionada:
As afirmativas I e III são verdadeiras.
Resposta Correta:
As afirmativas I e III são verdadeiras.
Feedback
da resposta:
Resposta correta. Você assinalou a alternativa correta. O
padrão strategy sempre implicará em criação de uma interface para
que haja apenas um ponto de relacionamento entre o agente e os
métodos relativos às classes aglutinadas pela interface.
• Pergunta 2
0,25 de 0,25 pontos
A validação de um campo pode ser realizada de duas maneiras: a verificação da estrutura e a verificação do
valor. No caso, por exemplo, do CPF, a verificação da estrutura poderá ser realizada com a utilização de
expressões regulares e, a verificação do valor, com codificação JavaScript direta. Para essa questão,
suponha o código para a validação estrutural abaixo.
<html>
<head>
<script language="JavaScript">
function VerificarCPF(f)
{
var exp_regCPF = ___;
if(exp_regCPF.test(f.___.value))
{
alert("___");
return true;
}
else
{
alert("___");
return true;
}
}
</script>
</head>
<body>
<form name="cadastro" method=”POST”
_1_="return VerificarCPF(this);">
<p>Número do CPF: <input type="text" name="cpf"></p>
<p><label><input type="submit" name="Verificar"
value="Verificar"></label></p>
</form>
</body>
</html>
Preencha os campos em aberto escolhendo itens da lista a seguir.
I. onSubmit
II. action
III. /^\d{3}\.\d{3}\.\d{3}\-\d{2}$/
IV. /^\d{0-9}\.\d{0-9}\.\d{0-9}\-\d{0-9}$/
V. cpf
VI. cadastro
VII. CPF não válido
VIII. CPF válido
Assinale a alternativa que contém a sequência correta.
Resposta Selecionada:
III; V; VIII; VII; I.
Resposta Correta:
III; V; VIII; VII; I.
Feedback da
resposta:
Resposta correta. Sua resposta está correta. Você acertou a expressão regular observando os
campos que representam valores e aqueles que representam a quantidade de ocorrências.
Além disso, fez uso do método test de forma apropriada e acertou quando usar o action e
quando usar o onSubmit.
• Pergunta 3
0,25 de 0,25 pontos
Dentro da programação, independentemente de ser a codificação de um sistema baseado em
páginas web ou não, temos sempre a preocupação de sua escalabilidade. Por exemplo, vamos supor
que temos a necessidade de criar uma página para e-commerce e que são estabelecidos descontos
diferenciados para cada tipo de forma de pagamento. Suponha que um programador fez uma primeira
versão da seguinte forma (código em PHP):
public function retornaDesconto($formaPG,$valor_compra)
{
if($formaPG==”Boleto”) {return $valor_compra*0.9;}
else if($formaPG==”Debito”) {return $valor_compra*0.95;}
else {return $valor_compra;}
}
Na implementação acima, temos o inconveniente de que, quando houver a necessidade de adicionar
mais uma forma de pagamento, deveremos adicionar mais uma estrutura do tipo “else if... else”.
Diante da situação, foram apresentadas algumas soluções:
Solução 1: criar uma classe para cada tipo de forma de pagamento. Todas as classes teriam um
método para retornar o valor com desconto – o nome e a lista de parâmetros seriam os mesmos para
todas as classes. Por exemplo, para a classe boleto, a implementação seria:
class Boleto
{
public function ValorComDesconto($valor_compra)
{
return $valor_compra*0.9;
}
}
Solução 2: criar uma interface na qual todas as classes devem implementá-la. Assim, a solução
ficaria:
interface formaPG
{
public function ValorComDesconto($valor_compra);
}
class Boleto implements formaPG
{
public function ValorComDesconto($valor_compra)
{
return $valor_compra*0.9;
}
}
Diante dessas duas versões de implementação, analise as afirmações a seguir.
I. Não implementaria a “solução I” pois, assim que for determinado o tipo de pagamento, para criar um
objeto relativo à classe pertinente deve-se fazer uma estrutura de “if...else if...”
II. Implementaria ambas as soluções, pois ambas apresentam as mesmas vantagens e desvantagens.
III. Não implementaria a “solução II” pois as classes ficariam não flexíveis, ou seja, todas deveriam
seguir o mesmo padrão, o que dificultaria a reutilização do código.
IV. Implementaria a “solução II”, pois a modificação do código para inserir ou retirar uma forma de
pagamento, ficaria mais ágil e fácil de ser realizada.
V. Implementaria a “solução I”, pois é mais fácil de entender.
Diante das afirmações acima, selecione a opção correta.
Resposta Selecionada:
As afirmativas I e IV são verdadeiras.
Resposta Correta:
As afirmativas I e IV são verdadeiras.
Feedback da
resposta:
Resposta correta. Sua resposta está correta. A “solução 2” representa
um padrão chamado de Strategy (estratégia). É um dos padrões GOF
usados para a linha comportamental do sistema.
• Pergunta 4
0 de 0,25 pontos
Várias páginas oferecem a possibilidade de interação com o usuário por meio de formulários. Para um
processamento correto, as informações fornecidas devem ser validadas, para que possam ser
processadas no servidor. Considerando isso, analise as afirmações a seguir.
I. Em um modelo de III camadas, a validação do formulário deve ocorrer na camada I, tanto em
relação à estrutura, quanto em relação à regra de negócio.
II. A validação de estrutura deve ocorrer na camada I e a validação em relação às regras de negócio
na camada II.
III. É comum usar, para a validação em relação à estrutura, JavaScript e, para as regras de negócio,
comumente usa-se PHP.
IV. Toda validação é realizada na camada II, aplicando-se funções escritas em PHP.
A partir das observações realizadas, marque a alternativa correta.
Resposta
Selecionada:
As afirmativas I e III são verdadeiras.
Resposta
Correta:
As afirmativas II e III são verdadeiras.
Comentários
da Resposta:
Respostas incorretas. Sua resposta está incorreta. Para responder
essa questão, pense que os campos do formulário poderão ser
usados em outros sistemas (por exemplo, o CPF é igual, em relação
à estrutura, é o mesmo em todos os sistemas). Na mesma linha de
pensamento, reflita que as regras de negócio são específicas a cada
sistema. Sendo assim, pode-se haver uma separação funcional entre
essas duas visões.
• Pergunta 5
0,25 de 0,25 pontos
Temos inúmeros padrões de projeto que podemos aplicar no desenvolvimento de nossas páginas,
dentre os quais, podemos mencionar o padrão GOF e o padrão MVC. Analise as afirmações abaixo,
classificando-as como “V”, se forem verdadeiras, ou “F”, se forem falsas.
(_) O padrão GOF é mais restritiva, ou seja, analisa um aspecto em específico.
(_) O padrão GOF contempla três grupos: criação; estrutural e comportamental.
(_) O padrão GOF é o preferido para a implementaçãode páginas.
(_) O padrão MVC é totalmente divergente em relação ao GOF.
Assinale a alternativa que que apresenta a sequência correta.
Resposta Selecionada:
F; V; V; F.
Resposta Correta:
F; V; V; F.
Feedback
da
resposta:
Resposta correta. Resposta correta. Realmente o padrão MVC é o
preferido para a implementação das páginas, pois realiza a abstração
do sistema sob vários pontos de vista. Essa decomposição funcional e
estrutural, utilizando elementos do GOF, permite que os vários
aspectos demandados pelas páginas possam ser supridos.