বিষয়বস্তুতে চলুন

প্রোগ্রামিংয়ের মৌলিক ধারণা/এনক্যাপসুলেশন

উইকিবই থেকে

সংক্ষিপ্ত বিবরণ

[সম্পাদনা]

এনক্যাপসুলেশন হল OOP (অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং)-এর একটি মৌলিক ধারণা। এটি ডেটাকে ঐ ডেটার ওপর কাজ করা পদ্ধতিগুলির সাথে একত্রিত করার প্রক্রিয়া। এনক্যাপসুলেশন ব্যবহৃত হয় একটি শ্রেণীর মধ্যে একটি কাঠামোবদ্ধ ডেটা অবজেক্টের মান বা অবস্থান লুকিয়ে রাখার জন্য, যাতে অবৈধ পক্ষগুলো সরাসরি তাদের কাছে অ্যাক্সেস না পায়। সাধারণত শ্রেণীতে পাবলিকভাবে অ্যাক্সেসযোগ্য পদ্ধতিগুলি (যেমন গেটার এবং সেটার) প্রদান করা হয় যাতে সেই মানগুলির অ্যাক্সেস করা যায়, এবং অন্যান্য ক্লায়েন্ট শ্রেণীসমূহ এই পদ্ধতিগুলি কল করে অবজেক্টের ভিতরের মানগুলি গ্রহণ ও পরিবর্তন করতে পারে।Wikipedia: Encapsulation (computer programming)


আলোচনা

[সম্পাদনা]

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সবচেয়ে গুরুত্বপূর্ণ নীতি হলো এনক্যাপসুলেশন: ধারণাটি হলো যে, অবজেক্টের ভিতরের ডেটা শুধুমাত্র একটি পাবলিক ইন্টারফেস এর মাধ্যমে অ্যাক্সেস করা উচিত – অর্থাৎ, অবজেক্টের পদ্ধতিগুলির মাধ্যমে।

যদি আমরা একটি অবজেক্টে সংরক্ষিত ডেটা ব্যবহার করে কোনো কার্যক্রম সম্পাদন বা একটি নির্ধারিত মান হিসাব করতে চাই, তবে আমরা একটি পদ্ধতি সংজ্ঞায়িত করি যা এই কাজটি করে। তারপর, যখনই আমরা এই কাজটি করতে চাই, আমরা অবজেক্টে সেই পদ্ধতিটি কল করি। এটি খারাপ অভ্যাস বলে বিবেচিত হয় যদি আমরা অবজেক্টের ভিতরের তথ্য গ্রহণ করি এবং অবজেক্টের বাইরের আলাদা কোড লিখে কার্যক্রমটি সম্পাদন করি।

এনক্যাপসুলেশন কয়েকটি কারণে ভালো ধারণা:

  • কার্যকারিতা একটি স্থানে সংজ্ঞায়িত হয়, একাধিক স্থানে নয়।
  • এটি একটি যৌক্তিক স্থানে সংজ্ঞায়িত হয় – যেখানে ডেটাটি সংরক্ষিত হয়।
  • অবজেক্টের ভিতরের ডেটা অবাঞ্ছিতভাবে বাইরের কোড দ্বারা সম্পূর্ণ ভিন্ন স্থানে পরিবর্তিত হয় না।
  • যখন আমরা একটি পদ্ধতি ব্যবহার করি, তখন আমাদের শুধুমাত্র এই পদ্ধতিটি কী ফলাফল দেবে তা জানা দরকার – অবজেক্টের ভিতরের বিস্তারিত জানার প্রয়োজন নেই। আমরা যদি অন্য একটি অবজেক্ট ব্যবহার করি যা ভিতরে সম্পূর্ণ ভিন্ন, তবুও আমাদের কোন কোড পরিবর্তন করার প্রয়োজন হবে না কারণ উভয় অবজেক্টের একই ইন্টারফেস রয়েছে।

আমরা বলতে পারি যে, অবজেক্টটি তার নিজের ডেটার সাথে কীভাবে কাজ করবে তা জানে, এবং আমাদের উচিত না তার ভিতরের তথ্য অ্যাক্সেস করে ডেটার সাথে কাজ করা। যদি একটি অবজেক্টের একটি ইন্টারফেস পদ্ধতি না থাকে যা আমরা যা করতে চাই তা সম্পাদন করে, তবে আমাদের একটি নতুন পদ্ধতি যোগ করা উচিত বা একটি বিদ্যমান পদ্ধতি আপডেট করা উচিত।

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

পাইথনে, ভাষাটি এনক্যাপসুলেশন কঠোরভাবে কার্যকর করে না, তবে একটি রীতিনীতি রয়েছে যা আমরা ব্যবহার করতে পারি যাতে একটি গুণাবলীটি ব্যক্তিগত হিসাবে চিহ্নিত হয় এবং এটি অবজেক্টের পাবলিক ইন্টারফেসের অংশ নয়: আমরা তার নামের শুরুতে একটি আন্ডারস্কোর ব্যবহার করি। পাইথন একটি প্রপার্টি ডেকোরেটরের ব্যবহার সমর্থন করে যা একটি সাধারণ গুণাবলীকে একটি পদ্ধতিতে প্রতিস্থাপন করে অবজেক্টের ইন্টারফেস পরিবর্তন না করেই।

মূল শব্দাবলি

[সম্পাদনা]
এবস্ট্রাকশন
একটি কৌশল যা কম্পিউটার সিস্টেমের জটিলতাকে আকারে সংগঠিত করার জন্য ব্যবহৃত হয় যাতে কার্যকারিতাটি নির্দিষ্ট বাস্তবায়ন বিবরণ থেকে পৃথক করা যায়।Wikipedia: Object-oriented programmingWikipedia: Abstraction (computer science)
অ্যাক্সেসর
একটি পদ্ধতি যা একটি ব্যক্তিগত সদস্য পরিবর্তনশীলের মান ফেরত দিতে ব্যবহৃত হয়, এটি গেটার পদ্ধতিও পরিচিত।Wikipedia: Mutator method
এনক্যাপসুলেশন
একটি ভাষা প্রক্রিয়া যা একটি অবজেক্টের কিছু উপাদানের প্রতি সরাসরি অ্যাক্সেস সীমাবদ্ধ করে।Wikipedia: Encapsulation (computer programming)
তথ্য গোপনীয়তা
একটি কম্পিউটার প্রোগ্রামে ডিজাইন সিদ্ধান্তগুলিকে অন্যান্য অংশ থেকে পৃথক করার নীতি। দেখুন এনক্যাপসুলেশন।Wikipedia: Information hiding
মিউটেটর
একটি পদ্ধতি যা একটি ব্যক্তিগত সদস্য পরিবর্তনশীলের পরিবর্তন নিয়ন্ত্রণ করতে ব্যবহৃত হয়, এটি সিটার পদ্ধতিও পরিচিত।Wikipedia: Mutator method
প্রাইভেট
একটি অ্যাক্সেস মডিফায়ার যা একটি গুণাবলী বা পদ্ধতির দৃশ্যমানতা শুধুমাত্র সেই ক্লাস পর্যন্ত সীমাবদ্ধ করে যা এটি সংজ্ঞায়িত।Wikipedia: Access modifiers
পাবলিক
একটি অ্যাক্সেস মডিফায়ার যা একটি গুণাবলী বা পদ্ধতির দৃশ্যমানতা সমস্ত অন্য ক্লাসে খোলামেলা করে।Wikipedia: Access modifiers


তথ্যসূত্র

[সম্পাদনা]

টেমপ্লেট:Subpage navbar