INEP, ENADE
questão 11 de 19, número 20 na prova
Rigidez é a tendência de um software ser difícil de modificar. Cada mudança causa uma cascata de mudanças subsequentes em módulos dependentes. O trecho de código a seguir faz parte de um sistema com suporte à comunicação entre diferentes dispositivos de comunicação via rádio (modems):
1 struct Modem { enum Type {hayes, courrier, ernie) type; };
2 struct Hayes { 3 Modem::Type type;
4 // Detalhes do modem tipo Hayes 5 };
6 struct Courrier { 7 Modem::Type type;
8 // Detalhes do modem tipo Courrier 9 };
10 struct Ernie { 11 Modem::Type type;
12 // Detalhes do modem tipo Ernie 13 };
14 void LogOn(Modem& m, string& frq, string& user, string& pw) { 15 if (m.type == Modem::hayes)
16 OpenHayesChannel((Hayes&)m, frq);
17 else OpenCourrierChannel((Courrier&)m, frq);
18 // depois de conectado, enviar user, pw, etc.
19 // (continua)
Disponível em: Acesso em: 15 jun. 2019 (adaptado).
Nesse trecho, cada tipo de modem tem suas particularidades e foram criadas estruturas específicas para cada tipo (linhas 2 a 13). Um "enumeration" (linha 1) é utilizado para identificar o tipo de modem. O procedimento (linhas 14 a 19) é responsável por realizar a conexão a um modem. Dados o tipo LogOn do modem (m), a frequência (frq), o nome de usuário (user) e a senha (pw), inicialmente, é feita a abertura do canal de comunicação, que corresponde a uma chamada específica para cada tipo de modem (linhas 15 a 17). Como os modems do tipo e são similares em termos de abertura de Courrier Ernie canal, o programador decidiu otimizar o código, utilizando a função do modem para ambos Courrier (OpenCourrierChannel - linha 17). Uma vez conectado, o código continua o processo de na LogOn linha 18 em diante.
Nesse projeto do código um sintoma de rigidez é que
Questões parecidas
Ver todas desta matériaAinda não há outras questões de Engenharia de Computação em outras provas do acervo.