Ruby - Classes e objetos

Ruby é uma linguagem de programação orientada a objetos perfeita. Os recursos da linguagem de programação orientada a objetos incluem -

  • Encapsulamento de dados
  • Abstração de dados
  • Polymorphism
  • Inheritance

Esses recursos foram discutidos no capítulo Ruby Orientado a Objetos .

Um programa orientado a objetos envolve classes e objetos. Uma classe é o projeto a partir do qual os objetos individuais são criados. Em termos orientados a objetos, dizemos que sua bicicleta é uma instância da classe de objetos conhecida como bicicletas.

Veja o exemplo de qualquer veículo. Inclui rodas, cavalos de força e capacidade do tanque de combustível ou gás. Essas características formam os membros de dados da classe Veículo. Você pode diferenciar um veículo do outro com a ajuda dessas características.

Um veículo também pode ter certas funções, como parar, dirigir e acelerar. Mesmo essas funções formam os membros de dados da classe Veículo. Você pode, portanto, definir uma classe como uma combinação de características e funções.

Um veículo de classe pode ser definido como -

Class Vehicle {

   Number no_of_wheels
   Number horsepower
   Characters type_of_tank
   Number Capacity
   Function speeding {
   }
   
   Function driving {
   }
   
   Function halting {
   }
}

Ao atribuir valores diferentes a esses membros de dados, você pode formar várias instâncias da classe Veículo. Por exemplo, um avião tem três rodas, potência de 1.000 cavalos, combustível como o tipo de tanque e capacidade de 100 litros. Da mesma forma, um carro tem quatro rodas, potência de 200 cavalos, gasolina como o tipo de tanque e capacidade para 25 litros.

Definindo uma classe em Ruby

Para implementar a programação orientada a objetos usando Ruby, você precisa primeiro aprender como criar objetos e classes em Ruby.

Uma classe em Ruby sempre começa com a palavra-chave class seguida pelo nome da classe. O nome deve estar sempre em maiúsculas iniciais. A classe Cliente pode ser exibida como -

class Customer
end

Você termina uma classe usando a palavra-chave end . Todos os membros de dados da classe estão entre a definição da classe e a palavra-chave final .

Variáveis ​​em uma classe Ruby

Ruby fornece quatro tipos de variáveis ​​-

  • Local Variables- Variáveis ​​locais são as variáveis ​​que são definidas em um método. Variáveis ​​locais não estão disponíveis fora do método. Você verá mais detalhes sobre o método no capítulo subsequente. Variáveis ​​locais começam com uma letra minúscula ou _.

  • Instance Variables- Variáveis ​​de instância estão disponíveis em métodos para qualquer instância ou objeto particular. Isso significa que as variáveis ​​de instância mudam de objeto para objeto. Variáveis ​​de instância são precedidas pelo sinal de arroba (@) seguido pelo nome da variável.

  • Class Variables- As variáveis ​​de classe estão disponíveis em diferentes objetos. Uma variável de classe pertence à classe e é uma característica de uma classe. Eles são precedidos pelo sinal @@ e são seguidos pelo nome da variável.

  • Global Variables- Variáveis ​​de classe não estão disponíveis entre classes. Se você deseja ter uma única variável, que está disponível em todas as classes, você precisa definir uma variável global. As variáveis ​​globais são sempre precedidas pelo cifrão ($).

Exemplo

Usando a variável de classe @@ no_of_customers, você pode determinar o número de objetos que estão sendo criados. Isso permite derivar o número de clientes.

class Customer
   @@no_of_customers = 0
end

Criando objetos em Ruby usando o novo método

Objetos são instâncias da classe. Agora você aprenderá como criar objetos de uma classe em Ruby. Você pode criar objetos em Ruby usando o método new da classe.

O método new é um tipo único de método, que é predefinido na biblioteca Ruby. O novo método pertence aos métodos da classe .

Aqui está o exemplo para criar dois objetos cust1 e cust2 da classe Cliente -

cust1 = Customer. new
cust2 = Customer. new

Aqui, cust1 e cust2 são os nomes de dois objetos. Você escreve o nome do objeto seguido pelo sinal de igual (=) após o qual o nome da classe virá. Em seguida, o operador ponto e a palavra-chave new virão em seguida.

Método personalizado para criar objetos Ruby

Você pode passar parâmetros para o método new e esses parâmetros podem ser usados ​​para inicializar variáveis ​​de classe.

Quando você planeja declarar o novo método com parâmetros, você precisa declarar a inicialização do método no momento da criação da classe.

O método de inicialização é um tipo especial de método, que será executado quando o novo método da classe for chamado com parâmetros.

Aqui está o exemplo para criar o método de inicialização -

class Customer
   @@no_of_customers = 0
   def initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
end

Neste exemplo, você declara o método de inicialização comid, namee addrcomo variáveis ​​locais. Aqui, def e end são usados ​​para definir uma inicialização de método Ruby . Você aprenderá mais sobre os métodos nos capítulos subsequentes.

No método de inicialização , você passa os valores dessas variáveis ​​locais para as variáveis ​​de instância @cust_id, @cust_name e @cust_addr. Aqui, as variáveis ​​locais contêm os valores que são transmitidos com o novo método.

Agora, você pode criar objetos da seguinte maneira -

cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")

Funções de membro na classe Ruby

Em Ruby, as funções são chamadas de métodos. Cada método em uma classe começa com a palavra-chave def seguida pelo nome do método.

O nome do método sempre preferido em lowercase letters. Você termina um método em Ruby usando a palavra-chave end .

Aqui está o exemplo para definir um método Ruby -

class Sample
   def function
      statement 1
      statement 2
   end
end

Aqui, a instrução 1 e a instrução 2 fazem parte do corpo da função do método dentro da classe Sample. Essas instruções podem ser qualquer instrução Ruby válida. Por exemplo, podemos colocar um método puts para imprimir Hello Ruby da seguinte maneira -

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

Agora, no exemplo a seguir, crie um objeto da classe Sample e chame o método hello para ver o resultado -

#!/usr/bin/ruby

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

# Now using above class to create objects
object = Sample. new
object.hello

Isso produzirá o seguinte resultado -

Hello Ruby!

Estudo de caso simples

Aqui está um estudo de caso se você quiser praticar mais com a classe e os objetos.

Estudo de caso da turma de Ruby