Classes e objetos – referências, encapsulamento e herança
ComputaçãoAlgoritmos e resolução de problemasIdades 17–18
Carregando…
Entre para usarExecute 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
- Depois de c2 = c1 e c2.increment(), por que c1.count também muda?
- Por que reset(p) não altera a variável de quem chama, enquanto move_right(p, dx) altera o objeto dela?
- No laço sobre pets, por que p.describe() dá um som diferente para Dog e para Cat?