কম্পিউটার

রেলে রুবি এবং রুবিতে পদ্ধতিগুলি কীভাবে অর্পণ করবেন

এই নিবন্ধটি রুবিতে পদ্ধতি অর্পণ সম্পর্কে৷

আপনি কীভাবে delegate ব্যবহার করবেন তা শিখতে যাচ্ছেন পদ্ধতি, Forwardable মডিউল এবং SimpleDelegator ক্লাস।

কেন আমাদের প্রতিনিধিদের দরকার ?

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ, ক্লাসের জন্য একসাথে কাজ করার দুটি উপায় রয়েছে।

তারা হল :

  • উত্তরাধিকার
  • রচনা

উত্তরাধিকারের সাহায্যে, আপনি শ্রেণী শ্রেণিবিন্যাস তৈরি করেন, যেখানে একটি অভিভাবক শ্রেণি পদ্ধতি, ধ্রুবক এবং ইনস্ট্যান্স পরিবর্তনশীল সংজ্ঞা ভাগ করে নেয় যে কোনো শ্রেণীর সাথে এটি থেকে উত্তরাধিকারসূত্রে পাওয়া যায়।

উদাহরণস্বরূপ :

রুবিতে, প্রতিটি বস্তু Object থেকে উত্তরাধিকার সূত্রে প্রাপ্ত ডিফল্টভাবে ক্লাস।

এজন্য আপনি puts এর মত পদ্ধতিতে অ্যাক্সেস পান , class &object_id .

কম্পোজিশনের সাহায্যে একটি ক্লাস অন্য ক্লাস থেকে বস্তু তৈরি করে (বা দেওয়া হয়)… তারপর এটি তাদের কাছে কাজ অর্পণ করতে এই বস্তুগুলি ব্যবহার করে।

উদাহরণস্বরূপ :

একটি কম্পিউটার অনেক অংশ (বস্তু) থেকে তৈরি করা হয় এবং প্রতিটি অংশই জানে কিভাবে একটি কাজ করতে হয়।

আপনি যদি স্ক্রিনে কিছু রেন্ডার করতে চান তাহলে কম্পিউটার গ্রাফিক্স কার্ডকে বলে দেবে কী দেখাতে হবে, কিন্তু কিভাবে করতে হবে তা নয়৷

সেটা হল কম্পোজিশন !

কিন্তু আপনি যদি কম্পিউটার হন এবং আপনি গ্রাফিক্স কার্ড পদ্ধতিতে অ্যাক্সেস দিতে চান?

আপনাকে তাদের মধ্যে এক ধরণের "সেতু" তৈরি করতে হবে।

চলুন দেখি কিভাবে সেটা করতে হয়।

রুবি পদ্ধতি অর্পণ – উদাহরণ

আমাদের দুটি ক্লাস আছে:

  • Computer
  • Memory

নিম্নলিখিত কোড দেওয়া হয়েছে :

ক্লাস কম্পিউটার ডিফ ইনিশিয়ালাইজ @memory =Memory.new endendclass Memory def initialize @data =[] end def write(data) @data < 

আমরা শুধুমাত্র Computer এর মাধ্যমে মেমরি অ্যাক্সেস করতে সক্ষম হতে চাই .

এটি অনেক কারণে হতে পারে :

  • আপনার শুধুমাত্র 1টি মেমরি ইউনিট আছে, এর মানে আপনি শুধুমাত্র 1টি মেমরি অবজেক্ট চান৷ একটি বস্তুতে অ্যাক্সেস কেন্দ্রীভূত করে আপনি তা অর্জন করতে পারেন।
  • আপনি নিয়ন্ত্রণ করতে চান কে মেমরি অ্যাক্সেস করতে পারে (বিভিন্ন অ্যাপ্লিকেশন) এবং মেমরির কোন অংশ তারা ব্যবহার করতে পারে।
  • আপনি নিরাপত্তা বা ডিবাগিং উদ্দেশ্যে প্রতিটি মেমরি অ্যাক্সেস লগ করতে চান।

এখন, যদি আপনি এটি করার চেষ্টা করেন :

computer.write("rubyguides")

এটি একটি NoMethodError দিয়ে ব্যর্থ হবে কারণ সেখানে কোন write নেই Computer এ পদ্ধতি .

# (NoMethodError)
এর জন্য অনির্ধারিত পদ্ধতি `লিখুন'

Computer ক্লাস জানে না আপনি write বলতে কি বোঝাতে চান .

যদি না...

আপনি একটি write তৈরি করুন পদ্ধতি!

এখানে কিভাবে :

ক্লাস কম্পিউটার ডিফ ইনিশিয়ালাইজ করুন @memory =Memory.new end def write(data) @memory.write(data) end def read(index) @memory.read(index) endend

আমরা অনুরোধগুলি @memory-এ পাঠাচ্ছি বস্তু।

এটি পদ্ধতি প্রতিনিধিত্ব।

দ্রষ্টব্য :এটি এই পদ্ধতিগুলিকে আপনার সর্বজনীন ইন্টারফেসের অংশ করে তোলে (এগুলি সবার কাছে উপলব্ধ হয়ে যায়) এবং আপনি সর্বদা এটি চান না৷

পদ্ধতি অর্পণের জন্য শর্টকাট আছে কি? ?

হ্যাঁ!

চলুন দেখে নেওয়া যাক...

ফরোয়ার্ডেবল মডিউল কিভাবে ব্যবহার করবেন

এখন :

আপনি Forwardable ব্যবহার করতে পারেন প্রতিনিধি পদ্ধতি সংজ্ঞায়িত করতে রুবির সাথে মডিউল অন্তর্ভুক্ত।

এটি এভাবে কাজ করে :

'forwardable'class কম্পিউটার প্রসারিত ফরওয়ার্ডযোগ্য def_delegators প্রয়োজন :@memory, :read, :write def initialize @memory =Memory.new endend

এটি আপনাকে আমাদের আগে তৈরি করা পদ্ধতিগুলি সরাতে দেয় এবং এটি একই কাজ করবে৷

ফরোয়ার্ডেবল আপনার জন্য পদ্ধতির আর্গুমেন্ট (ব্লক সহ!) যত্ন নেবে, তাই আপনাকে এটি নিয়ে চিন্তা করতে হবে না।

সুন্দর তাই না? 🙂

কিভাবে রেল ডেলিগেট পদ্ধতি ব্যবহার করবেন

আপনি যদি Rails, অথবা ActiveSupport রত্ন নিজেই ব্যবহার করেন, তাহলে আপনি delegate অ্যাক্সেস করতে পারবেন পদ্ধতি।

এটি এভাবেই কাজ করে :

ক্লাস কম্পিউটার প্রতিনিধি :পড়ুন, :লিখুন, থেকে::@memory def initialize @memory =Memory.new endend

delegate পদ্ধতি একটি prefix লাগে আর্গুমেন্ট, যা আপনাকে পদ্ধতির নামের সাথে একটি উপসর্গ যুক্ত করতে দেয়।

উদাহরণ :

ক্লাস কম্পিউটার প্রতিনিধি :পড়ুন, :লিখুন, উপসর্গ:"মেমরি", থেকে::@মেমরি ডিফ ইনিশিয়ালাইজ করুন @memory =Memory.new endend

দুটি পদ্ধতির ফলে :

  • memory_read
  • memory_write

সিম্পল ডেলিগেটর দিয়ে কীভাবে সবকিছু অর্পণ করবেন

আপনি এইমাত্র শিখেছেন এই কৌশলগুলি নির্দিষ্ট পদ্ধতিগুলি ফরোয়ার্ড বা অর্পণ করতে ব্যবহৃত হয়৷

কিন্তু আপনি যদি একটি বস্তুকে মোড়ানো এবং তার সমস্ত পদ্ধতি প্রকাশ করতে চান...

আপনি SimpleDelegator ব্যবহার করতে পারেন ক্লাস!

এখানে কিভাবে :

'delegate'class CoolArray প্রয়োজন  

এখন CoolArray আপনি যে বস্তুটি new এ পাস করেন তার মতো আচরণ করে .

কেন এটি দরকারী?

আপনি মূল ক্লাস পরিবর্তন না করেই এই বস্তুতে নতুন পদ্ধতি যোগ করতে পারেন।

ভিডিও টিউটোরিয়াল

সারাংশ

আপনি রুবিতে অবজেক্ট কম্পোজিশন এবং কিভাবে বিভিন্ন কৌশল ব্যবহার করে পদ্ধতি অর্পণ করতে হয় সে সম্পর্কে শিখেছেন!

আপনি যদি এই নিবন্ধটি উপভোগ করেন তাহলে অনুগ্রহ করে এটি শেয়ার করুন আপনার রুবি বন্ধুদের সাথে।

পড়ার জন্য ধন্যবাদ 🙂


  1. রুবি ফাংশন এবং পদ্ধতি:আপনার নিজের সংজ্ঞায়িত কিভাবে

  2. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  3. আপনার রুবি পদ্ধতি গুপ্তচর কিভাবে

  4. রুবির অ্যারে ক্লাস কীভাবে ব্যবহার করবেন (উদাহরণ + দরকারী পদ্ধতি)