Questão de Engenharia de Software — UML — FGV 2024
- Código
- fg165463
- Banca
- FGV
- Órgão
- CM SP
- Ano
- 2024
- Cargo
- Cons Leg ( )
- AV – F – F.
- BV – V – F.
- CF – V – F.
- DF – V – V.
- EV – F – V.
GabaritoB — V – V – F.
Gabarito: letra B — sequência V – V – F. As duas primeiras afirmativas descrevem corretamente a natureza dos sistemas orientados a objetos (objetos com estado local e operações) e o processo de projeto orientado a objetos (projetar classes e seus relacionamentos). A terceira é falsa: sistemas orientados a objetos são, em geral, mais fáceis de mudar do que os desenvolvidos com abordagens funcionais, justamente por causa do encapsulamento e da modularidade.
O paradigma orientado a objetos (OO) organiza o software como um conjunto de objetos que interagem entre si. Cada objeto é uma entidade que combina estado (seus atributos, os dados que ele guarda) e comportamento (as operações que ele oferece para manipular esse estado). Essa é a essência do encapsulamento: o objeto é dono do seu próprio estado e só o expõe por meio de operações bem definidas. Quando um objeto precisa de algo de outro, ele envia uma mensagem — ou seja, invoca uma operação do outro objeto — e é assim que a interação acontece. Essa é a base de tudo que vem depois: classes, herança, polimorfismo e os próprios diagramas da UML.
O projeto orientado a objetos é a fase em que o desenvolvedor define, no nível de abstração do projeto, quais serão as classes do sistema, quais atributos e operações cada uma terá e como elas se relacionam (associação, agregação, composição, dependência, herança). As classes funcionam como "moldes" ou "plantas" que definem os objetos que existirão no sistema e como eles se comunicam. É nessa fase que se desenha o diagrama de classes, o diagrama mais importante da UML para representar a estrutura estática do sistema. O projeto OO não é sobre escrever código, mas sobre definir a arquitetura lógica que o código vai seguir.
A grande vantagem do paradigma OO em relação às abordagens funcionais (estruturadas) é a manutenibilidade. Como o estado de cada objeto está encapsulado e as operações são bem definidas, uma mudança em um objeto tende a ter impacto localizado, sem propagar efeitos colaterais para o resto do sistema. Em sistemas funcionais, o estado é frequentemente global ou compartilhado, e uma alteração em uma função pode quebrar outras partes que dependem dela. Por isso, a afirmativa III está errada: sistemas OO são, na verdade, mais fáceis de mudar, não mais difíceis. Essa é uma das razões pelas quais a OO se tornou o paradigma dominante no desenvolvimento de software.
A pegadinha desta questão está na terceira afirmativa: ela inverte o senso comum da engenharia de software. O candidato que não domina os benefícios da OO pode achar que "mais difícil de mudar" faz sentido, mas a realidade é o oposto. A banca explora exatamente essa inversão de conceito. Guarde a regra: encapsulamento e modularidade = facilidade de manutenção e evolução.
A afirmativa está correta. Sistemas orientados a objetos são compostos de objetos que interagem entre si, cada um mantendo seu próprio estado local (atributos) e oferecendo operações (métodos) que atuam sobre esse estado. Essa é a definição fundamental do paradigma OO, que combina dados e comportamento em uma única entidade. O encapsulamento garante que o estado interno de um objeto não seja acessado diretamente por outros objetos, mas apenas por meio das operações públicas que ele expõe. A interação entre objetos ocorre por troca de mensagens, ou seja, um objeto invoca uma operação de outro.
A afirmativa está correta. O processo de projeto orientado a objetos envolve projetar as classes de objetos e os relacionamentos entre elas. As classes definem a estrutura dos objetos (atributos e operações) e os relacionamentos (associação, agregação, composição, dependência, herança) estabelecem como esses objetos se conectam e colaboram. É nessa fase que se cria o modelo de classes, que serve de base para a implementação. O diagrama de classes da UML é a principal ferramenta para representar esse projeto.
A afirmativa está incorreta. Sistemas orientados a objetos são, em geral, mais fáceis de mudar do que sistemas desenvolvidos com abordagens funcionais. Isso ocorre porque o encapsulamento isola o estado interno de cada objeto, e a modularidade permite que alterações em um objeto tenham impacto localizado. Em sistemas funcionais, o estado é frequentemente compartilhado e as funções dependem de dados globais, o que torna as mudanças mais arriscadas e propensas a efeitos colaterais. A banca inverteu o conceito: a OO foi criada, entre outros motivos, para facilitar a manutenção e a evolução do software.
Gabarito: letra B — sequência V – V – F.
Link permanente: /questoes/fg165463