'কাপলিং' এমন একটি শব্দ যা একটি সফ্টওয়্যার সিস্টেমে (সাধারণত ক্লাস) দুটি সত্তার মধ্যে সম্পর্কের বর্ণনা দেয়।
যখন কোনও শ্রেণি অন্য শ্রেণি ব্যবহার করে, বা এর সাথে যোগাযোগ করে, তখন বলা হয় যে এটি অন্য শ্রেণীর উপর 'নির্ভরশীল' এবং তাই এই শ্রেণিগুলি 'মিলিত' হয়। তাদের মধ্যে একজন অন্তত অন্যটির সম্পর্কে 'জানে'।
ধারণাটি হ'ল আমাদের সিস্টেমে ক্লাসের মধ্যে সংযোগকে যথাসম্ভব 'আলগা' রাখার চেষ্টা করা উচিত: অতএব 'আলগা কাপলিং' বা কখনও কখনও 'ডিকোপলিং' (যদিও ইংরেজিতে 'ডিকোপলিং'-এর অর্থ' কোনও মিলন নয় ', লোকেরা সত্তাগুলির মধ্যে প্রায়শই 'আলগা কাপলিং' বোঝাতে এটি ব্যবহার করুন)।
সুতরাং: অনুশীলনে দৃ strong় সংযোগের তুলনায় আলগা-সংযুক্তকরণ কী এবং আমরা কেন সত্তাগুলি আলগাভাবে মিলিত করব?
কাপলিং এক সত্তার মধ্যে অন্য সত্তার মধ্যে নির্ভরতার ডিগ্রি বর্ণনা করে। প্রায়শই ক্লাস বা অবজেক্ট।
ক্লাসএ যখন ক্লাসবি'র উপর নির্ভর করে, ক্লাসবি পরিবর্তিত হয় তখন ক্লাসএ প্রভাবিত হওয়ার সম্ভাবনা বেশি থাকে। এটি দৃ strong় মিলন।
ক্লাসবি কোড পরিবর্তন করে কোনওভাবে ক্লাসএ আক্রান্ত হওয়ার সম্ভাবনার চেয়ে ক্লাসি যদি ক্লাসবিতে হালকাভাবে নির্ভর করে তবে তা কম। এটি আলগা দম্পতি বা 'ডিউপলড' সম্পর্ক।
আলগা সংযুক্তি ভাল কারণ আমরা আমাদের সিস্টেমের উপাদানগুলি একে অপরের উপর নির্ভর করতে চাই না। আমরা আমাদের সিস্টেমটিকে মডুলার রাখতে চাই, যেখানে আমরা অন্য অংশকে প্রভাবিত না করে নিরাপদে একটি অংশ পরিবর্তন করতে পারি।
দুটি অংশ যখন আলগাভাবে মিলিত হয় তখন এগুলি একে অপরের থেকে বেশি স্বতন্ত্র থাকে এবং অন্য পরিবর্তনগুলি যখন ভেঙে যাওয়ার সম্ভাবনা কম থাকে।
উদাহরণস্বরূপ, গাড়ী তৈরি করার সময়, আপনি ইঞ্জিনের অভ্যন্তরীণ পরিবর্তনটি স্টিয়ারিং হুইলে কিছু ভাঙ্গতে চাইবেন না।
গাড়ি তৈরি করার সময় এটি কখনই দুর্ঘটনার দ্বারা ঘটবে না, প্রোগ্রামারদের সাথে সর্বদা একই ঘটনা ঘটে। লুজ কাপলিং এর অর্থ এই জাতীয় ঘটনার ঝুঁকি হ্রাস করা।
শক্তিশালী মিলন সাধারণত ঘটে থাকে যখন সত্তা A সত্তা বি সম্পর্কে খুব বেশি জানে তবে সত্তা বি কীভাবে পরিচালনা করে বা কীভাবে এটি নির্মিত হয় সে সম্পর্কে অনেক বেশি অনুমান করে তবে সত্তা বিতে পরিবর্তন সত্তা এটিকে প্রভাবিত করে এমন উচ্চ ঝুঁকি রয়েছে This কারণ সত্তা বি সম্পর্কে এর একটি অনুমান এখন ভুল।
উদাহরণস্বরূপ, কল্পনা করুন যে একজন ড্রাইভার হিসাবে, আপনার গাড়ির ইঞ্জিন কীভাবে কাজ করে সে সম্পর্কে আপনি নির্দিষ্ট ধারণা তৈরি করবেন।
যে দিন আপনি কোনও ইঞ্জিন সহ নতুন গাড়ি কিনেছেন যা ভিন্নভাবে কাজ করে (বা কোনও কারণে আপনার ইঞ্জিনটি প্রতিস্থাপন করা হয়েছিল), আপনার পূর্ববর্তী অনুমানগুলি ভুল হবে। আপনি যদি একটি কম্পিউটারে কোড হন, আপনি এখন ভুল কোড হতে হবে যা সঠিকভাবে কাজ করে না।
তবে, গাড়ি সম্পর্কে চালক হিসাবে আপনি যে সমস্ত অনুমানগুলি করেন তা হ'ল: এ- তাদের স্টিয়ারিং হুইল এবং বি রয়েছে- গাড়ীর পরিবর্তনগুলি আপনাকে প্রভাবিত করবে না, যতক্ষণ না আপনার কয়েকটি অনুমান করা হয় সঠিক থাকুন এটি আলগা মিলন।
আলগা সংযোগ অর্জনের জন্য একটি গুরুত্বপূর্ণ কৌশল হ'ল এনক্যাপসুলেশন। ধারণাটি হ'ল কোনও শ্রেণি তার অভ্যন্তরীণ বিবরণ অন্যান্য শ্রেণি থেকে গোপন করে এবং অন্যান্য শ্রেণীর সাথে এটির সাথে যোগাযোগের জন্য একটি কঠোর সংজ্ঞায়িত ইন্টারফেস সরবরাহ করে।
সুতরাং উদাহরণস্বরূপ, যদি আপনি কোন ক্লাসে গাড়ি সংজ্ঞা ছিল, এটা ইন্টারফেস (পাবলিক পদ্ধতি) সম্ভবত হবে drive()
, stop()
, steerLeft()
, steerRight()
, getSpeed()
। অন্যান্য বস্তুগুলি গাড়ী বস্তুগুলিতে প্রার্থনা করতে পারে সেগুলি এই methods
কার শ্রেণীর অন্যান্য সমস্ত বিবরণ: ইঞ্জিন কীভাবে কাজ করে, এটি ব্যবহার করে জ্বালানীর ধরণ ইত্যাদি অন্যান্য ক্লাস থেকে লুকায়িত থাকে - যাতে গাড়ী সম্পর্কে খুব বেশি কিছু জানতে না পারে।
মুহুর্তের ক্লাস এ ক্লাস বি সম্পর্কে খুব বেশি জানে: আমাদের দৃ a়তার সাথে একত্রে সম্পর্কযুক্ত সম্পর্ক রয়েছে, যেখানে ক্লাস এ ক্লাস বি এর উপর খুব নির্ভরশীল এবং ক্লাস বিতে পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে ক্লাস এ-এর উপর এবং সিস্টেমকে প্রসারিত ও বজায় রাখা শক্ত করে তোলে।
দুটি সত্তার মধ্যে একটি সম্পর্ক, যেখানে তারা একে অপরের সম্পর্কে সামান্য জানেন (কেবলমাত্র প্রয়োজনীয়) - এটি একটি স্বচ্ছল যুগল বা হ'ল সম্পর্কযুক্ত।