Ruby-クラスとオブジェクト

Rubyは完璧なオブジェクト指向プログラミング言語です。オブジェクト指向プログラミング言語の機能は次のとおりです。

  • データのカプセル化
  • データの抽象化
  • Polymorphism
  • Inheritance

これらの機能については、オブジェクト指向Rubyの章で説明しています。

オブジェクト指向プログラムには、クラスとオブジェクトが含まれます。クラスは、個々のオブジェクトが作成される青写真です。オブジェクト指向の用語では、あなたの自転車は自転車として知られているオブジェクトクラスのインスタンスであると言います。

あらゆる車両を例にとってみましょう。これは、車輪、馬力、および燃料またはガスタンクの容量で構成されます。これらの特性は、クラスVehicleのデータメンバーを形成します。これらの特性を利用して、1台の車両を他の車両と区別することができます。

車両には、停止、運転、スピード違反などの特定の機能もあります。これらの関数でさえ、Vehicleクラスのデータメンバーを形成します。したがって、クラスを特性と機能の組み合わせとして定義することができます。

クラスVehicleは次のように定義できます-

Class Vehicle {

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

これらのデータメンバーに異なる値を割り当てることにより、クラスVehicleの複数のインスタンスを形成できます。たとえば、飛行機には3つの車輪があり、馬力は1,000、タンクの種類は燃料、容量は100リットルです。同様に、車は4つの車輪、200の馬力、タンクのタイプとしてのガス、および25リットルの容量を備えています。

Rubyでクラスを定義する

Rubyを使用してオブジェクト指向プログラミングを実装するには、最初にRubyでオブジェクトとクラスを作成する方法を学ぶ必要があります。

Rubyのクラスは、常にキーワードclassで始まり、その後にクラスの名前が​​続きます。名前は常に頭文字を大文字にする必要があります。クラスCustomerは次のように表示できます-

class Customer
end

キーワードendを使用してクラスを終了します。クラス内のすべてのデータメンバーは、クラス定義とendキーワードの間にあります。

Rubyクラスの変数

Rubyは4種類の変数を提供します-

  • Local Variables−ローカル変数は、メソッドで定義される変数です。ローカル変数はメソッドの外部では使用できません。メソッドの詳細については、次の章で説明します。ローカル変数は小文字または_で始まります。

  • Instance Variables−インスタンス変数は、特定のインスタンスまたはオブジェクトのメソッド間で使用できます。これは、インスタンス変数がオブジェクトごとに変わることを意味します。インスタンス変数の前にはアットマーク(@)があり、その後に変数名が続きます。

  • Class Variables−クラス変数はさまざまなオブジェクトで使用できます。クラス変数はクラスに属し、クラスの特性です。それらの前には記号@@があり、その後に変数名が続きます。

  • Global Variables−クラス変数はクラス間で使用できません。クラス間で使用できる単一の変数が必要な場合は、グローバル変数を定義する必要があります。グローバル変数の前には常にドル記号($)が付きます。

クラス変数@@ no_of_customersを使用して、作成されているオブジェクトの数を判別できます。これにより、顧客数を導き出すことができます。

class Customer
   @@no_of_customers = 0
end

新しいメソッドを使用してRubyでオブジェクトを作成する

オブジェクトはクラスのインスタンスです。ここでは、Rubyでクラスのオブジェクトを作成する方法を学習します。クラスのnewメソッドを使用して、Rubyでオブジェクトを作成できます。

この方法は、新しいRubyのライブラリであらかじめ定義された方法、のユニークなタイプです。新しいメソッドはクラスメソッドに属しています。

これは、クラスCustomer −の2つのオブジェクトcust1とcust2を作成する例です。

cust1 = Customer. new
cust2 = Customer. new

ここで、cust1とcust2は2つのオブジェクトの名前です。オブジェクト名の後に等号(=)を記述し、その後にクラス名を記述します。次に、ドット演算子とキーワードnewが続きます。

Rubyオブジェクトを作成するためのカスタムメソッド

新しいメソッドにパラメーターを渡すことができ、それらのパラメーターを使用してクラス変数を初期化できます。

パラメータを使用して新しいメソッドを宣言する場合は、クラスの作成時にメソッドの初期化を宣言する必要があります。

初期化メソッドは、ときに実行されるメソッドの特殊なタイプであり、クラスのメソッドは、パラメータと呼ばれています。

初期化メソッドを作成する例を次に示します-

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

この例では、initializeメソッドを次のように宣言します。id, name、および addrローカル変数として。ここで、defendは、Rubyメソッドinitializeを定義するために使用されます。メソッドについては、次の章で詳しく説明します。

初期化方法、あなたは@cust_name、および@cust_addr、@cust_idインスタンス変数にこれらのローカル変数の値を渡します。ここで、ローカル変数は、新しいメソッドとともに渡される値を保持します。

これで、次のようにオブジェクトを作成できます-

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

Rubyクラスのメンバー関数

Rubyでは、関数はメソッドと呼ばれます。クラス内の各メソッドは、キーワードdefで始まり、その後にメソッド名が続きます。

で常に優先されるメソッド名 lowercase letters。キーワードendを使用して、Rubyでメソッドを終了します。

これがRubyメソッドを定義する例です-

class Sample
   def function
      statement 1
      statement 2
   end
end

ここで、ステートメント1ステートメント2は、クラスSample内のメソッド関数の本体の一部です。これらのステートメントは、任意の有効なRubyステートメントである可能性があります。たとえば、私たちは、メソッドに置くことができプットを印刷するこんにちはルビーを次のように-

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

次の例では、Sampleクラスのオブジェクトを1つ作成し、helloメソッドを呼び出して、結果を確認します。

#!/usr/bin/ruby

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

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

これにより、次の結果が生成されます-

Hello Ruby!

簡単なケーススタディ

クラスとオブジェクトをさらに練習したい場合のケーススタディを次に示します。

Rubyクラスのケーススタディ