Gabarito: e)
Vamos analisar cada afirmação para entender o porquê da resposta correta ser a alternativa e.
I. Prototype é um padrão de criação, não estrutural. Ele tem como objetivo criar novos objetos copiando um protótipo existente, evitando a criação direta via construtor. Portanto, a afirmação I está incorreta.
II. Singleton tem por objetivo garantir que uma classe tenha exatamente uma única instância e fornecer um ponto global de acesso a essa instância. A afirmação diz "ao menos uma instância", o que está incorreto, pois o padrão Singleton garante uma única instância. Logo, a afirmação II está incorreta.
III. Template Method é um padrão comportamental que define o esqueleto de um algoritmo em uma operação, deixando alguns passos para serem implementados pelas subclasses. Essa definição está correta.
IV. Iterator é um padrão comportamental que fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação interna. Essa definição está correta.
Portanto, apenas as afirmações III e IV estão corretas, o que corresponde à alternativa e.
Checagem dupla confirma que Prototype é padrão de criação, Singleton garante uma única instância, e Template Method e Iterator são comportamentais com as descrições corretas. Assim, a alternativa e é a correta.
Vamos analisar cada afirmação para entender o porquê da resposta correta ser a alternativa e.
I. Prototype é um padrão de criação, não estrutural. Ele tem como objetivo criar novos objetos copiando um protótipo existente, evitando a criação direta via construtor. Portanto, a afirmação I está incorreta.
II. Singleton tem por objetivo garantir que uma classe tenha exatamente uma única instância e fornecer um ponto global de acesso a essa instância. A afirmação diz "ao menos uma instância", o que está incorreto, pois o padrão Singleton garante uma única instância. Logo, a afirmação II está incorreta.
III. Template Method é um padrão comportamental que define o esqueleto de um algoritmo em uma operação, deixando alguns passos para serem implementados pelas subclasses. Essa definição está correta.
IV. Iterator é um padrão comportamental que fornece uma maneira de acessar sequencialmente os elementos de um objeto agregado sem expor sua representação interna. Essa definição está correta.
Portanto, apenas as afirmações III e IV estão corretas, o que corresponde à alternativa e.
Checagem dupla confirma que Prototype é padrão de criação, Singleton garante uma única instância, e Template Method e Iterator são comportamentais com as descrições corretas. Assim, a alternativa e é a correta.