A confusão de classe / objeto paradoxo
No livro The Rubyist Well Grounded excert), David Black fala sobre o "Paradoxo de Frango e Ovo de Classe / Objeto". Estou tendo dificuldades para entender todo o conceito.
lguém pode explicar isso em termos melhores / mais fáceis / analógicos / outro
Citações (ênfase minha):
A classeClass
é uma instância em si; isto é, é umClass
objeto. E tem mais. Lembre-se da turmaObject
? Bem,Object
é uma classe ... mas classes são objetos. Então,Object
é um objeto. EClass
é uma classe. EObject
é uma classe eClass
é um objeto.
Quem veio primeiro? Como a classeClass
seja criado, a menos que a classeObject
já existe? Mas como pode haver uma classeObject
(ou qualquer outra classe) até que haja uma classeClass
dos quais pode haver instâncias?
A melhor maneira de lidar com esse paradoxo, pelo menos por enquanto, é ignorá-lo. Ruby tem que fazer algumas dessas coisas de galinha ou ovo para colocar a classe e o sistema de objetos em funcionamento - e então, a circularidade e os paradoxos não importam. No curso da programação, você só precisa saber que classes são objetos, instâncias da classe chamadaClass
.
(Se você quiser saber resumidamente como funciona, é assim: todo objeto tem um registro interno de qual classe é uma instância e o registro interno dentro do objetoClass
aponta paraClass
.)