Ruby-classes

提供:Dev Guides
移動先:案内検索

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

Rubyは完璧なオブジェクト指向プログラミング言語です。 オブジェクト指向プログラミング言語の機能が含まれます-

  • データカプセル化
  • データ抽象化
  • 多型
  • 継承

これらの機能については、章のリンク:/ruby​​/ruby​​_object_oriented [オブジェクト指向Ruby]で説明しています。

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

任意の車両の例を見てください。 車輪、馬力、燃料またはガスのタンク容量で構成されています。 これらの特性は、クラスVehicleのデータメンバーを形成します。 これらの特性を利用して、ある車両を他の車両と区別できます。

車両には、停止、運転、スピードなどの特定の機能もあります。 これらの関数でさえ、クラス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_を使用して、クラスを終了します。 _class_のすべてのデータメンバーは、クラス定義と_end_キーワードの間にあります。

Rubyクラスの変数

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

  • ローカル変数-ローカル変数はメソッドで定義される変数です。 ローカル変数はメソッド外では使用できません。 メソッドの詳細については、後続の章で説明します。 ローカル変数は、小文字または_で始まります。
  • インスタンス変数-インスタンス変数は、特定のインスタンスまたはオブジェクトのメソッド全体で使用できます。 つまり、インスタンス変数はオブジェクトごとに変化します。 インスタンス変数の前には、アットマーク(@)があり、その後に変数名が続きます。
  • クラス変数-クラス変数は異なるオブジェクト間で利用可能です。 クラス変数はクラスに属し、クラスの特性です。 それらの前には記号@@が付いています。そして、変数名が続きます。
  • グローバル変数-クラス変数はクラス間で使用できません。 クラス全体で使用できる単一の変数が必要な場合は、グローバル変数を定義する必要があります。 グローバル変数の前には常にドル記号($)が付きます。

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

class Customer
   @@no_of_customers = 0
end

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

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

メソッド_new_はメソッドのユニークなタイプであり、Rubyライブラリで事前定義されています。 新しいメソッドは_class_メソッドに属します。

これは、クラスCustomerの2つのオブジェクトcust1およびcust2を作成する例です-

cust1 = Customer. new
cust2 = Customer. new

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

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

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

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

_initialize_メソッドは、クラスの_new_メソッドがパラメーターで呼び出されたときに実行される特別なタイプのメソッドです。

ここに初期化メソッドを作成する例があります-

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

この例では、ローカル変数として id、name 、および addr を使用して_initialize_メソッドを宣言します。 ここでは、_def_と_end_を使用して、Rubyのメソッド_initialize_を定義しています。 メソッドの詳細については、後続の章で説明します。

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

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

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

Rubyクラスのメンバー関数

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

メソッド名は常に*小文字*で優先されます。 キーワード_end_を使用して、Rubyでメソッドを終了します。

ここにRubyメソッドを定義する例があります-

class Sample
   def function
      statement 1
      statement 2
   end
end

ここで、_statement 1_と_statement 2_は、クラスSample内のメソッド_function_の本体の一部です。 これらの文は、任意の有効なRubyステートメントです。 たとえば、次のように_Hello Ruby_を印刷するメソッド_puts_を置くことができます-

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​​/ruby​​_class_case_study [Rubyクラスのケーススタディ]