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


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

  • データのカプセル化

  • データの抽象化

  • ポリモーフィズム

  • 継承

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

オブジェクト指向プログラムにはクラスとオブジェクトが含まれます。クラスは、個々のオブジェクトを作成するための設計図です。オブジェクト指向の用語では、自転車は Bicycle クラスのインスタンスです。

車両を例に挙げると、ホイール、馬力、燃料またはガソリンタンクの容量が含まれます。これらのプロパティは、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

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

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

メソッド new は、Ruby ライブラリで事前定義された固有のメソッドです。新しいメソッドは クラス メソッドに属します。

次の例では、Customer クラスの 2 つのオブジェクト cust1 と cust2 を作成します。

cust1 = Customer. new
cust2 = Customer. new

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

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

クラス変数の初期化に使用できるメソッド new にパラメーターを渡すことができます。

パラメータ付きのnewメソッドを宣言したい場合は、クラスの作成時にinitializeメソッドを宣言する必要があります。

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

次の例では、initialize メソッドを作成します:

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 メソッドを宣言できます。ここでは、defendを使用して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 で始まり、その後にメソッド名が続きます。

メソッド名は常に小文字で始まります。 Ruby では、キーワード end を使用してメソッドを終了できます。

次の例では、Ruby メソッドを定義しています。

class Sample
   def function
      statement 1
      statement 2
   end
end

ここで、statement 1statement 2 は、クラス Sample 内のメソッド function の本体の一部です。これらのステートメントには、有効な Ruby ステートメントを使用できます。たとえば、メソッド puts を使用して、次のように Hello Ruby を出力できます:

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

次の例では、Sample クラスのオブジェクトを作成し、hello メソッドを呼び出します:

#!/usr/bin/ruby

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

# 使用上面的类来创建对象
object = Sample. new
object.hello

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

Hello Ruby!

簡単なケーススタディ

クラスとオブジェクトをさらに練習したい場合は、ここにケーススタディがあります:

Rubyクラスのケース