Na programação orientada a objetos uma relação é uma conexão semântica entre classes que permite uma classe conhecer os atributos; as operações; e, as relações de outras classes. As relações que podem ser estabelecidas entre classes são: associações; agregações; dependências; generalizações; e, especificações. Considerando os tipos de relações entre classes, assinale a afirmativa INCORRETA.
- A)Composição: é um tipo especial de agregação. Cada componente dentro de uma composição pode pertencer somente a um todo.
Correta: a composição é mesmo uma forma especial e mais forte de agregação, em que a parte costuma depender do todo.
- B)Classes abstratas: são modelos para suas classes derivadas. A propriedade fundamental de classes abstratas é poder criar suas próprias instâncias.
Errada: classes abstratas são modelos para classes derivadas, mas não podem ser instanciadas diretamente.
- C)Associação: é uma conexão conceitual ou semântica entre classes. Quando uma associação conecta duas classes, cada classe envia mensagens à outra em um diagrama de colaboração. Uma associação é uma abstração das ligações que existem entre instâncias de objeto.
Correta: associação é uma conexão semântica entre classes e pode ser vista como abstração das ligações entre objetos.
- D)Herança: é a propriedade pela qual instâncias de uma classe filha (ou subclasse) podem acessar tanto dados quanto comportamentos (métodos) associados a uma classe pai (ou superclasse). A herança sempre é transitória, de modo que uma classe pode herdar características de superclasses de nível superior.
Correta: a herança permite que a subclasse acesse atributos e comportamentos da superclasse, com transitividade entre níveis.
- E)Agregação: é um tipo especial de associação que expressa um acoplamento mais forte entre classes. Uma das classes desempenha um papel importante dentro da relação com as outras classes. A agregação permite a representação de relações, tais como “mestre e escravo”, “todo e parte de” ou “composto e componentes”. Os componentes e a classe que constituem são uma associação que configura um todo.
Aceitável no sentido de agregação como relação todo-parte, mas a redação mistura conceitos e exagera ao falar em acoplamento mais forte, pois isso descreve melhor composição.
Gabarito: B
Em orientação a objetos, as relações entre classes ajudam a modelar o mundo real com mais clareza: associação, agregação, composição, herança e dependência. A associação indica que uma classe se relaciona com outra; a agregação e a composição representam relações de todo-parte, sendo a composição mais forte, porque a parte normalmente não vive sem o todo. Já a herança permite reaproveitar atributos e métodos de uma superclasse em uma subclasse, com a ideia de especialização. As classes abstratas entram como um molde: elas servem para definir uma estrutura comum, mas não podem ser instanciadas diretamente. Por isso, a alternativa B está errada, porque diz exatamente o contrário do que vale na prática e na teoria de POO: classe abstrata não cria objeto por si só, ela apenas orienta as classes derivadas.