Các tính chất của OOP trong Ruby on Rails

Tram Ho

OOP là gì ?

OOP là ngôn ngữ lập trình hướng đối tượng (Object Oriented Programming viết tắt là OOP), và hầu hết mọi thứ trong Ruby để là object. Trong phần này chúng ta sẽ tìm hiểu về OOP trong Ruby.

Thành phần chủ yếu của OOP là class và object

  • Class: Thực chất thì nó giống như bản vẽ để thiết kế các đối tượng

  • Object: Thì nó là các đối tượng(sản phẩm) tạo ra từ class

Các tính chất OOP trong Ruby

Nó bao gồm 4 tính chất chính

1. Tính kế thừa(Inheritance):
Lớp cha có thể chia sẻ dữ liệu và phương thức cho các lớp con, các lớp con không cần định nghĩa lại những logic chung, giúp chương trình ngắn gọn.

Ví dụ

kết quả:

2. Tính đóng gói hay là tính bao đóng (Encapsulation):
Gói gọn các phương thức, các biến trong 1 class, không cho class con truy cập đến các phương thức hay biến một cách tùy chọn, giúp bảo mật dữ liệu trong quá trình kế thừa dữ liệu của lớp cha và con, nó thể hiện qua các phương thức public, private, protected
mà mình đã nêu ra trước đó các bạn có thể truy cập vào link và xem nhé

https://viblo.asia/p/so-sanh-3-phuong-thuc-public-protected-private-trong-rails-ByEZkxOglQ0

Ví dụ: private với method

kết qua:

ví dụ: public với method

kết quả:


Thì qua đó sẽ thấy được sự khác nhau của các phương thức của method và tính bảo toàn dữ liệu của nó

3. Tính đa hình(Polymorphism): Theo cách hiểu của mình thì đa tức là nhiều, hình được hiểu là hình thức từ nó thì hiểu khái quát đa hình là biểu diễn các method dưới nhiều hình thức khác nhau, đối với trong cùng 1 class thì nó có thể biểu diễn nhiều method giống nhau nhưng khác tham số thì được gọi là overload, còn với class kế thừa nhau các method cùng tên thì đó là override

**Ở đây qua nhiều lần tìm hiểu thì mình thấy overload trong ruby nó biểu diễn như sau: **

Tùy theo số lượng tham số bạn truyền vào để code vào vùng count cho phù hợp ở đây mình chỉ ví dụ là nó puts ra string gì đó khi tham số với count là 1 , 2, hay nhiều hơn
kết quả mình thu đc:

Nó đang ở multi tức là nhiều hơn 2 tham số 😄

Tương tự mình sẽ ví dụ về override như sau: thì mình xin chia sẽ 1 chút đó là overide tức là cùng 1 method giống nhau nhưng trả về giá trị khác với giá trị cha thôi, ví dụ thằng cha trả về animal nhưng thằng con không thích nó muốn trả về cat thì lúc này mình có thể dùng overide nhé

ví dụ

kết quar:

4. Tính trừa tượng(Abstraction): Nhắc đến tính trừa tượng mình cũng thấy mơ hồ thật 😄 Thật ra nó không qua khó khi các bạn tìm hiểu xâu, thì khi mà các bạn có quá nhiều chức năng giống nhau cho các class thì các bạn có thể viết chung nó vào một cái interface rồi gọi nó ra sử dụng cho các class, nhưng mà ở ruby nó k có interface vậy nó là cái gì ? thì thực chất ở ruby nó có module nó cũng giống như interface nhưng không hoàn toàn giống ví các method của nó chúng ta có thể định nghĩa vào trong đc 😄 nó có điểm hay là vậy. Mình chỉ nói sơ qua cho các bạn hiểu rõ hơn là như vậy 😄 Các bạn có thể tìm hiểu kỉ hơn về phần này

Qua trên mình cũng đã tóm gọn về OOP và tính chất của nó, mình nghĩ cái này là cái tất yếu mà những người lập trình cần phải nắm, bài viết này có thể có thiếu xót các bạn hãy tìm hiểu kỷ rồi phản hồi lại giúp mình, cảm ơn các bạn đã đoc, Happy coding

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo