منبع اصلی نوشتار زیر در این لینک قرار دارد

برنامه نویسی پیشرفته در روبی – بخش دوم

در آموزش پیشین، در مورد ساخت کلاس و افزودن متد، بحث کردیم. در این آموزش، میخواهیم کمی آموزش را تعمیم دهیم، و درباره ارث بری صحبت کنیم. در آموزش قبلی، یک کلاس کاربر به این شکل تهیه کردیم :

class User
 def initialize(username, password)
  @username = username
  @password = password
 end
 def print_info
  puts "username: #{@username}"
  puts "password: #{@password.length * "*"}"
 end
end

بیایید یک برنامه بزرگ را در نظر بگیریم، مثلا قرار است از کاربرها، عده ای را به عنوان ادمین انتخاب کنیم، و عده ای را به عنوان ویرایشگر. باید چه کنیم؟ اولین راهی که به ذهن برنامه نویس تازه کار میرسد، نوشتن کلاس ادمین و ویرایشگر از صفر است. اما بیاید از ویژگی «ارث بری» یا Inheritance در روبی بهره ببریم.

نوشتن کلاس ویرایشگر و ادمین

همه زبان های شی گرا از ارث بری پشتیبانی میکنند. بیایید برسیم به این که در روبی، چگونه میتوان یک کلاس فرزند نوشت. کلاس والد ما، در این آموزش کلاس User است. کاربر عمومی، با گرفتن مجوزهایی تبدیل به ویرایشگر یا ادمین می شوند. به شکل زیر، کلاس خالی ادیتور را ایجاد میکنیم.

class Editor < User
end

باید مجوز های خاصی را به کلاس ویرایشگر اضافه کنیم. مثلا بگوییم میتواند ویرایش کند یا نه؟ میتواند کاربری را اضافه و حذف کند و … ! بیاییم با متد permissions مجوز ها را مشخص کنیم :

class Editor < User
 def permissions
  puts "Can Edit, Add and Remove Articles"
 end
end

و به همین ترتیب، کلاس ادمین را هم میسازیم :

class Admin < User
 def permissions
  puts "Can Edit, Add, Remove all Articles and Users"
 end
end

بدین شکل، کاربر ادمین هم ساختیم. حال سوال پیش می آید چگونه میتوان کلاس ها را به یکدیگر تبدیل نمود؟ مثلا کاربر عادی را به ادمین، ادیتور و ادمین را به یکدیگر و … ؟ در ادامه با ما باشید.

تبدیل نوع کلاس ها

ما اکنون سه کلاس Admin و Editor و User را داریم. برای این که این کلاس ها را به یکدیگر تبدیل کنیم باید چه کنیم؟ دقت کنید که نحوه تبدیل به این شکل است که کاربر، به ویرایشگر و ادمین؛ ادمین به کاربر و ویرایشگر ؛ و ویرایشگر به کاربر و ادمین تبدیل می شود. در واقع تبدیل نوع کلاس باید به این شکل باشد که کلاس جدیدی از نوع مورد نظر ما ایجاد شده، و اطلاعات آن منتقل شود. نمونه کد زیر، تبدیل کننده کاربر به ویرایشگر و ادمین است :

class User
 def initialize(username, password)
  @username = username
  @password = password
 end
 def print_info
  puts "username: #{@username}"
  puts "password: #{@password.length * "*"}"
 end
 def to_editor
  Editor.new(@username, @password)
 end
 def to_admin
  Admin.new(@username, @password)
 end
end

و به همین ترتیب، می توانید این متدها را برای دو نوع کاربر دیگر هم بنویسید ( که به علت طولانی شدن مطلب، از نوشتن آنها صرف نظر کردیم).

تا اینجا، با دو تا از مهم ترین تکنیک های شی گرایی در روبی آشنا شدیم. در آینده، سایر روش ها و تکنیک های برنامه نویسی شی گرا در روبی را نیز فراخواهیم گرفت.



برچسب ها : , , , , ,