Os iniciantes são ensinados a usar aulas e técnicas de programação orientadas a objetos muito cedo. Mas nunca nos dizem porquê.
Em vez de nos dizerem porquê, as explicações começam sempre a descrever objectos genéricos da vida real – os carros são um exemplo popular… e os alunos começam a discutir marcas e modelos.
Mas porquê? Para que servem as aulas?
A resposta simples,
Os programadores usam aulas sempre que precisam de mais do que um item.
Tire este exemplo de um jogo popular, Candy Crush.

Vês sete rebuçados azuis na tela? Um desenvolvedor de jogos não codificaria um doce azul sete vezes. Você cria uma classe Blue Candy e a multiplica sete vezes.

As classes são apenas fábricas de doces. Ou fábricas de automóveis. Ou fábricas de bebés. Ou fábricas de koalas. Você define a coisa uma vez, e deixa seu código criar quantos quiser!
OOP = Usando Classes em sua programação
Umas poucas definições oficiais que precisamos falar primeiro.
O que é um objeto?
Em código, nós combinamos um grupo de variáveis e métodos (funções) relacionados em uma unidade, nós chamamos essa unidade de objeto.
O que são classes?
Classes são as plantas que definem o comportamento e a informação que nossos objetos conterão. Elas nos permitem fabricar e instanciar novas instâncias.
3. O que é um método de instância?
Um método de instância é o comportamento dos Objetos.
Sabemos que as classes atuam como uma fábrica para nossos objetos, capazes de instanciar novas instâncias. E se quisermos pedir a este objeto para fazer algo?
Aqui vamos usar um exemplo para melhor exibir este conceito abstrato:

Vamos dizer que estamos ajudando o governo australiano a construir um aplicativo para adotar coalas. Koalas terá todos um nome, idade, peso, etc. Imagine que temos 50 coalas para adoção, e descrevemos cada um com 5 características. Sem o OOP, seriam necessárias 50×5 = 250 variáveis e referências complexas. Com OOP, podemos descrevê-lo facilmente com menos código – uma classe de coalas x 50 instâncias. Para manter isto simples, não queremos continuar a repetir o mesmo código vezes sem conta.
class Koala attr_accessor :name, :weight, :age @@all =
def initialize(name) @name = name @weight = weight @age = age Koala.all << self end
def self.all @@all end def donation
puts " Thank you for helping me! " endend
Então, ao fazer isto, podemos criar quantos coalas quiser (basta chamar Koala.new method), e podemos fazer com que todos eles digam “Obrigado por me ajudar” .( basta chamar o método de doação na instância koala)