কম্পিউটার টিউটোরিয়াল

প্রোগ্রামিং-এ ক্লাসের গুরুত্ব: কোড সংগঠন এবং অ্যাবস্ট্রাকশন বাড়ানো

আমার লাস্ট আর্টিকেল অনুসরণ করে, আমি চিন্তা করলাম অন্যান্য বিষয়ের জন্যও এই প্রশ্ন করা ভালো থাকবে जिन्हें আমরা গরান্টি হিসেবে নিই।

যেমন...

কেন আমরা ক্লাস ব্যবহার করি শুধু একটি GIGANT ব্লব অফ அகলি কোড না রেখে?

মৌলিক স্তরে, আমরা ক্লাস ব্যবহার করি কোড এবং ডেটা লজিক্যাল ইউনিটে সংগঠিত করতে।

কিন্তু এর বাইরে আরও কিছু আছে।

একটি ক্লাস আপনাকে একটি অ্যাবস্ট্রাকশন তৈরি করতে দেয়।

অ্যাবস্ট্রাকশন কী?

আপনি প্রতিটি দিন, প্রতিটি মিনিট অ্যাবস্ট্রাকশন ব্যবহার করেন।

যে কীবোর্ড-এ আমি টাইপ করছি সেটি তৈরি হয়েছে:

  • একটি কেবল
  • চেরি এমএক্স ব্ল্যাক সোইচ
  • সবকিছু ধরে রাখা প্লাস্টিক কেসিং
  • আমার কম্পিউটারে ইলেকট্রিক্যাল সিগন্যাল প্রেরণকারী সার্কিট বোর্ড

কীবোর্ড হলো সঠিকভাবে এই জিনিসগুলিকে একসাথে রাখা থেকে উদ্ভূত একটি ধারণা।

এটি একটি অ্যাবস্ট্রাকশন কারণ আপনাকে এটি কীভাবে আন্দরেই কাজ করে তা জানতে হয় না ব্যবহার করার জন্য। আপনাকে এমনকি এর কম্পোনেন্টগুলো জানতে হয় না!

আপনি শুধু এটিকে প্লাগ-ইন করুন এবং টাইপ করা শুরু করুন।

এটিই ক্লাস আপনাকে করতে দেয়।

অ্যাবস্ট্রাকশন কেন গুরুত্বপূর্ণ?

অ্যাবস্ট্রাকশন আপনাকে জটিলতা পরিচালনা করতে সাহায্য করে।

স্টিভ ম্যাককonał বলেছেন:

"একটি প্রোগ্রামের জটিলতা কমানোর জন্য ক্লাস তৈরি করার সবচেয়ে গুরুত্বপূর্ণ কারণ"

অ্যাবস্ট্রাকশন এটি কীভাবে সম্পন্ন করে?

ডিটেইলগুলো লুকিয়ে রাখতে যে কীভাবে কিছু কাজ করে এবং এর সার্ভিসগুলো পাবলিক ইন্টারফেস দিয়ে এক্সপোজ করে।

একটি রুবি ক্লাসে ইন্টারফেস গঠিত হয় এর পাবলিক মেথডগুলোর মাধ্যমে। ডিটেইলগুলো প্রাইভেট মেথড দিয়ে লুকানো হয়।

প্রোগ্রামিং-এ ক্লাসের গুরুত্ব: কোড সংগঠন এবং অ্যাবস্ট্রাকশন বাড়ানো

ডিটেইল বলতে আমি বোঝাচ্ছি:

  • ইনস্ট্যান্স ভেরিয়েবল
  • ইন্টারনাল মেথড
  • অ্যালগরিদম এবং ডেটা স্ট্রাকচার

যখন সেগুলো লুকানো থাকে, আপনি সেগুলো যেকোনো সময় পরিবর্তন করতে পারেন, আপনার ক্লাসের ব্যবহারকারীদের প্রভাবিত করা ছাড়া।

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

যদি আপনার একটি GPS ক্লাস থাকে যা ডেটা সংরক্ষণের জন্য একটি অ্যারে ব্যবহার করে, এবং আপনাকে জানতে হয় যে সেই অ্যারেতে ইনডেক্স ০-এ ল্যাটিটিউড এবং ইনডেক্স ১-এ লংগিটিউড পাওয়া যায়, এই ডিটেইলগুলো এমন কিছু যা ক্লাসের ব্যবহারকারীর জানা উচিত নয়।

একটি ভালো ক্লাস কীভাবে লিখবেন

এখন, এটি একটি বড় বিষয়।

একটি ভালো ক্লাস তৈরি করতে অনেক কিছু দরকার, যেমন SOLID প্রিন্সিপল ফলো করা।

কিন্তু সবচেয়ে গুরুত্বপূর্ণ, আপনার ক্লাসগুলোর অবশ্যই কোনো ভূমিকা থাকতে হবে, এবং র‍্যান্ডম মেথডগুলোর সমষ্টি নয়।

উদাহরণস্বরূপ, আপনি বিজনেস লজিক (গণনা, নিয়ম) এবং প্রেজেন্টেশন লজিক (ফরম্যাটিং) আলাদা রাখতে চাবেন কারণ এগুলো ভিন্ন ভূমিকা।

এই কোডটি দেখুন:

require 'rest-client'
require 'nokogiri'
class ImageCounter
  def initialize(url)
    @url = url
  end
  def find_images_and_report
    data = RestClient.get(@url).body
    html = Nokogiri::HTML.parse(data)
    images = html.css("img")
    report = ""
    report << "=" * 40 << "\n"
    report << "Found #{images.size} images on #{@url} \n"
    report << "=" * 40 << "\n"
  end
end
reporter = ImageCounter.new("rubyguides.com")
report = reporter.find_images_and_report

আপনি দেখতে পাচ্ছেন এই ক্লাসটি ক্যালকুলেশন এবং প্রেজেন্টেশন দুটির সাথে চিন্তিত। এটি ঠিক আছে যদি আপনি একটি "কুইক অ্যান্ড ডার্টি" স্ক্রিপ্ট লিখছেন, কিন্তু একটি सीরিয়াস অ্যাপ্লিকেশনের জন্য আপনি সেগুলো আলাদা রাখতে চাবেন।

যখন আপনি দায়িত্বগুলো আলাদা করেন, আপনি একটি ভিন্ন প্রেজেন্টেশন লেয়ার প্লাগ-ইন করতে পারেন, অথবা বিজনেস রুলগুলো পরিবর্তন করে একই প্রেজেন্টেশন রিয়ুজ করতে পারেন।

এই কোড রিয়ুজ দিকটি ক্লাস লিখার আরেকটি ভালো কারণ।

আপনাকে আরও ভালো ক্লাস লিখতে সাহায্য করার জন্য আরও কিছু ধারণা আছে।

এখানে কিছু যেগুলো আপনাকে আরও এক্সপ্লোর করতে সাহায্য করবে:

  • Cohesion & Coupling
  • Tell, don't ask
  • Law of Demeter

কেন আমরা ক্লাস লিখি সেটি জানা একটি ভালো শুরু, তাই খুব ভালো যদি আপনি পুরো আর্টিকেলটি পড়েছেন!

সারসংক্ষেপ

আপনি শিখতে পেরেছেন কেন আমরা ক্লাস লিখি, অ্যাবস্ট্রাকশন কী এবং কেন এটি গুরুত্বপূর্ণ। আপনি ভালো ক্লাস লেখার মৌলিক বিষয়ও শিখতে পেরেছেন এবং আমি আপনাকে আরও কী পড়বেন সে সম্পর্কে কিছু পয়েন্টার দিয়েছি।

যদি আপনি আপনার কোডকে একটি বিগ বাল অফ মাড বানাতে না চান তবে এখনই এই কনসেপ্টগুলো প্রয়োগ করুন আপনার ক্লাস ডিজাইন উন্নত করতে 🙂

যদি এটি উপকারী লাগে তবে এই আর্টিকেলটি টুইটারে শেয়ার করতে ভুলবেন না!

  1. PHP 7-এ অ্যানোনিমাস ক্লাস

  2. C# নেস্টেড ক্লাস: এক ক্লাসের ভিতরে অন্য ক্লাস

  3. C#-এ অ্যাবস্ট্র্যাক্ট ক্লাস

  4. পাইথন এক্সসেপশন বেস ক্লাসসমূহ (Exception Base Classes)