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 matrícula dos candidatos em uma instituição de ensino superior é realizada mediante apresentação dos documentos pessoais, além de documentos específicos de acordo com a natureza da reserva de vaga escolhida pelo candidato (negro, pardo ou indígena; baixa renda e deficiência), certificado de alistamento militar (para homens maiores de 18 anos) e a certificação de e quitação eleitoral (no caso de eleitores). Para candidatos menores de idade, a matrícula deverá ser realizada pelos pais ou por um procurador com documento de identificação (RG) e procuração.
A seguir, é mostrado como se desenvolve o processo de matrícula:

Considerando as informações presentes no texto apresentado, discorra sobr…
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…
Em 2016, o Ipea publicou uma pesquisa denominada “Sobrenomes e Ancestralidade no Brasil” [1], que buscava determinar a ancestralidade dos sobrenomes dos brasileiros.
Na primeira fase do trabalho, foram obtidos 71.404 pares de sobrenomes-ancestralidade a partir de diversas fontes históricas. Em uma segunda fase, usando nomes de 46,8 milhões de brasileiros encontrados na Relação Anual de Informações Sociais (RAIS) Migra de 2013, foram obtidos dois sobrenomes para cada indivíduo, resultando em uma base com 530 mil sobrenomes únicos.
Nesse ponto, ficou claro que muitos sobrenomes únicos não estavam na base criada a partir da fonte histórica. O motivo principal eram erros de digitação. Então, foi…



