oop - programming - অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এবং c++ pdf




'কুপলিং কম এবং একত্রে উচ্চ' মানে কি (8)

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

আমি low in coupling and high in cohesion বিবৃতি বুঝতে সমস্যা আছে। আমি googled এবং এই সম্পর্কে অনেক পড়তে, কিন্তু এখনও বুঝতে কঠিন এটি।

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

এবং এখনও কম Coupling মানে কি বুঝতে না?


আমি এটা বিশ্বাস করি কি:

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

কুপলিং বিভিন্ন ডিগ্রী / ক্লাসগুলি একে অপরকে নির্ভর করে এমন ডিগ্রী বোঝায়, সমস্ত মডিউল যতদূর সম্ভব স্বাধীন হওয়া উচিত বলে মনে করা হয়, তাই কেন কম সংযোগ করা হয়। এটি বিভিন্ন মডিউল / ক্লাস মধ্যে উপাদান সঙ্গে কাজ করতে হবে।

পুরো ছবি কল্পনা করা সহায়ক হবে:

স্ক্রিনশট Coursera থেকে নেওয়া হয়েছিল।


একটি উদাহরণ সহায়ক হতে পারে। এমন একটি সিস্টেম কল্পনা করুন যা ডেটা জেনারেট করে এবং এটি একটি ডেটা স্টোরে রাখে, হয় ডিস্ক বা ডাটাবেসের একটি ফাইল।

ডেটা উৎপাদন কোড থেকে ডাটা স্টোর কোড পৃথক করে উচ্চ সংযোজন অর্জন করা যেতে পারে। (এবং আসলে ডাটাবেস স্টোরেজ থেকে ডিস্ক স্টোরেজ বিচ্ছেদ)।

ডেটা উত্পাদনে ডেটা স্টোরের কোন অপ্রয়োজনীয় জ্ঞান নেই (যেমন ফাইলের নাম বা ডিবি সংযোগ সম্পর্কে ডেটা স্টোরকে জিজ্ঞাসা করে না) নিশ্চিত করে লো কুপলিং অর্জন করা যেতে পারে।


এখানে একটি বিমূর্ত বিট থেকে একটি উত্তর, গ্রাফ তাত্ত্বিক কোণ:

চলুন শুধুমাত্র স্থির বস্তুগুলির মধ্যে নির্ভরশীলতা গ্রাফগুলির (নির্দেশিত) দিকে তাকিয়ে সমস্যাটিকে সহজ করে তুলি।

একটি অত্যন্ত সহজ উত্তর নির্ভরতা গ্রাফ দুটি সীমিত ক্ষেত্রে বিবেচনা করে চিত্রিত করা যেতে পারে:

প্রথম সীমিত ক্ষেত্রে : একটি ক্লাস্টার গ্রাফ

একটি ক্লাস্টার গ্রাফ উচ্চ সংযোজন এবং কম সংযোগ (ক্লাস্টার মাপের একটি সেট দেওয়া) নির্ভরতা গ্রাফের সবচেয়ে নিখুঁত উপলব্ধি।

ক্লাস্টারগুলির মধ্যে নির্ভরতা সর্বাধিক (সম্পূর্ণরূপে সংযুক্ত) এবং ইন্টার ক্লাস্টার নির্ভরতা সংক্ষিপ্ত (শূন্য)।

এই সীমিত ক্ষেত্রে এক প্রশ্নের উত্তর একটি বিমূর্ত চিত্রণ।

দ্বিতীয় সীমিত কেস একটি সম্পূর্ণরূপে সংযুক্ত গ্রাফ, যেখানে সবকিছু সবকিছু উপর নির্ভর করে।

বাস্তবতা আমার কোমল বোঝার মধ্যে, ক্লাস্টার গ্রাফ কাছাকাছি, কোথাও মধ্যে কোথাও হয়।

আরেকটি দৃষ্টিকোণ থেকে : নির্দেশিত নির্ভরতা গ্রাফের দিকে তাকালে, আদর্শভাবে এটি অ্যাক্সাইক্লিক হওয়া উচিত, যদি না হয় তবে চক্রগুলি ক্ষুদ্রতম ক্লাস্টার / উপাদানগুলি গঠন করে।

এক ধাপ উপরে / নীচের স্তরক্রমটি একটি সফ্টওয়্যারের আলগা সংযোজন, টাইট একচেঞ্জের "এক উদাহরণ" অনুসারে অনুরূপ, তবে এটি একটি হাইড্রোলিক নির্দেশিত গ্রাফের গভীরতাগুলিতে পুনরাবৃত্ত ঘটনা হিসাবে এই আলগা জোড়া / আঁট একত্রিতকরণ নীতিটি দেখতে সক্ষম। তার স্প্যানিং গাছ এর এক)।

একটি অনুক্রমের মধ্যে একটি সিস্টেমের এই বিচ্ছিন্নতা সূচকীয় জটিলতা বজায় রাখতে সাহায্য করে (প্রতিটি ক্লাস্টারের 10 উপাদান আছে বলে)। তারপরে 6 টি স্তর এটি ইতিমধ্যে 1 মিলিয়ন বস্তু:

10 ক্লাস্টারগুলি 1 সুপারক্লাস্টার গঠন করে, 10 সুপারক্লাস্টারগুলি 1 হাইপার ক্লাস্টার গঠন করে এবং তাই ... দৃঢ় সংহতি, আলগা সংযোজন ধারণা ছাড়াই, এমন একটি অনুক্রমিক স্থাপত্য সম্ভব হবে না।

সুতরাং এই গল্পটির প্রকৃত গুরুত্ব এবং কেবল মাত্র দুটি স্তরের মধ্যে উচ্চ সংযোজন কম সংযোগ স্থাপন করা সম্ভব নয়। উচ্চ স্তরের বিমূর্ততা এবং তাদের মিথস্ক্রিয়া বিবেচনা যখন প্রকৃত গুরুত্ব স্পষ্ট হয়ে ওঠে।


নিম্ন কুলিং এবং উচ্চ সংমিশ্রণ একটি প্রস্তাবিত ঘটনা।

একাধিক মডিউল কতটা পারস্পরিক নির্ভরশীল এবং কোন মডিউলের কিছু / উল্লেখযোগ্য কার্যকারিতা পরিবর্তন করতে অন্য মডিউলগুলি কীভাবে প্রভাবিত হয় তা কুপলিংয়ের অর্থ। নির্ভরযোগ্যতা কম রাখা উচিত যাতে কম সংযোগ স্থাপন করা হয় যাতে অন্যান্য মডিউলগুলিতে খুব কম / নগণ্য পরিবর্তন করা হয়।


বাস্তব জীবনের মতো সফ্টওয়্যার প্রকৌশলতে সংহতি , এগুলি কতগুলি উপাদান সমন্বিত (আমাদের ক্ষেত্রে একটি শ্রেণী বলি) বলা যেতে পারে যে তারা আসলে একসাথে থাকে। সুতরাং, এটি একটি সফ্টওয়্যার মডিউল এর উত্স কোড দ্বারা প্রকাশ করা কার্যকারিতা প্রতিটি অংশ কতটা দৃঢ়ভাবে সম্পর্কিত একটি পরিমাপ।

OO পদে একত্রিত হওয়ার এক উপায় হল ক্লাসের পদ্ধতিগুলি ব্যক্তিগত বৈশিষ্ট্যগুলি ব্যবহার করে থাকে।

এখন আলোচনাটি এর চেয়ে বড় কিন্তু উচ্চ সংকোচনের (অথবা একত্রীকরণের সর্বোত্তম ধরন - কার্যকরী সমন্বয় ) যখন একটি মডিউলের অংশগুলি গোষ্ঠীভুক্ত করা হয় কারণ এটি সমস্ত মডিউলের একটি ভাল সংজ্ঞায়িত কাজকে অবদান রাখে।

সহজ কথায় জোড়া , কতটা একটি উপাদান (আবার, একটি বর্গ কল্পনা করুন, যদিও অপরিহার্য নয়) অভ্যন্তরীণ কাজকর্ম বা অন্যের ভিতরের উপাদানের সম্পর্কে জানেন, অর্থাৎ অন্যান্য উপাদানের কতটা জ্ঞান আছে।

লুজ কুপলিং একটি সিস্টেম বা নেটওয়ার্কের উপাদানগুলির সাথে সংযোগ স্থাপনের একটি পদ্ধতি যাতে যাতে উপাদানটি অন্তত সম্ভব সম্ভাব্যভাবে একে অপরের উপর নির্ভর করে ...

আমি এই সম্পর্কে একটি ব্লগ পোস্ট লিখেছেন । এটি অনেকগুলি বিস্তারিতভাবে, উদাহরণস্বরূপ ইত্যাদি নিয়ে আলোচনা করে। কেন আপনি এই নীতিগুলি অনুসরণ করতে হবে তার সুবিধাগুলিও ব্যাখ্যা করে।


সফ্টওয়্যার নকশা উচ্চ একত্রিতকরণ মানে ক্লাসে এক জিনিস এবং এক জিনিস খুব ভাল কাজ করা উচিত। উচ্চ সম্মিলন ঘনিষ্ঠভাবে একা দায়িত্ব নীতি সম্পর্কিত

নিম্ন কুলিং প্রস্তাব করে যে ক্লাসে অন্তত সম্ভাব্য নির্ভরতা থাকতে হবে। এছাড়াও, বিদ্যমান নির্ভরতাগুলি দুর্বল নির্ভরতা হওয়া উচিত - কংক্রিট ক্লাসের উপর নির্ভরতার পরিবর্তে ইন্টারফেসের উপর নির্ভরতা পছন্দ করে বা উত্তরাধিকারের উপর রচনা পছন্দ করে।

উচ্চ সংযোজন এবং কম সংযোগ আমাদের বজায় রাখার জন্য সহজ যা উন্নত পরিকল্পিত কোড দেয়।


সংক্ষিপ্ত এবং স্পষ্ট উত্তর

  • উচ্চ সংযোজন : এক বর্গ / মডিউল মধ্যে উপাদান কার্যত একসঙ্গে অন্তর্গত এবং একটি নির্দিষ্ট জিনিস করতে হবে।
  • আলগা সংযোজন : বিভিন্ন ক্লাস / মডিউল মধ্যে সংক্ষিপ্ত নির্ভরতা হতে হবে।




ooad