[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.