Considere que uma equipe do Ipea desenvolveu um módulo Python que oferece serviços muito úteis aos demais sistemas desse instituto. As funções que compõem esse módulo são exibidas a seguir, sendo o código relativo a cada uma dessas funções irrelevante para a resolução dessa questão.
# Módulo m01.py – V1
def func01(parm1, parm2):
# código irrelevante para a questão
return
def func02(parm1, parm2):
# código irrelevante para a questão
return
def func03():
# código irrelevante para a questão
return
def func04(parm1, parm2):
# código irrelevante para a questão
return
def func05(parm1, parm2, parm3):
# código irrelevante para a questão
return
# fim do módulo m01.py
A API desse módulo é composta por todas as suas funções. Essa API foi projetada de modo que os demais módulos que usem os serviços por ela definidos tenham de implementar parte da lógica desses serviços. Isso é exemplificado pelo módulo main, exibido a seguir.
# Módulo main.py
from m01 import *
v1=5
x=func01(v1-3, v1-2)
match x:
case 1:
func02(v1, v1+1)
func03()
func04(0, 1)
case 2:
func02(v1+1, v1)
func04(1, 0)
case 3:
func03()
func04(0, 1)
case 4:
func02(v1, v1+1)
func03()
case _:
func05(v1, v1+1, v1+2)
# fim do Módulo main.py
Considere que, posteriormente, devido a mudanças em alguns dos requisitos relativos aos serviços disponibilizados pelo módulo m01, ele teve de ser alterado para dar suporte às novas funcionalidades. Para tal, foram feitas alterações no código das funções previamente existentes, além da adição da função func06. A nova versão do módulo m01 passou a ser a seguinte:
# Módulo m01.py – V2
def func01(parm1, parm2):
# código irrelevante para a questão
return
def func02(parm1, parm2):
# código irrelevante para a questão
return
def func03(parm1):
# código irrelevante para a questão
return
def func04(parm1, parm2):
# código irrelevante para a questão
return
def func05(parm1, parm2, parm3):
# código irrelevante para a questão
return
def func06():
# código irrelevante para a questão
return
# fim do módulo m01.py
As alterações feitas no módulo m01 desencadearam alterações no código dos módulos que usam os serviços por ele disponibilizados. Isso pode ser visto no exemplo a seguir:
# Módulo main.py
from m01 import *
v1=5
x=func01(v1-3, v1-2)
match x:
case 0:
func02(v1, 0)
case 1:
func03(v1+1)
func04(0, 1)
case 2:
func04(1, 0)
case 3:
func03(v1)
case 4:
func02(0, v1+1)
func03(v1+1)
case _:
func05(v1, v1+1, v1+2)
func06()
# fim do Módulo main.py
Observe que as alterações realizadas no módulo m01 fizeram com que o módulo main tivesse de ser alterado para que a nova implementação de m01 funcionasse a contento.
Considere as informações apresentadas e redija um texto dissertativo contínuo de 35 a 45 linhas (eventuais trechos de código inseridos nesse texto não serão considerados) em que, de forma fundamentada:
• indique as duas falhas no design do módulo m01, à luz dos conceitos de encapsulamento (ocultação de informação) e acoplamento;
• aponte e explique o efeito que essas falhas no design do módulo m01 terão na evolução e na reutilização futura desse módulo;
• apresente, também em texto dissertativo, a descrição de uma solução, não baseada em classes e métodos, para resolver os problemas de acoplamento do módulo m01, devendo essa descrição conter:
– o objetivo do padrão de design Façade;
– a descrição da solução, baseada nesse padrão de design, a qual deve:
→ conter todas as funções existentes na versão 2 (V2) do módulo m01, sem modificação no código dessas funções;
→ utilizar obrigatoriamente a variável __all__ para reforçar o encapsulamento;
• apresente dois aspectos positivos dessa solução, à luz dos conceitos de encapsulamento (ocultação de informação) e acoplamento.
CONTEÚDO EXCLUSIVO
Confira nossos planos especiais de assinatura e desbloqueie agora!
Ops! Esta questão ainda não tem resolução em texto.
Ops! Esta questão ainda não tem resolução em vídeo.
Questões Relacionadas
A necessidade de grandes quantidades de memória e o alto custo da memória principal têm levado ao modelo de sistemas de armazenamento em dois níveis. O compromisso entre velocidade e custo é encontrado por meio do uso de uma pequena quantidade de memória principal (inicialmente até 640 kbytes em microcomputadores do tipo IBM-PC usando sistema operacional DOS) e de uma memória secundária muito maior (vários milhões de bytes).
Como apenas a informação que está na memória principal pode ser acessada diretamente, a organização do fluxo de informação entre as memórias primária e secundária é extremamente importante. A organização desse fluxo pode ser realizada utilizando-se um mecanismo simples e…
Plano de Dados Abertos do Banco Central do Brasil
Maio/2023 – Abril/2025
A Política de Dados Abertos do Poder Executivo Federal foi instituída pelo Decreto nº 8.777, de 11 de maio de 2016, e tem por objetivo a disponibilização na internet – por parte de órgãos e entidades da administração pública federal direta, autárquica e fundacional – de dados e informações acessíveis ao público que possam ser livremente lidos por máquina, usados, cruzados e reutilizados, fomentando-se o controle social, o desenvolvimento tecnológico, o aprimoramento da cultura de transparência pública e a inovação nos diversos setores da sociedade. Atendendo ao disposto no referido Decreto, o Ouvidor, na qualidade de au…
Brasil vira alvo de ataque DDoS que transforma
roteadores em bots
Por: Da Redação da Abranet – 05/06/2024
O Brasil é um dos principais alvos de ataque do malware CatDDoS, que explora mais de 80 falhas de segurança em softwares de roteadores, equipamentos de rede, entre outros, para se infiltrar nos dispositivos vulneráveis, cooptá-los e transformá-los em bots que conduzem ataques de DDoS (distributed denial-of-service ou ataque de negação em serviço, em português). O alerta é da consultoria de segurança digital, Solo Network.
O malware tem como alvo provedores de serviços em nuvem, serviços de educação, pesquisa científica, transmissão de informações, administração pública, construção …



