Skip to content
Informática · 11.º Ano

Ideias de aprendizagem ativa

Herança e Polimorfismo

Aprender herança e polimorfismo através de atividades práticas permite aos alunos visualizar relações abstratas entre classes, algo que diagramas estáticos não conseguem transmitir. Trabalhar em pares ou grupos transforma conceitos teóricos em experiências concretas, onde os alunos podem observar como alterações em uma classe base afetam subclasses e como polimorfismo facilita comportamentos flexíveis em tempo de execução.

Aprendizagens EssenciaisDGE: Secundário - ProgramaçãoDGE: Secundário - Engenharia de Software
25–50 minPares → Turma inteira4 atividades

Atividade 01

Pares Programadores: Hierarquia de Veículos

Os pares criam uma classe base Veículo com atributos comuns como velocidade e combustível. Desenvolvem subclasses Carro e Moto que herdam e adicionam métodos específicos. Testam a herança instanciando objetos e chamando métodos herdados.

De que forma a herança facilita a manutenção de grandes projetos de software?

Sugestão de FacilitaçãoDurante a atividade 'Pares Programadores: Hierarquia de Veículos', circule entre os pares para garantir que os diagramas de classes estão corretos e que os testes de instâncias demonstram herança ativa.

O que observarPeça aos alunos para escreverem um pequeno trecho de código Python que demonstre herança, criando uma classe base e uma classe derivada. Em seguida, devem explicar em uma frase como a reutilização de código foi aplicada.

AplicarAnalisarAvaliarCriarAutogestãoCompetências RelacionaisTomada de Decisão
Gerar Aula Completa

Atividade 02

Aprendizagem Baseada em Projetos45 min · Pequenos grupos

Rotação em Grupos: Sobrecarga vs Sobreposição

Divida a turma em grupos pequenos. Uma estação implementa sobrecarga de um método calcular em uma classe. Outra sobrepõe o método em subclasses para polimorfismo. Grupos rodam, comparam resultados e discutem diferenças.

Diferencie sobrecarga de métodos de sobreposição de métodos no contexto do polimorfismo.

Sugestão de FacilitaçãoNa 'Rotação em Grupos: Sobrecarga vs Sobreposição', prepare estações com exercícios práticos onde os alunos possam modificar assinaturas de métodos e observar os resultados no console.

O que observarColoque a seguinte questão no quadro: 'Imagine que está a construir um sistema de gestão de biblioteca. Como usaria herança para representar diferentes tipos de materiais (livros, DVDs, revistas) e polimorfismo para implementar uma função de 'pesquisa' que funcione para todos eles?'. Dê 5 minutos para reflexão individual e depois abra para discussão em pequenos grupos.

AplicarAnalisarAvaliarCriarAutogestãoCompetências RelacionaisTomada de Decisão
Gerar Aula Completa

Atividade 03

Aprendizagem Baseada em Projetos50 min · Turma inteira

Projeto Coletivo: Sistema de Formas Geométricas

Em aula inteira, construam uma hierarquia Forma com subclasses Triangulo e Circulo. Implementem polimorfismo no método calcularArea. Todos contribuem com código, testam coletivamente e refatoram para maior extensibilidade.

Analise como o polimorfismo permite escrever código mais genérico e extensível.

Sugestão de FacilitaçãoNo 'Projeto Coletivo: Sistema de Formas Geométricas', atribua papéis específicos dentro dos grupos para garantir participação equitativa e responsabilidade partilhada.

O que observarApresente duas definições de métodos: uma que é sobrecarga e outra que é sobreposição. Peça aos alunos para identificarem qual é qual e explicarem o porquê, focando na assinatura do método e no contexto de herança.

AplicarAnalisarAvaliarCriarAutogestãoCompetências RelacionaisTomada de Decisão
Gerar Aula Completa

Atividade 04

Desafio Individual: Extensão Polimórfica

Cada aluno estende uma hierarquia dada com uma nova subclasse que sobrepõe métodos. Integram num repositório partilhado e verificam polimorfismo com uma lista de objetos heterogéneos.

De que forma a herança facilita a manutenção de grandes projetos de software?

Sugestão de FacilitaçãoNo 'Desafio Individual: Extensão Polimórfica', forneça exemplos de interfaces ou classes abstratas para inspirar soluções, mas evite dar soluções prontas para fomentar a criatividade.

O que observarPeça aos alunos para escreverem um pequeno trecho de código Python que demonstre herança, criando uma classe base e uma classe derivada. Em seguida, devem explicar em uma frase como a reutilização de código foi aplicada.

AplicarAnalisarAvaliarCriarAutogestãoCompetências RelacionaisTomada de Decisão
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

Ensinar herança e polimorfismo requer um equilíbrio entre exemplos concretos e discussão teórica. Comece com casos do mundo real, como hierarquias de veículos ou formas geométricas, antes de introduzir código. Evite apresentar todos os conceitos de uma vez, pois a sobrecarga de informações pode confundir os alunos. Use analogias simples, como 'herança é como uma árvore genealógica' ou 'polimorfismo é como um interruptor que ativa diferentes luzes', mas sempre valide estas analogias com código real. Pesquisas indicam que alunos aprendem melhor quando constroem soluções passo a passo, corrigindo erros ao longo do caminho, em vez de receberem soluções completas de imediato.

No final destas atividades, espera-se que os alunos consigam explicar com clareza a diferença entre herança e polimorfismo, implementar hierarquias de classes corretamente e justificar escolhas de design com base em reutilização e flexibilidade. Os alunos devem também ser capazes de diagnosticar erros comuns relacionados com herança múltipla e sobreposição de métodos.


Atenção a estes erros comuns

  • Durante a atividade 'Pares Programadores: Hierarquia de Veículos', observe se os alunos acreditam que a herança copia todo o código da classe base em vez de criar uma relação de referência.

    Peça aos pares para desenharem diagramas de classes no papel e usarem a função 'isinstance' em Python para verificar relações entre instâncias, mostrando que uma classe derivada 'é um' tipo de classe base, mas não contém duplicação de código.

  • Durante a atividade 'Rotação em Grupos: Sobrecarga vs Sobreposição', alguns alunos podem confundir sobrecarga de métodos com sobreposição.

    Peça aos grupos para executarem código em cada estação onde a sobrecarga é demonstrada com assinaturas diferentes no mesmo escopo e a sobreposição com redefinição de métodos em subclasses, comparando saídas no console para identificar diferenças.

  • Durante o 'Projeto Coletivo: Sistema de Formas Geométricas', alguns alunos podem pensar que o polimorfismo só funciona dentro de uma hierarquia direta de classes.

    Incentive os grupos a usarem listas heterogêneas de objetos (por exemplo, uma lista com quadrados, círculos e triângulos) e chamadas uniformes de métodos como 'calcular_area()', demonstrando que o polimorfismo funciona independentemente da hierarquia direta.


Metodologias usadas neste resumo