Classes Ruby e initialize
O curso explica como funcionam as classes em Ruby, a partir de uma pequena classe BankAccount e do exemplo Article. Ele mostra class/end como blueprint, o que .new constrói e como .new chama initialize repassando seus argumentos. Mostra também que cada objeto guarda as próprias variáveis de instância, acessíveis de fora só por métodos. Os métodos leitores e escritores são escritos à mão e depois gerados com attr_reader, attr_writer e attr_accessor. No fim, essas peças são ligadas à forma como o ActiveRecord gera métodos de atributo a partir do schema da tabela.
O que você vai aprender
- ✓Como class/end define um blueprint e .new constrói objetos separados
- ✓Como .new chama initialize automaticamente, com argumentos e valores padrão
- ✓Por que cada objeto guarda sua própria cópia das variáveis de instância
- ✓Como escrever à mão métodos leitores e escritores terminados em =
- ✓Como gerar esses métodos com attr_reader, attr_writer e attr_accessor
- ✓Como o ActiveRecord gera leitores e escritores a partir do schema da tabela
Classes são blueprints, não objetos
O curso "Variáveis e atribuição" construiu uma pequena classe BankAccount para explicar variável local versus variável de instância, e usou ela sem nunca explicar o que class e .new fazem. Este curso fecha essa lacuna.
Ler a aula completa grátis →Currículo
7 aulasClasses são blueprints, não objetos
Uma classe define um blueprint, .new constrói objetos separados a partir dele, e a própria classe é um objeto.
O método initialize
.new chama initialize sozinho com seus argumentos, que funcionam como parâmetros comuns, com valores padrão e ArgumentError.
Todo objeto guarda seu próprio estado
Cada objeto recebe sua própria cópia das variáveis de instância, e código de fora só as alcança por métodos.
Métodos leitores e escritores, escritos à mão
Um método leitor retorna uma variável de instância, e um método escritor terminado em = a reatribui.
attr_reader, attr_writer, attr_accessor
attr_reader, attr_writer e attr_accessor geram os mesmos leitores e escritores, e cada um concede só o que o nome diz.
A conveniência que o ActiveRecord escondia o tempo todo
O ActiveRecord lê as colunas da tabela, gera leitor e escritor para cada uma e oferece um initialize que aceita hash.
Juntando tudo: article, escrito à mão
Uma classe PlainArticle escrita do zero junta todas as aulas, e o < em class Article < ApplicationRecord segue sem explicação.