12/08/2018, 15:23

[Ruby Cơ Bản] Ruby - Object Oriented

Ruby là một ngôn ngữ thuần hướng đối tượng. Tất nhiên, mọi thứ trong ruby đều là đối tượng. Mỗi một giá trị trong ruby là một Object,cả những kiểu dữ liệu primitive như: string, number hay là boolean. Thậm chí bản thân class cũng là một object kế thừa từ class Class. Trong bài viết này chúng ta sẽ ...

Ruby là một ngôn ngữ thuần hướng đối tượng. Tất nhiên, mọi thứ trong ruby đều là đối tượng. Mỗi một giá trị trong ruby là một Object,cả những kiểu dữ liệu primitive như: string, number hay là boolean. Thậm chí bản thân class cũng là một object kế thừa từ class Class. Trong bài viết này chúng ta sẽ tìm hiểu các chức năng liên quan của OOP trong ruby. Một class được sử dụng để mô tả một object và

Define ruby class

Khi định nghĩa một class, bạn định nghĩa một blueprint (phác thảo kiểu ) cho data type. Cú pháp

class Box
    # code here
end

Tên class phải có kí tự đầu viết hoa và phần còn lại phải theo camelcase

Khai báo ruby Object

mội class cung cấp môtj blue print cho một object. Về cơ bản, một object được tạo ra từ một class. Cú pháp:

box1 = Box.new

The initialize methods

The initialize methods là phuwong thức chuẩn có sẵn của của ruby, định nghĩa về nó giống hệt như là constructor trong oop. The initialize method khi bạn muốn khởi tạo một vài variables class vào thời điểm object được tạo ra. Cú pháp:

class Box
   def initialize(w,h)
      @awidth, @height = w, h
   end
end

Biến instance

Instance variables cũng là một thuộc tính của class và nó sẽ trở thành một thuộc tính của object khi object được tạo ra bởi class nào đó. Mỗi attribute của object mang một giá trị riêng biệt và không chung với các object khác. Chúng đuwocj truy cập bằng cách sử dụng ấu @ ở phía trước, để truy cập chúng từ bên ngoài ta sử dụng public methods, nó được gọi là accessor methods

The accessor & setter Methods

Để sử dụng một biến ở bên ngoài class thì nớ phải được ịnh nghĩa ở bên bên trong accessor methods (giống như các methods getter). Ví Dụ:

# define a class
class Box
   # constructor method
   def initialize(w,h)
      @awidth, @height = w, h
   end

   # accessor methods
   def printWidth
      @awidth
   end

   def printHeight
      @height
   end
end

# create an object
box = Box.new(10, 20)

# use accessor methods
x = box.printWidth()
y = box.printHeight()

puts "Width of the box is : #{x}"
puts "Height of the box is : #{y}"

The instance methods

The instance methods là methos được định nghĩa giống như bất cứ methods bình thường nào nhưng có sử dụng các biến instance.

# define a class
class Box
   # constructor method
   def initialize(w,h)
      @awidth, @height = w, h
   end
   # instance method
   def getArea
      @awidth * @height
   end
end

# create an object
box = Box.new(10, 20)

# call instance methods
a = box.getArea()
puts "Area of the box is : #{a}"

Class Variables, Class Constant

là biến được chia sẻ giữa các object thuộc class với nhau và được khai báo với kí hiệu @@. Ví Dụ:

class Box
   # Initialize our class variables
   @@count = 0
   def initialize(w,h)
      # assign instance avriables
      @awidth, @height = w, h

      @@count += 1
   end

   def self.printCount()
      puts "Box count is : #@@count"
   end
end

# create two object
box1 = Box.new(10, 20)
box2 = Box.new(30, 100)

# call class method to print box count
Box.printCount()

tương tự như vậy, class constance được share giữa những class với nhau.

0