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.