루비 클래스 케이스
다음은 Customer라는 Ruby 클래스를 생성하고 두 가지 메서드를 선언합니다.
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, 고객 이름 및 고객 주소를 표시하는 세 개의 puts 문이 포함되어 있습니다. 그 중 puts 문:
puts "Customer id #@cust_id"
은 Customer id라는 텍스트와 @cust_id 변수의 값을 한 줄에 표시합니다.
인스턴스 변수의 텍스트와 값을 한 줄에 표시하려면 puts 문에서 변수 이름 앞에 기호(#)를 넣어야 합니다. 기호(#)가 있는 텍스트 및 인스턴스 변수는 큰따옴표로 표시해야 합니다.
두 번째 메소드인 total_no_of_customers에는 @@no_of_customers 클래스 변수가 포함되어 있습니다. 표현식 @@no_of_ customer+=1은 total_no_of_customers 메소드가 호출될 때마다 변수 no_of_customers를 1씩 증가시킵니다. 이런 방식으로 클래스 변수의 총 고객 수를 얻을 수 있습니다.
이제 아래와 같이 두 명의 고객을 생성합니다.
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
여기서 Customer 클래스의 두 객체인 cust1과 cust2를 생성하고 필요한 매개변수를 새 메소드에 전달했습니다. 초기화 메소드가 호출되면 객체의 필수 속성이 초기화됩니다.
객체가 생성되면 두 객체를 사용하여 클래스의 메서드를 호출해야 합니다. 메서드나 데이터 멤버를 호출하려면 다음과 같이 코드를 작성할 수 있습니다.
cust1.display_details() cust1.total_no_of_customers()
객체 이름 뒤에는 항상 마침표가 오고 그 뒤에 메서드 이름이나 데이터 멤버가 옵니다. 우리는 cust1 개체를 사용하여 두 가지 메서드를 호출하는 방법을 살펴보았습니다. cust2 객체를 사용하면 다음과 같이 두 가지 메서드를 호출할 수도 있습니다.
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