সংহতি এবং মিলনের মধ্যে পার্থক্য


486

সংহতি এবং মিলনের মধ্যে পার্থক্য কী?

কীভাবে সংযুক্তি এবং সংহতি ভাল বা দুর্বল সফ্টওয়্যার ডিজাইনের দিকে নিয়ে যেতে পারে?

দু'টির মধ্যে পার্থক্যের রূপরেখা এবং সামগ্রিক কোডের মানের উপর তাদের প্রভাবের রূপরেখা এমন কয়েকটি উদাহরণ কী?


2
: এটি চেক আউট msdn.microsoft.com/en-us/magazine/cc947917.aspx
Inv3r53

3
আমি এই নিবন্ধটি উল্লেখ করতে চাই: সলিড সফটওয়্যার ডেভলপমেন্ট, এক সময় এক ধাপ । গ্রজ, ক্রিস।
ক্রিস ভ্যান ডের মাস্ট

4
এটি এই বিষয়ে সর্বশেষ পোস্ট
জানিস্প

উত্তর:


702

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

নিম্ন সংহতির উদাহরণ:

-------------------
| Staff           |
-------------------
| checkEmail()    |
| sendEmail()     |
| emailValidate() |
| PrintLetter()   |
-------------------

উচ্চ সামঞ্জস্যের উদাহরণ:

----------------------------
| Staff                   |
----------------------------
| -salary                 |
| -emailAddr              |
----------------------------
| setSalary(newSalary)    |
| getSalary()             |
| setEmailAddr(newEmail)  |
| getEmailAddr()          |
----------------------------

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

ভাল সফ্টওয়্যার ডিজাইনের উচ্চ সংহতি এবং কম সংযোগ রয়েছে


12
আমি দেখতে পাচ্ছি না যে কয়েকটি পদ্ধতি কীভাবে অপসারণ করা হয়েছে এবং আরও কয়েকটি যুক্ত করা সংহতি বাড়ায়। কেউ এখানে দয়া করে সাহায্য করতে পারেন?
সাকেত জৈন

3
@ সেকটজেইন এটি কেবল কিছু পদ্ধতি সরিয়ে অন্য কিছু যুক্ত করছে না। ক্লাসের উদ্দেশ্যগুলির সাথে কীভাবে পদ্ধতিগুলি সম্পর্কিত (এটি যদি আরও স্পষ্ট হয়) it's
মৌরি

4
শীর্ষে কম সংহরণের উদাহরণ দেখতে বেশ ভাল লাগছে, আমি মনে করি আপনি দুর্ঘটনাক্রমে "উচ্চ সংহতি" বলতে চেয়েছিলেন
14:46 এ পুনরায় রিপ্লেস করুন

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

3
@ জোনাথনসি উদাহরণগুলি এখনও একটি উদাহরণ হতে পার্থক্য প্রমাণ করার প্রয়োজন নেই (গণিতের প্রমাণের মতো)। আপনি নির্দ্বিধায় উত্তর দিতে বা মন্তব্য করুন আপনার মনে হয় যে আরও সহায়ক। set& getফাংশন চিত্রিত যে, "স্টাফ" প্রসঙ্গ আরো নির্দিষ্ট কার্যকারিতা - উচ্চতর নির্দিষ্টতা দিতে উদাহরণস্বরূপ তার উচ্চতর সংযোগ।
cellepo

81

সংঘবদ্ধতা একটি মডিউল মধ্যে সম্পর্কের ইঙ্গিত ।

কাপলিং হ'ল মডিউলগুলির মধ্যে সম্পর্কের ইঙ্গিত ।

এখানে চিত্র বর্ণনা লিখুন

সংযোগ

  • একাত্মতা হ'ল মডিউলটির মধ্যে সম্পর্কের ইঙ্গিত।
  • সংহতি মডিউলটির আপেক্ষিক কার্যক্ষম শক্তি দেখায়।
  • একাত্মতা এমন একটি ডিগ্রি (গুণমান) যেখানে কোনও উপাদান / মডিউল একক জিনিসে ফোকাস করে।
  • ডিজাইনের সময় আপনার উচ্চ সংহতি অর্থাৎ সিস্টেমের অন্যান্য মডিউলগুলির সাথে সামান্য মিথস্ক্রিয়া সহ একক টাস্কের (যেমন, একক-মনোভাব) মনোনিবেশকারী উপাদান / মডিউল ফোকাসের জন্য প্রচেষ্টা করা উচিত।
  • সমন্বয় হ'ল ধরণের ডেটা লুকানোর প্রাকৃতিক বর্ধন উদাহরণস্বরূপ, শ্রেণীর সমস্ত সদস্যের একটি প্যাকেজের সাথে ডিফল্ট দৃশ্যমানতার দৃশ্যমান থাকে। একাত্মতা হ'ল ইন্ট্রা - মডিউল ধারণা।

সংযোজন

  • কাপলিং হ'ল মডিউলগুলির মধ্যে সম্পর্কের ইঙ্গিত।
  • কাপলিং মডিউলগুলির মধ্যে আপেক্ষিক নির্ভরতা / আন্তঃনির্ভরতা দেখায়।
  • কাপলিং এমন একটি ডিগ্রি যেখানে কোনও উপাদান / মডিউল অন্যান্য মডিউলগুলির সাথে সংযুক্ত থাকে।
  • ডিজাইনের সময় আপনার কম কাপলিংয়ের জন্য প্রচেষ্টা করা উচিত অর্থাৎ মডিউলগুলির মধ্যে নির্ভরতা কম হওয়া উচিত
  • বেসরকারী ক্ষেত্র, বেসরকারী পদ্ধতি এবং অ পাবলিক ক্লাস তৈরি করা আলগা দম্পতি সরবরাহ করে।
  • কাপলিং হ'ল ইন্টার-মডুল কনসেপ্ট।

এই লিঙ্কটি পরীক্ষা করুন


77

উচ্চ সংযোগ মধ্যে মডিউল এবং কম কাপলিং মধ্যে মডিউল প্রায়ই গণ্য করা হয় যেমন OO যেমন পণ্য প্রোগ্রামিং ভাষাতে উচ্চ মানের এর সাথে সম্পর্কিত।

উদাহরণস্বরূপ, প্রতিটি জাভা ক্লাসের কোডের অবশ্যই উচ্চ অভ্যন্তরীণ সংহতি থাকতে হবে, তবে অন্যান্য জাভা ক্লাসের কোডের সাথে যতটা সম্ভব স্বচ্ছভাবে মিলিত হওয়া উচিত led

মায়ারের অবজেক্ট-ওরিয়েন্টড সফটওয়্যার কনস্ট্রাকশন (২ য় সংস্করণ) এর অধ্যায় 3 এই বিষয়গুলির দুর্দান্ত বর্ণনা রয়েছে।


3
ধারণাগুলি ওও প্রোগ্রামিংয়ের মধ্যে সীমাবদ্ধ নয়। যদি কিছু হয় তবে আমি পরামর্শ দেব যে ওও ভাষাগুলির একটি লক্ষ্য প্রোগ্রামারকে উচ্চ সংহতি / কম সংযোগের উদ্দেশ্যগুলির দিকে পরিচালিত করা।
হচ

57

সংযুক্তি কোনও সফ্টওয়্যার উপাদানগুলির দায়িত্বগুলি কীভাবে সম্পর্কিত এবং কেন্দ্রীভূত হয় তার একটি ইঙ্গিত।

কাপলিং বলতে বোঝায় যে কোনও সফ্টওয়্যার উপাদান অন্যান্য উপাদানগুলির সাথে কীভাবে দৃ connected়ভাবে সংযুক্ত।

সফ্টওয়্যার উপাদান শ্রেণি, প্যাকেজ, উপাদান, সাবসিস্টেম বা একটি সিস্টেম হতে পারে। আর যখন সিস্টেম্স নকশা এটা সফ্টওয়্যার উপাদান আছে আছে বাঞ্ছনীয় উচ্চ সংযোগ এবং সমর্থন নিম্ন কাপলিং

একত্রীকরণের ক্লাসগুলিতে নিম্ন সংহতির ফলাফল যা বজায় রাখা, বোঝা এবং পুনরায় ব্যবহারযোগ্যতা হ্রাস করে difficult একইভাবে উচ্চ সংযোগের ফলাফলগুলি এমন ক্লাসগুলিতে আসে যা দৃ changes়তার সাথে মিলিত হয় এবং পরিবর্তনগুলি স্থানীয় হয় না, পরিবর্তন করা কঠিন এবং পুনরায় ব্যবহার হ্রাস করে reduces

আমরা একটি অনুমানমূলক পরিস্থিতি নিতে পারি যেখানে আমরা ConnectionPoolনিম্নলিখিত প্রয়োজনীয়তা সহ একটি সাধারণ মনিটর-সক্ষম ডিজাইন করি । মনে রাখবেন, এটি সাধারণ শ্রেণীর মতো দেখতে খুব বেশি লাগতে পারে ConnectionPoolতবে প্রাথমিক উদ্দেশ্যটি হ'ল কিছু সাধারণ উদাহরণ সহ কম সংযোগ এবং উচ্চ সংহতি প্রদর্শন করা এবং আমার মনে হয় এটি সহায়তা করা উচিত।

  1. একটি সংযোগ পেতে সমর্থন
  2. একটি সংযোগ প্রকাশ করুন
  3. ব্যবহারের তুলনায় বনাম সংযোগ সম্পর্কে পরিসংখ্যান পান
  4. সময়ের সাথে সংযোগ সম্পর্কে পরিসংখ্যান পান
  5. সংযোগ পুনরুদ্ধার সংরক্ষণ করুন এবং পরে রিপোর্ট করার জন্য একটি ডাটাবেসে তথ্য প্রকাশ করুন।

সঙ্গে কম সংযোগ আমরা একটি নকশা পারে ConnectionPoolজোর করে নিচের হিসাবে একটি একক শ্রেণীর মধ্যে সব এই কার্যকারিতা / দায়িত্ব ঠাসাঠাসি দ্বারা বর্গ। আমরা দেখতে পাচ্ছি যে এই একক শ্রেণি সংযোগ ব্যবস্থাপনার জন্য, ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করার পাশাপাশি সংযোগের পরিসংখ্যান বজায় রাখার জন্য দায়ী।

নিম্ন সংহতি সংযোগ পুল

সঙ্গে উচ্চ সংযোগ আমরা ক্লাস জুড়ে এই দায়িত্ব নির্ধারণ এবং এটা আরো রক্ষণীয় এবং পুনর্ব্যবহারযোগ্য করে তুলতে পারে।

উচ্চ সংহতি সংযোগ পুল

লো সংযুক্তি প্রদর্শনের জন্য আমরা ConnectionPoolউপরের উচ্চ সংহতি চিত্রটি দিয়ে চালিয়ে যাব । যদি আমরা উপরের চিত্রটি দেখি তবে এটি উচ্চ সংহতিকে সমর্থন করে যদিও শ্রেণীর ConnectionPoolসাথে দৃ with়ভাবে মিলিত হয় ConnectionStatisticsএবং PersistentStoreএটি সরাসরি তাদের সাথে যোগাযোগ করে। সংযুক্তিকে হ্রাস করার পরিবর্তে আমরা একটি ConnectionListenerইন্টারফেস প্রবর্তন করতে পারি এবং এই দুটি ক্লাসটিকে ইন্টারফেসটি বাস্তবায়িত করতে এবং তাদের ConnectionPoolক্লাসে নিবন্ধন করতে দিন । এবং ConnectionPoolএই শ্রোতার মাধ্যমে পুনরাবৃত্তি হবে এবং সংযোগের বিষয়ে তাদেরকে বিজ্ঞপ্তি দেবে এবং ইভেন্টগুলি প্রকাশ করবে এবং কম সংযোগের অনুমতি দেবে।

লো কাপলিং সংযোগপুল

নোট / শব্দ বা সতর্কতা: এই সাধারণ দৃশ্যের জন্য এটি ওভারকিলের মতো দেখাতে পারে তবে আমরা যদি এমন কোনও বাস্তব-সময়ের দৃশ্য কল্পনা করি যেখানে কোনও লেনদেন সম্পন্ন করার জন্য আমাদের অ্যাপ্লিকেশনটির একাধিক তৃতীয় পক্ষের পরিষেবাগুলির সাথে যোগাযোগ করা প্রয়োজন: সরাসরি আমাদের কোডটিকে তৃতীয় পক্ষের পরিষেবাগুলির সাথে সংযুক্ত করে এর অর্থ হ'ল তৃতীয় পক্ষের সেবার যে কোনও পরিবর্তনের ফলে একাধিক স্থানে আমাদের কোডে পরিবর্তন আসতে পারে, পরিবর্তে আমাদের Facadeঅভ্যন্তরীণভাবে এই একাধিক পরিষেবাদির সাথে ইন্টারঅ্যাক্ট হতে পারে এবং পরিষেবাগুলিতে যে কোনও পরিবর্তন স্থানীয় হতে পারে Facadeএবং তৃতীয় পক্ষের সাথে কম সংযোগ স্থাপন করতে পারে সেবা.


3
দুর্দান্ত উত্তর! যদি সম্ভব হয় তবে আপনি কি আরও কিছু উদাহরণ ব্যবহার করতে পারেন? সংযোগ পুলিং সবার কাছে পরিষ্কার নাও হতে পারে। নির্বিশেষে, এটি সত্যই আমাকে সাহায্য করেছিল। সূতরাং ধন্যবাদ!
সাকেত জৈন

সংযোগলিস্টনার ইন্টারফেস ব্যবহার কীভাবে দম্পতি হ্রাস করতে সহায়তা করে? আপনি কি এমন উদাহরণ প্রদান করতে পারেন যা বুঝতে সহজতর?
অভিষেক গুপ্ত

1
@ অভিষেকগুপ্ত এই উদাহরণে আপনি লক্ষ করেছেন যে আমরা কম / আলগা মিলনের জন্য পর্যবেক্ষক প্যাটার্ন ব্যবহার করেছি। এর মধ্য দিয়ে যেতে সাহায্য করবে পর্যবেক্ষক কীভাবে আলগা-মিলিত নকশা তৈরি করবেন?
মধুসূদন রেড্ডি সুন্নাপু

33

সংহততা বৃদ্ধি এবং সংযুক্ত সংযোগগুলি ভাল সফ্টওয়্যার ডিজাইনের দিকে পরিচালিত করে।

সংহতি আপনার ক্রিয়াকলাপটিকে পার্টিশন করে যাতে এটি সংক্ষিপ্ত এবং এর সাথে সম্পর্কিত ডেটার নিকটতম হয়, যদিও ডিকোপলিং নিশ্চিত করে যে কার্যকারিতা বাস্তবায়নটি সিস্টেমের বাকী অংশ থেকে পৃথক করা হয়েছে।

ডিকপলিং আপনাকে আপনার সফ্টওয়্যারটির অন্যান্য অংশগুলিকে প্রভাবিত না করে বাস্তবায়ন পরিবর্তন করতে দেয়।

সংহতি নিশ্চিত করে যে বাস্তবায়ন কার্যকারিতার সাথে আরও নির্দিষ্ট এবং একই সাথে বজায় রাখা সহজ।

সংযুক্তি হ্রাস এবং সংযুক্তি বাড়ানোর সবচেয়ে কার্যকর পদ্ধতি হ'ল ইন্টারফেসের দ্বারা ডিজাইন

এটি হ'ল প্রধান কার্যক্ষম বস্তুগুলি কেবলমাত্র একে অপরকে ইন্টারফেস (গুলি) প্রয়োগ করে যা তারা প্রয়োগ করে। একটি ইন্টারফেস বাস্তবায়ন প্রাকৃতিক ফলাফল হিসাবে সংহতি পরিচয় করিয়ে দেয়।

কিছু সিনিয়রিওতে বাস্তবসম্মত না হলেও এটি দ্বারা কাজ করার জন্য একটি ডিজাইনের লক্ষ্য হওয়া উচিত।

উদাহরণ (খুব স্কেচি):

public interface IStackoverFlowQuestion
      void SetAnswered(IUserProfile user);
      void VoteUp(IUserProfile user);
      void VoteDown(IUserProfile user);
}

public class NormalQuestion implements IStackoverflowQuestion {
      protected Integer vote_ = new Integer(0);
      protected IUserProfile user_ = null;
      protected IUserProfile answered_ = null;

      public void VoteUp(IUserProfile user) {
           vote_++;
           // code to ... add to user profile
      }

      public void VoteDown(IUserProfile user) {
          decrement and update profile
      }

      public SetAnswered(IUserProfile answer) {
           answered_ = answer
           // update u
      }
}

public class CommunityWikiQuestion implements IStackoverflowQuestion {
     public void VoteUp(IUserProfile user) { // do not update profile }
     public void VoteDown(IUserProfile user) { // do not update profile }
     public void SetAnswered(IUserProfile user) { // do not update profile }
}

আপনার কোডবেসে অন্য কোথাও আপনার কাছে একটি মডিউল থাকতে পারে যা সেগুলি নির্বিশেষে প্রশ্নগুলি প্রক্রিয়া করে:

public class OtherModuleProcessor {
    public void Process(List<IStackoverflowQuestion> questions) {
       ... process each question.
    }
}

28

সংহতির সর্বোত্তম ব্যাখ্যা চাচা বব এর পরিষ্কার কোড থেকে আসে:

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

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

ফাংশনগুলি ছোট রাখার এবং পরামিতি তালিকাগুলি সংক্ষিপ্ত রাখার কৌশলটি মাঝে মাঝে উদাহরণের ভেরিয়েবলগুলির প্রসারণ হতে পারে যা পদ্ধতিগুলির একটি উপসেট দ্বারা ব্যবহৃত হয়। এটি যখন ঘটে তখন প্রায় সর্বদা এর অর্থ হ'ল কমপক্ষে অন্য একটি শ্রেণি বৃহত্তর শ্রেণি থেকে বেরিয়ে আসার চেষ্টা করছে। আপনার ভেরিয়েবল এবং পদ্ধতিগুলি দুটি বা আরও বেশি ক্লাসে পৃথক করার চেষ্টা করা উচিত যাতে নতুন ক্লাসগুলি আরও সংহত হয়।


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

13

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

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

সংহতি এবং মিলনের দৃষ্টিকোণ থেকে কোডের প্রকার:

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

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

ধ্বংসাত্মক decoupling সবচেয়ে আকর্ষণীয় এক। এটি কখনও কখনও ঘটে যখন কোনও প্রোগ্রামার একটি কোড বেসকে এত বেশি ডিক্লোল করার চেষ্টা করে যে কোডটি সম্পূর্ণভাবে তার ফোকাসটি হারাতে পারে:এখানে চিত্র বর্ণনা লিখুন

এখানে আরও পড়ুন


1
দুর্দান্ত নিবন্ধ এবং চিত্রণ! আমি যদি কেবল একটি চিন্তার উন্নতির পরামর্শ দিতে পারি তবে আমি পছন্দ করি যে কীভাবে 'দুর্বল নির্বাচিত' অবিচ্ছিন্ন শব্দার্থবিজ্ঞানযুক্ত উপাদানগুলির গোষ্ঠীগুলিকে সামান্য ঝাঁকুনিতে রাখে, তবে আমি মনে করি তাদের মধ্যে দৃশ্যমানভাবে আরও তীর থাকা উচিত। সর্বোপরি, এমনকি আপনার 4-বর্গক্ষেত্রের গ্রাফগুলিতেও এটি 'কাপলিং' অক্ষের উপরের রেঞ্জের মধ্যে পড়ে।
স্লাওমির ব্রজেঞ্জিনস্কি

1
আমি আরও বলব যে 'খারাপভাবে নির্বাচিত' প্রতিটি ঝাঁকের ভিতরে কম তীর থাকা উচিত। আপনার নিবন্ধের 'ফোল্ডার কাঠামো' উদাহরণটি ব্যবহার করে, যা আপনি 'খারাপভাবে নির্বাচিত' ভাণ্ডার বা কারখানা হিসাবে শ্রেণিবদ্ধ করেছেন অবশ্যই একে অপরের সাথে কথা বলবেন না।
স্লাওমির ব্রজেজনসকি

আপডেট: আমি এই পরামর্শগুলি চিত্রের মূল লেখকের কাছে উত্থাপন করেছি এবং লেখক তাদের সাথে একমত হয়েছেন
স্লাওমির ব্রজেজনসকি

11

সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের একত্রিতকরণ হ'ল ডিগ্রি যা নির্দিষ্ট মডিউলের উপাদানগুলি একত্রে অন্তর্ভুক্ত। সুতরাং, এটি একটি পরিমাপ যা কোনও সফ্টওয়্যার মডিউলের উত্স কোড দ্বারা প্রকাশিত কার্যকারিতাটির প্রতিটি অংশটি কত দৃ strongly়ভাবে সম্পর্কিত।

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

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


4

এখানে চিত্র বর্ণনা লিখুন

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

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


2

সংযোগ (সংযোগ): কো যার মানে একসঙ্গে , hesion যা মানে লাঠি করতে । বিভিন্ন পদার্থের কণা একসাথে স্টিকিংয়ের সিস্টেম।

বাস্তব জীবনের উদাহরণের জন্য: img সৌজন্যে
এখানে চিত্র বর্ণনা লিখুন

পার্টস-অ্যারিস্টটলের যোগফলের চেয়ে সম্পূর্ণ বৃহত্তর।

  • একাত্মতা পরিমাপের একটি সাধারণ ধরণের এবং সাধারণত "উচ্চ সংহতি" বা "নিম্ন সংহতি" হিসাবে বর্ণনা করা হয়। উচ্চ সংহতিযুক্ত মডিউলগুলি পছন্দনীয় হতে পারে, কারণ দৃ co়তা, নির্ভরযোগ্যতা, পুনরায় ব্যবহারযোগ্যতা এবং বোধগম্যতা সহ সফটওয়্যারের বেশ কয়েকটি পছন্দসই বৈশিষ্ট্যের সাথে উচ্চ সংহতি যুক্ত হয়। বিপরীতে, কম সংহতি রক্ষা করা, পরীক্ষা করা, পুনরায় ব্যবহার করা, এমনকি বোঝার মতো অসুবিধে হওয়ার মতো অনাকাঙ্ক্ষিত বৈশিষ্ট্যের সাথে সম্পর্কিত। উইকি

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


1

আমি মনে করি পার্থক্যগুলি নিম্নলিখিত হিসাবে রাখা যেতে পারে:

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

এই ব্লগ পোস্টে আমি এটি সম্পর্কে আরও বিস্তারিত লিখুন।


1

একাত্মতা একটি মডিউল সম্পর্কিত আপেক্ষিক কার্যকারিতা একটি ইঙ্গিত।

  • একটি সমন্বিত মডিউল একটি কর্ম সম্পাদন করে, একটি প্রোগ্রামের অন্যান্য অংশে অন্যান্য উপাদানগুলির সাথে সামান্য ইন্টারঅ্যাকশন প্রয়োজন। সহজভাবে উল্লেখ করা হয়েছে, একটি সম্মিলিত মডিউলটি (আদর্শভাবে) কেবল একটি কাজ করা উচিত।
  • On প্রচলিত দৃশ্য:

    একটি মডিউল "একক মনোভাব"

  • -উইউ ভিউ:

    Heকোশনটি বোঝায় যে কোনও উপাদান বা শ্রেণি কেবল একে অপরের সাথে এবং শ্রেণি বা উপাদানটির সাথে নিবিড়ভাবে জড়িত কেবল এমন বৈশিষ্ট্য এবং ক্রিয়াকলাপগুলিকে আবদ্ধ করে that

  • Co সংহতি এর বিভক্তি

    Functional

    Layer

    Communicational

    Sequential

    Procedural

    Temporal

    utility

কাপলিং মডিউলগুলির মধ্যে আপেক্ষিক আন্তঃনির্ভরতার ইঙ্গিত।

  • কাপলিং মডিউলগুলির মধ্যে ইন্টারফেস জটিলতা, বিন্দুতে কোন মডিউলটিতে প্রবেশ বা রেফারেন্স তৈরি করা হয় এবং ইন্টারফেসের মধ্য দিয়ে কী ডেটা পাস হয় তার উপর নির্ভর করে।

  • প্রচলিত দৃষ্টিভঙ্গি: একটি উপাদান অন্যান্য উপাদান এবং বহিরাগত বিশ্বের সাথে সংযুক্ত যা ডিগ্রি

  • ও ও ভিউ: ক্লাসগুলি একে অপরের সাথে সংযুক্ত রয়েছে এমন ডিগ্রির একটি গুণগত পরিমাপ

  • মিলন স্তর

    Content

    Common

    Control

    Stamp

    Data

    -রোটিন কল

    টাইপ ব্যবহার

    Nc অন্তর্ভুক্তি বা আমদানি

    বহিরাগত #


1

কাপলিং = দুটি মডিউলের মধ্যে ইন্টারঅ্যাকশন / সম্পর্ক ... সংঘটন = একটি মডিউলের মধ্যে দুটি উপাদানগুলির মধ্যে মিথস্ক্রিয়া।

একটি সফ্টওয়্যার অনেকগুলি মডিউল নিয়ে গঠিত। মডিউল উপাদান রয়েছে। একটি মডিউল একটি প্রোগ্রাম বিবেচনা করুন। একটি প্রোগ্রামের মধ্যে একটি ফাংশন একটি উপাদান হয়।

রান সময়ে, কোনও প্রোগ্রামের আউটপুট অন্য প্রোগ্রামের ইনপুট হিসাবে ব্যবহৃত হয়। একে মডিউল থেকে মডিউল ইন্টারঅ্যাকশন বা যোগাযোগ প্রক্রিয়া করার প্রক্রিয়া বলে। এটিকে কাপলিং নামেও ডাকা হয়।

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

উদাহরণ:

মিলন = 2 বিভিন্ন পরিবারের মধ্যে যোগাযোগ ... সংশ্লেষ = একটি পরিবারের মধ্যে বাবা-মা-সন্তানের মধ্যে যোগাযোগ।


1
সুতরাং আপনি কীভাবে কোনও সফ্টওয়্যারে তাদের প্রভাবের প্রসঙ্গে তাদের ব্যাখ্যা করবেন?
ইটবান সা Saeed

একটি সফ্টওয়্যার অনেকগুলি মডিউল নিয়ে গঠিত। মডিউল উপাদান রয়েছে। একটি মডিউল একটি প্রোগ্রাম বিবেচনা করুন। একটি প্রোগ্রামের মধ্যে একটি ফাংশন একটি উপাদান হয়।
দীপঙ্কর নলুই

1

সোজা কথায় , সংহতি অর্থ একটি শ্রেণীর একটি একক ধারণা উপস্থাপন করা উচিত।

কোনও শ্রেণীর পাবলিক ইন্টারফেস সম্মিলিত হয় যদি সমস্ত শ্রেণীর বৈশিষ্ট্যগুলি শ্রেণীর প্রতিনিধিত্ব করে এমন ধারণার সাথে সম্পর্কিত হয়। উদাহরণস্বরূপ, ক্যাশরেজিস্টার ক্লাস না হওয়ার পরিবর্তে, ক্যাশরেজিস্টার এবং কয়েন বৈশিষ্ট্যগুলির সমন্বয়টি এটি 2 শ্রেণিতে পরিণত করে - ক্যাশরেজিস্টার এবং কয়েন শ্রেণি।

ইন কাপলিং , এক বর্গ অন্য উপর নির্ভর করে যেমন ক্লাসের বস্তু ব্যবহার করে।

উচ্চ সংশ্লেষের সমস্যাটি এটি পার্শ্ব প্রতিক্রিয়া তৈরি করতে পারে। এক শ্রেণিতে এক পরিবর্তন অন্য শ্রেণিতে অপ্রত্যাশিত ত্রুটির কারণ হতে পারে এবং পুরো কোডটি ভেঙে দিতে পারে।

সাধারণত, উচ্চ সংহতি এবং কম সংযুক্তিকে উচ্চ মানের ওওপি হিসাবে বিবেচনা করা হয়।


0

সংহতি শব্দটি আসলে সফ্টওয়্যার ডিজাইনে এর অর্থ কী তার জন্য কিছুটা স্বজ্ঞাত।

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

সম্ভবত আমরা এটি এইভাবে ভাবতে পারি। একটি অংশ যখন একমাত্র অংশ হয় তখন সর্বাধিক সংহতি থাকে (কেবল একটি জিনিস করে এবং আরও ভাঙা যায় না)। সফ্টওয়্যার ডিজাইনে এটিই পছন্দসই। "একক দায়বদ্ধতা" বা "উদ্বেগের বিচ্ছেদ" এর একমাত্র নামই কোহেন্স Co

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


লোকেরা ক্লাসের পরিবর্তে মডিউল শব্দটি ব্যবহার করে চলেছে কেন?
উত্তর উত্তর

1
@ উত্তরার এটির আরও সাধারণ শব্দ।
জার

0

তত্ত্বের পার্থক্য

সংযোগ

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

সংহতির শ্রেণিবিন্যাস

1.সম্পর্কীয় 2. যৌক্তিক 3. সাম্প্রদায়িক 4. পূর্ববর্তী 4. কার্যনির্বাহী 6. যোগাযোগ 6. 6. প্রয়োজনীয় 7. কার্যকরী

সংযোজন

  • কাপলিং মডিউলগুলির মধ্যে আপেক্ষিক নির্ভরশীলতার ইঙ্গিত।
  • দুটি মডিউলগুলির মধ্যে সংযোগের ডিগ্রি তাদের ইন্টারফেসের জটিলতার উপর নির্ভর করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.