Rubyのクラスケース
以下は Customer という名前の Ruby クラスを作成し、2 つのメソッドを宣言します:
display_details: このメソッドは、顧客の詳細情報を表示するために使用されます。
total_no_of_customers: このメソッドは、システムで作成された顧客の合計数を表示するために使用されます。
#!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Total number of customers: #@@no_of_customers" end end
display_details メソッドには、顧客 ID、顧客名、顧客住所を表示する 3 つの put ステートメントが含まれています。その中で、puts ステートメント:
puts "Customer id #@cust_id"
は、テキスト Customer id と変数 @cust_id の値を 1 行に表示します。
インスタンス変数のテキストと値を 1 行に表示したい場合は、puts ステートメントの変数名の前に記号 (#) を置く必要があります。記号 (#) の付いたテキスト変数とインスタンス変数は二重引用符で囲む必要があります。
2 番目のメソッド total_no_of_customers には、クラス変数 @@no_of_customers が含まれています。式 @@no_of_ Customers+=1 は、total_no_of_customers メソッドが呼び出されるたびに、変数 no_of_customers を 1 ずつ増やします。このようにして、クラス変数内の顧客の合計数を取得します。
次に、以下に示すように 2 つの顧客を作成します。
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
ここでは、Customer クラスの 2 つのオブジェクト、cust1 と cust2 を作成し、必要なパラメーターを新しいメソッドに渡しています。初期化メソッドが呼び出されると、オブジェクトの必要なプロパティが初期化されます。
オブジェクトが作成されたら、2 つのオブジェクトを使用してクラスのメソッドを呼び出す必要があります。メソッドまたはデータ メンバーを呼び出したい場合は、次のようなコードを記述できます:
cust1.display_details() cust1.total_no_of_customers()
オブジェクト名の後には常にピリオドが続き、その後にメソッド名またはデータ メンバーが続きます。 cust1 オブジェクトを使用して 2 つのメソッドを呼び出す方法を説明しました。 cust2 オブジェクトを使用すると、次のように 2 つのメソッドを呼び出すこともできます:
cust2.display_details() cust2.total_no_of_customers()
コードを保存して実行します
次に、すべてのソース コードを main.rb ファイルに次のように配置します:
#!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def display_details() puts "Customer id #@cust_id" puts "Customer name #@cust_name" puts "Customer address #@cust_addr" end def total_no_of_customers() @@no_of_customers += 1 puts "Total number of customers: #@@no_of_customers" end end # 创建对象 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala") # 调用方法 cust1.display_details() cust1.total_no_of_customers() cust2.display_details() cust2.total_no_of_customers()
次に、実行します以下に示すようなプログラム:
$ ruby main.rb
これにより、次の結果が生成されます:
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Total number of customers: 1 Customer id 2 Customer name Poul Customer address New Empire road, Khandala Total number of customers: 2