Classes e objetos – referências, encapsulamento e herança

ComputaçãoAlgoritmos e resolução de problemasIdades 17–18

Carregando…

Usar com minha turma ✨ Personalizar com IA Relatar um problema

Execute passo a passo pequenos programas em Python ou Java que definem classes, criam objetos e chamam métodos, e observe a memória: as variáveis da pilha guardam setas (referências) para os objetos do heap, ao lado de um diagrama de classes UML. Seis exemplos tratam de construtores e estado, aliasing e null, objetos como parâmetros e valores de retorno, encapsulamento com getters e setters, herança com sobrescrita e polimorfismo, e membros estáticos. O modo Experimentar permite que você crie objetos e copie referências, e uma Tarefa de projeto pede que você monte um diagrama de classes a partir de uma especificação escrita.

Aula: Programação orientada a objetos: classes, objetos, referências, encapsulamento, herança e polimorfismo

O que mostra

Uma classe é uma planta que define atributos (dados) e métodos (comportamento); cada objeto criado a partir dela é uma instância com sua própria cópia dos atributos. Uma variável de tipo classe não contém o objeto, e sim uma referência a ele: atribuir uma variável a outra cria um alias, e uma referência pode ser null (None em Python). O encapsulamento mantém os atributos privados e os expõe por métodos que podem verificar os valores. Uma subclasse herda os membros da superclasse e pode sobrescrever métodos; em execução, a classe real do objeto decide qual versão roda, e isso é o polimorfismo.

Como usar

Escolha Executar passo a passo, uma Linguagem e um Exemplo; clique em Passo ou Executar e acompanhe a linha destacada, as setas da memória e o método destacado no diagrama de classes. Em Experimentar, crie objetos Account ou SavingsAccount, copie referências com Atribuir e use Chamar para ver aliasing, lixo e sobrescrita. Em Tarefa de projeto, leia a especificação, clique nos membros para colocá-los nas classes e clique em Verificar.

Parâmetros que você pode mudar

  • Modo Executar passo a passo, Experimentar, Tarefa de projeto
  • Exemplo Classes, objetos e métodos, Referências, aliasing e null, Objetos como parâmetros e valores de retorno, Encapsulamento: getters e setters, Herança e polimorfismo, Membros estáticos (de classe)
  • Linguagem Python, Java
  • Velocidade de execução 0,5–5 passos/s
  • Tarefa de projeto Livro da biblioteca, Formas (herança), Alunos (membros estáticos)

Perguntas para explorar

  1. Depois de c2 = c1 e c2.increment(), por que c1.count também muda?
  2. Por que reset(p) não altera a variável de quem chama, enquanto move_right(p, dx) altera o objeto dela?
  3. No laço sobre pets, por que p.describe() dá um som diferente para Dog e para Cat?