সংহতি এবং মিলনের মধ্যে পার্থক্য কী?
কীভাবে সংযুক্তি এবং সংহতি ভাল বা দুর্বল সফ্টওয়্যার ডিজাইনের দিকে নিয়ে যেতে পারে?
দু'টির মধ্যে পার্থক্যের রূপরেখা এবং সামগ্রিক কোডের মানের উপর তাদের প্রভাবের রূপরেখা এমন কয়েকটি উদাহরণ কী?
সংহতি এবং মিলনের মধ্যে পার্থক্য কী?
কীভাবে সংযুক্তি এবং সংহতি ভাল বা দুর্বল সফ্টওয়্যার ডিজাইনের দিকে নিয়ে যেতে পারে?
দু'টির মধ্যে পার্থক্যের রূপরেখা এবং সামগ্রিক কোডের মানের উপর তাদের প্রভাবের রূপরেখা এমন কয়েকটি উদাহরণ কী?
উত্তর:
একাত্মতা বলতে ক্লাস (বা মডিউল) কী করতে পারে তা বোঝায়। নিম্ন সংহতি বলতে বোঝায় যে ক্লাসটি বিভিন্ন ধরণের ক্রিয়া করে - এটি বিস্তৃত, কী করা উচিত তা নিয়ে ফোকাসবিহীন। উচ্চ সংহতি মানে শ্রেণিটি কী করা উচিত তার উপর দৃষ্টি নিবদ্ধ করে, অর্থাত কেবল শ্রেণীর উদ্দেশ্য সম্পর্কিত পদ্ধতিগুলি।
নিম্ন সংহতির উদাহরণ:
-------------------
| Staff |
-------------------
| checkEmail() |
| sendEmail() |
| emailValidate() |
| PrintLetter() |
-------------------
উচ্চ সামঞ্জস্যের উদাহরণ:
----------------------------
| Staff |
----------------------------
| -salary |
| -emailAddr |
----------------------------
| setSalary(newSalary) |
| getSalary() |
| setEmailAddr(newEmail) |
| getEmailAddr() |
----------------------------
হিসাবে কাপলিং যে, তা কিভাবে সংশ্লিষ্ট বা নির্ভরশীল দুটি ক্লাস / মডিউল একে অপরের দিকে হয় বোঝায়। নিম্ন যুগল শ্রেণীর জন্য, এক শ্রেণিতে প্রধান কিছু পরিবর্তন করা অন্যটির উপর প্রভাব ফেলবে না। উচ্চ সংযুক্তি আপনার কোড পরিবর্তন এবং পরিচালনা বজায় রাখতে অসুবিধা করবে; যেহেতু ক্লাসগুলি একত্রে নিবিড়ভাবে বোনা হয়, একটি পরিবর্তন করা সম্পূর্ণ সিস্টেমের পুনর্নির্মাণের প্রয়োজন হতে পারে।
ভাল সফ্টওয়্যার ডিজাইনের উচ্চ সংহতি এবং কম সংযোগ রয়েছে ।
set
& get
ফাংশন চিত্রিত যে, "স্টাফ" প্রসঙ্গ আরো নির্দিষ্ট কার্যকারিতা - উচ্চতর নির্দিষ্টতা দিতে উদাহরণস্বরূপ তার উচ্চতর সংযোগ।
সংঘবদ্ধতা একটি মডিউল মধ্যে সম্পর্কের ইঙ্গিত ।
কাপলিং হ'ল মডিউলগুলির মধ্যে সম্পর্কের ইঙ্গিত ।
সংযোগ
সংযোজন
এই লিঙ্কটি পরীক্ষা করুন
উচ্চ সংযোগ মধ্যে মডিউল এবং কম কাপলিং মধ্যে মডিউল প্রায়ই গণ্য করা হয় যেমন OO যেমন পণ্য প্রোগ্রামিং ভাষাতে উচ্চ মানের এর সাথে সম্পর্কিত।
উদাহরণস্বরূপ, প্রতিটি জাভা ক্লাসের কোডের অবশ্যই উচ্চ অভ্যন্তরীণ সংহতি থাকতে হবে, তবে অন্যান্য জাভা ক্লাসের কোডের সাথে যতটা সম্ভব স্বচ্ছভাবে মিলিত হওয়া উচিত led
মায়ারের অবজেক্ট-ওরিয়েন্টড সফটওয়্যার কনস্ট্রাকশন (২ য় সংস্করণ) এর অধ্যায় 3 এই বিষয়গুলির দুর্দান্ত বর্ণনা রয়েছে।
সংযুক্তি কোনও সফ্টওয়্যার উপাদানগুলির দায়িত্বগুলি কীভাবে সম্পর্কিত এবং কেন্দ্রীভূত হয় তার একটি ইঙ্গিত।
কাপলিং বলতে বোঝায় যে কোনও সফ্টওয়্যার উপাদান অন্যান্য উপাদানগুলির সাথে কীভাবে দৃ connected়ভাবে সংযুক্ত।
সফ্টওয়্যার উপাদান শ্রেণি, প্যাকেজ, উপাদান, সাবসিস্টেম বা একটি সিস্টেম হতে পারে। আর যখন সিস্টেম্স নকশা এটা সফ্টওয়্যার উপাদান আছে আছে বাঞ্ছনীয় উচ্চ সংযোগ এবং সমর্থন নিম্ন কাপলিং ।
একত্রীকরণের ক্লাসগুলিতে নিম্ন সংহতির ফলাফল যা বজায় রাখা, বোঝা এবং পুনরায় ব্যবহারযোগ্যতা হ্রাস করে difficult একইভাবে উচ্চ সংযোগের ফলাফলগুলি এমন ক্লাসগুলিতে আসে যা দৃ changes়তার সাথে মিলিত হয় এবং পরিবর্তনগুলি স্থানীয় হয় না, পরিবর্তন করা কঠিন এবং পুনরায় ব্যবহার হ্রাস করে reduces
আমরা একটি অনুমানমূলক পরিস্থিতি নিতে পারি যেখানে আমরা ConnectionPool
নিম্নলিখিত প্রয়োজনীয়তা সহ একটি সাধারণ মনিটর-সক্ষম ডিজাইন করি । মনে রাখবেন, এটি সাধারণ শ্রেণীর মতো দেখতে খুব বেশি লাগতে পারে ConnectionPool
তবে প্রাথমিক উদ্দেশ্যটি হ'ল কিছু সাধারণ উদাহরণ সহ কম সংযোগ এবং উচ্চ সংহতি প্রদর্শন করা এবং আমার মনে হয় এটি সহায়তা করা উচিত।
সঙ্গে কম সংযোগ আমরা একটি নকশা পারে ConnectionPool
জোর করে নিচের হিসাবে একটি একক শ্রেণীর মধ্যে সব এই কার্যকারিতা / দায়িত্ব ঠাসাঠাসি দ্বারা বর্গ। আমরা দেখতে পাচ্ছি যে এই একক শ্রেণি সংযোগ ব্যবস্থাপনার জন্য, ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করার পাশাপাশি সংযোগের পরিসংখ্যান বজায় রাখার জন্য দায়ী।
সঙ্গে উচ্চ সংযোগ আমরা ক্লাস জুড়ে এই দায়িত্ব নির্ধারণ এবং এটা আরো রক্ষণীয় এবং পুনর্ব্যবহারযোগ্য করে তুলতে পারে।
লো সংযুক্তি প্রদর্শনের জন্য আমরা ConnectionPool
উপরের উচ্চ সংহতি চিত্রটি দিয়ে চালিয়ে যাব । যদি আমরা উপরের চিত্রটি দেখি তবে এটি উচ্চ সংহতিকে সমর্থন করে যদিও শ্রেণীর ConnectionPool
সাথে দৃ with়ভাবে মিলিত হয় ConnectionStatistics
এবং PersistentStore
এটি সরাসরি তাদের সাথে যোগাযোগ করে। সংযুক্তিকে হ্রাস করার পরিবর্তে আমরা একটি ConnectionListener
ইন্টারফেস প্রবর্তন করতে পারি এবং এই দুটি ক্লাসটিকে ইন্টারফেসটি বাস্তবায়িত করতে এবং তাদের ConnectionPool
ক্লাসে নিবন্ধন করতে দিন । এবং ConnectionPool
এই শ্রোতার মাধ্যমে পুনরাবৃত্তি হবে এবং সংযোগের বিষয়ে তাদেরকে বিজ্ঞপ্তি দেবে এবং ইভেন্টগুলি প্রকাশ করবে এবং কম সংযোগের অনুমতি দেবে।
নোট / শব্দ বা সতর্কতা: এই সাধারণ দৃশ্যের জন্য এটি ওভারকিলের মতো দেখাতে পারে তবে আমরা যদি এমন কোনও বাস্তব-সময়ের দৃশ্য কল্পনা করি যেখানে কোনও লেনদেন সম্পন্ন করার জন্য আমাদের অ্যাপ্লিকেশনটির একাধিক তৃতীয় পক্ষের পরিষেবাগুলির সাথে যোগাযোগ করা প্রয়োজন: সরাসরি আমাদের কোডটিকে তৃতীয় পক্ষের পরিষেবাগুলির সাথে সংযুক্ত করে এর অর্থ হ'ল তৃতীয় পক্ষের সেবার যে কোনও পরিবর্তনের ফলে একাধিক স্থানে আমাদের কোডে পরিবর্তন আসতে পারে, পরিবর্তে আমাদের Facade
অভ্যন্তরীণভাবে এই একাধিক পরিষেবাদির সাথে ইন্টারঅ্যাক্ট হতে পারে এবং পরিষেবাগুলিতে যে কোনও পরিবর্তন স্থানীয় হতে পারে Facade
এবং তৃতীয় পক্ষের সাথে কম সংযোগ স্থাপন করতে পারে সেবা.
সংহততা বৃদ্ধি এবং সংযুক্ত সংযোগগুলি ভাল সফ্টওয়্যার ডিজাইনের দিকে পরিচালিত করে।
সংহতি আপনার ক্রিয়াকলাপটিকে পার্টিশন করে যাতে এটি সংক্ষিপ্ত এবং এর সাথে সম্পর্কিত ডেটার নিকটতম হয়, যদিও ডিকোপলিং নিশ্চিত করে যে কার্যকারিতা বাস্তবায়নটি সিস্টেমের বাকী অংশ থেকে পৃথক করা হয়েছে।
ডিকপলিং আপনাকে আপনার সফ্টওয়্যারটির অন্যান্য অংশগুলিকে প্রভাবিত না করে বাস্তবায়ন পরিবর্তন করতে দেয়।
সংহতি নিশ্চিত করে যে বাস্তবায়ন কার্যকারিতার সাথে আরও নির্দিষ্ট এবং একই সাথে বজায় রাখা সহজ।
সংযুক্তি হ্রাস এবং সংযুক্তি বাড়ানোর সবচেয়ে কার্যকর পদ্ধতি হ'ল ইন্টারফেসের দ্বারা ডিজাইন ।
এটি হ'ল প্রধান কার্যক্ষম বস্তুগুলি কেবলমাত্র একে অপরকে ইন্টারফেস (গুলি) প্রয়োগ করে যা তারা প্রয়োগ করে। একটি ইন্টারফেস বাস্তবায়ন প্রাকৃতিক ফলাফল হিসাবে সংহতি পরিচয় করিয়ে দেয়।
কিছু সিনিয়রিওতে বাস্তবসম্মত না হলেও এটি দ্বারা কাজ করার জন্য একটি ডিজাইনের লক্ষ্য হওয়া উচিত।
উদাহরণ (খুব স্কেচি):
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.
}
}
সংহতির সর্বোত্তম ব্যাখ্যা চাচা বব এর পরিষ্কার কোড থেকে আসে:
ক্লাসে সংখ্যার ইনস্ট্যান্স ভেরিয়েবল থাকা উচিত। শ্রেণীর প্রতিটি পদ্ধতির একটি বা একাধিক ভেরিয়েবলগুলি পরিচালনা করতে হবে। সাধারণভাবে আরও ভেরিয়েবল একটি পদ্ধতি তার শ্রেণিতে যে পদ্ধতিটি তত বেশি সংযুক্ত করে পরিচালনা করে । এমন একটি শ্রেণি যেখানে প্রতিটি পদ্ধতিতে প্রতিটি ভেরিয়েবল ব্যবহার করা হয় তা সর্বাধিক সম্মতিযুক্ত।
সাধারণভাবে এ জাতীয় সর্বাধিক সম্মিলিত শ্রেণি তৈরি করা ঠিক নয় বা সম্ভব নয়; অন্যদিকে, আমরা একত্রিত হতে চাই । যখন সংহতি উচ্চ হয়, এর অর্থ এই হয় যে শ্রেণীর পদ্ধতি এবং ভেরিয়েবলগুলি সহ-নির্ভরশীল এবং লজিকাল পুরো হিসাবে একত্রে স্তব্ধ হয়।
ফাংশনগুলি ছোট রাখার এবং পরামিতি তালিকাগুলি সংক্ষিপ্ত রাখার কৌশলটি মাঝে মাঝে উদাহরণের ভেরিয়েবলগুলির প্রসারণ হতে পারে যা পদ্ধতিগুলির একটি উপসেট দ্বারা ব্যবহৃত হয়। এটি যখন ঘটে তখন প্রায় সর্বদা এর অর্থ হ'ল কমপক্ষে অন্য একটি শ্রেণি বৃহত্তর শ্রেণি থেকে বেরিয়ে আসার চেষ্টা করছে। আপনার ভেরিয়েবল এবং পদ্ধতিগুলি দুটি বা আরও বেশি ক্লাসে পৃথক করার চেষ্টা করা উচিত যাতে নতুন ক্লাসগুলি আরও সংহত হয়।
সহজভাবে, কোহশন এমন একটি ডিগ্রি প্রতিনিধিত্ব করে যেখানে একটি কোড বেসের একটি অংশ লজিক্যাল একক, পারমাণবিক ইউনিট গঠন করে। অন্যদিকে কাপলিং এমন এক ডিগ্রি প্রতিনিধিত্ব করে যা একটি ইউনিট অন্যের থেকে স্বতন্ত্র। অন্য কথায়, এটি দুটি বা ততোধিক ইউনিটের সংযোগের সংখ্যা। সংখ্যায় যত কম, মিলন কম হবে।
সংক্ষেপে, উচ্চ একাত্মতা মানে একটি কোড বেসের অংশগুলি যা একে অপরের সাথে একক স্থানে সম্পর্কিত keeping কম সংশ্লেষ, একই সময়ে, কোড বেসের অপ্রাসঙ্গিক অংশগুলিকে যথাসম্ভব আলাদা করার বিষয়ে।
সংহতি এবং মিলনের দৃষ্টিকোণ থেকে কোডের প্রকার:
আদর্শ হ'ল নির্দেশিকাটি অনুসরণ করে এমন কোড। এটি আলগাভাবে মিলিত এবং অত্যন্ত সম্মিলিত। আমরা এই ছবির মাধ্যমে এই জাতীয় কোডটি বর্ণনা করতে পারি:
গড অবজেক্ট উচ্চ সংহতি এবং উচ্চ সংযুক্তির পরিচয় দেওয়ার ফলাফল। এটা তোলে বিরোধী প্যাটার্ন এবং মূলত কোডের একটি একক টুকরা যে একবারে সব কাজ করে ঘোরা: দুর্বল নির্বাচিত যখন বিভিন্ন শ্রেণীর বা মডিউল মধ্যে সীমানা দুর্বল নির্বাচন করা হয় সঞ্চালিত
ধ্বংসাত্মক decoupling সবচেয়ে আকর্ষণীয় এক। এটি কখনও কখনও ঘটে যখন কোনও প্রোগ্রামার একটি কোড বেসকে এত বেশি ডিক্লোল করার চেষ্টা করে যে কোডটি সম্পূর্ণভাবে তার ফোকাসটি হারাতে পারে:
এখানে আরও পড়ুন
সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের একত্রিতকরণ হ'ল ডিগ্রি যা নির্দিষ্ট মডিউলের উপাদানগুলি একত্রে অন্তর্ভুক্ত। সুতরাং, এটি একটি পরিমাপ যা কোনও সফ্টওয়্যার মডিউলের উত্স কোড দ্বারা প্রকাশিত কার্যকারিতাটির প্রতিটি অংশটি কত দৃ strongly়ভাবে সম্পর্কিত।
সহজ কথায় একত্রিত হওয়া, এটিই যে একটি উপাদান (আবার কোনও শ্রেণীর কল্পনা করুন, যদিও তা অপরিহার্য নয়) অন্য একটির অভ্যন্তরীণ কাজগুলি বা অভ্যন্তরীণ উপাদানগুলি সম্পর্কে, যেমন এটি অন্য উপাদানটির কতটা জ্ঞান রাখে knows
আমি এই সম্পর্কে একটি ব্লগ পোস্ট লিখেছি , আপনি উদাহরণ এবং অঙ্কন সঙ্গে আরও কিছু বিশদে পড়তে চান। আমি মনে করি এটি আপনার বেশিরভাগ প্রশ্নের উত্তর দেয়।
একক শ্রেণি কীভাবে ডিজাইন করা হয়েছে সে সম্পর্কে সম্মিলন বোঝায়। কোহশন হ'ল অবজেক্ট অরিয়েন্টেড নীতিটি সর্বাধিক ঘনিষ্ঠভাবে সুনিশ্চিত করার সাথে জড়িত যে কোনও শ্রেণিটি একক, সু-কেন্দ্রিক উদ্দেশ্য নিয়ে ডিজাইন করা হয়েছে। একটি শ্রেণি যত বেশি কেন্দ্রীভূত হয়, সেই শ্রেণীর একাত্মতা আরও বেশি। উচ্চ সংহতির সুবিধা হ'ল এই জাতীয় ক্লাসগুলি কম সংহতিযুক্ত ক্লাসগুলির চেয়ে বজায় রাখা খুব সহজ (এবং কম ঘন ঘন পরিবর্তিত হয়)। উচ্চ সংহতির আরেকটি সুবিধা হ'ল সু-কেন্দ্রিক উদ্দেশ্য সম্পন্ন ক্লাসগুলি অন্যান্য শ্রেণীর তুলনায় পুনরায় ব্যবহারযোগ্য হতে থাকে।
উপরের চিত্রটিতে, আমরা দেখতে পাচ্ছি যে কম সংশ্লেষে কেবলমাত্র এক শ্রেণিই প্রচুর কাজ সম্পাদন করতে দায়বদ্ধ যা সাধারণ নয় যা পুনরায় ব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণের সম্ভাবনা হ্রাস করে। তবে উচ্চ সংহতিতে একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য সমস্ত কাজের জন্য একটি পৃথক শ্রেণি রয়েছে, যার ফলশ্রুতি ভাল ব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণের জন্য।
সংযোগ (সংযোগ): কো যার মানে একসঙ্গে , hesion যা মানে লাঠি করতে । বিভিন্ন পদার্থের কণা একসাথে স্টিকিংয়ের সিস্টেম।
বাস্তব জীবনের উদাহরণের জন্য: img সৌজন্যে
পার্টস-অ্যারিস্টটলের যোগফলের চেয়ে সম্পূর্ণ বৃহত্তর।
একাত্মতা পরিমাপের একটি সাধারণ ধরণের এবং সাধারণত "উচ্চ সংহতি" বা "নিম্ন সংহতি" হিসাবে বর্ণনা করা হয়। উচ্চ সংহতিযুক্ত মডিউলগুলি পছন্দনীয় হতে পারে, কারণ দৃ co়তা, নির্ভরযোগ্যতা, পুনরায় ব্যবহারযোগ্যতা এবং বোধগম্যতা সহ সফটওয়্যারের বেশ কয়েকটি পছন্দসই বৈশিষ্ট্যের সাথে উচ্চ সংহতি যুক্ত হয়। বিপরীতে, কম সংহতি রক্ষা করা, পরীক্ষা করা, পুনরায় ব্যবহার করা, এমনকি বোঝার মতো অসুবিধে হওয়ার মতো অনাকাঙ্ক্ষিত বৈশিষ্ট্যের সাথে সম্পর্কিত। উইকি
দম্পতি সাধারণত সংহতি সঙ্গে বিপরীতে হয় । কম সংযুক্তি প্রায়শই উচ্চ সংহতির সাথে সম্পর্কিত হয় এবং এর বিপরীতে। কম সংযুক্তি প্রায়শই একটি সুগঠিত কম্পিউটার সিস্টেম এবং একটি ভাল ডিজাইনের লক্ষণ এবং উচ্চ সংহতির সাথে মিলিত হলে উচ্চ পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের সাধারণ লক্ষ্যগুলিকে সমর্থন করে। উইকি
আমি মনে করি পার্থক্যগুলি নিম্নলিখিত হিসাবে রাখা যেতে পারে:
এই ব্লগ পোস্টে আমি এটি সম্পর্কে আরও বিস্তারিত লিখুন।
একাত্মতা একটি মডিউল সম্পর্কিত আপেক্ষিক কার্যকারিতা একটি ইঙ্গিত।
On প্রচলিত দৃশ্য:
একটি মডিউল "একক মনোভাব"
-উইউ ভিউ:
Heকোশনটি বোঝায় যে কোনও উপাদান বা শ্রেণি কেবল একে অপরের সাথে এবং শ্রেণি বা উপাদানটির সাথে নিবিড়ভাবে জড়িত কেবল এমন বৈশিষ্ট্য এবং ক্রিয়াকলাপগুলিকে আবদ্ধ করে that
Co সংহতি এর বিভক্তি
Functional
Layer
Communicational
Sequential
Procedural
Temporal
utility
কাপলিং মডিউলগুলির মধ্যে আপেক্ষিক আন্তঃনির্ভরতার ইঙ্গিত।
কাপলিং মডিউলগুলির মধ্যে ইন্টারফেস জটিলতা, বিন্দুতে কোন মডিউলটিতে প্রবেশ বা রেফারেন্স তৈরি করা হয় এবং ইন্টারফেসের মধ্য দিয়ে কী ডেটা পাস হয় তার উপর নির্ভর করে।
প্রচলিত দৃষ্টিভঙ্গি: একটি উপাদান অন্যান্য উপাদান এবং বহিরাগত বিশ্বের সাথে সংযুক্ত যা ডিগ্রি
ও ও ভিউ: ক্লাসগুলি একে অপরের সাথে সংযুক্ত রয়েছে এমন ডিগ্রির একটি গুণগত পরিমাপ
মিলন স্তর
Content
Common
Control
Stamp
Data
-রোটিন কল
টাইপ ব্যবহার
Nc অন্তর্ভুক্তি বা আমদানি
বহিরাগত #
কাপলিং = দুটি মডিউলের মধ্যে ইন্টারঅ্যাকশন / সম্পর্ক ... সংঘটন = একটি মডিউলের মধ্যে দুটি উপাদানগুলির মধ্যে মিথস্ক্রিয়া।
একটি সফ্টওয়্যার অনেকগুলি মডিউল নিয়ে গঠিত। মডিউল উপাদান রয়েছে। একটি মডিউল একটি প্রোগ্রাম বিবেচনা করুন। একটি প্রোগ্রামের মধ্যে একটি ফাংশন একটি উপাদান হয়।
রান সময়ে, কোনও প্রোগ্রামের আউটপুট অন্য প্রোগ্রামের ইনপুট হিসাবে ব্যবহৃত হয়। একে মডিউল থেকে মডিউল ইন্টারঅ্যাকশন বা যোগাযোগ প্রক্রিয়া করার প্রক্রিয়া বলে। এটিকে কাপলিং নামেও ডাকা হয়।
একটি একক প্রোগ্রামের মধ্যে একটি ফাংশনের আউটপুট অন্য ফাংশনে স্থানান্তরিত হয়। একে মডিউলটির মধ্যে উপাদানগুলির মিথস্ক্রিয়া বলা হয়। এটিকে কোহেনশনও বলা হয়।
উদাহরণ:
মিলন = 2 বিভিন্ন পরিবারের মধ্যে যোগাযোগ ... সংশ্লেষ = একটি পরিবারের মধ্যে বাবা-মা-সন্তানের মধ্যে যোগাযোগ।
সোজা কথায় , সংহতি অর্থ একটি শ্রেণীর একটি একক ধারণা উপস্থাপন করা উচিত।
কোনও শ্রেণীর পাবলিক ইন্টারফেস সম্মিলিত হয় যদি সমস্ত শ্রেণীর বৈশিষ্ট্যগুলি শ্রেণীর প্রতিনিধিত্ব করে এমন ধারণার সাথে সম্পর্কিত হয়। উদাহরণস্বরূপ, ক্যাশরেজিস্টার ক্লাস না হওয়ার পরিবর্তে, ক্যাশরেজিস্টার এবং কয়েন বৈশিষ্ট্যগুলির সমন্বয়টি এটি 2 শ্রেণিতে পরিণত করে - ক্যাশরেজিস্টার এবং কয়েন শ্রেণি।
ইন কাপলিং , এক বর্গ অন্য উপর নির্ভর করে যেমন ক্লাসের বস্তু ব্যবহার করে।
উচ্চ সংশ্লেষের সমস্যাটি এটি পার্শ্ব প্রতিক্রিয়া তৈরি করতে পারে। এক শ্রেণিতে এক পরিবর্তন অন্য শ্রেণিতে অপ্রত্যাশিত ত্রুটির কারণ হতে পারে এবং পুরো কোডটি ভেঙে দিতে পারে।
সাধারণত, উচ্চ সংহতি এবং কম সংযুক্তিকে উচ্চ মানের ওওপি হিসাবে বিবেচনা করা হয়।
সংহতি শব্দটি আসলে সফ্টওয়্যার ডিজাইনে এর অর্থ কী তার জন্য কিছুটা স্বজ্ঞাত।
একাত্মতার সাধারণ অর্থ হ'ল এমন কিছু যা ভালভাবে একসাথে থাকে, একত্রিত হয়, যা আণবিক আকর্ষণগুলির মতো দৃ strong় বন্ধন দ্বারা চিহ্নিত হয়। তবে সফ্টওয়্যার ডিজাইনে, এর অর্থ এমন একটি শ্রেণীর জন্য প্রচেষ্টা করা যা আদর্শভাবে কেবল একটি কাজ করে, তাই একাধিক সাব-মডিউলগুলিও এতে জড়িত নয়।
সম্ভবত আমরা এটি এইভাবে ভাবতে পারি। একটি অংশ যখন একমাত্র অংশ হয় তখন সর্বাধিক সংহতি থাকে (কেবল একটি জিনিস করে এবং আরও ভাঙা যায় না)। সফ্টওয়্যার ডিজাইনে এটিই পছন্দসই। "একক দায়বদ্ধতা" বা "উদ্বেগের বিচ্ছেদ" এর একমাত্র নামই কোহেন্স Co
হাতের সংশ্লেষ শব্দটি বেশ স্বজ্ঞাত, যার অর্থ যখন কোনও মডিউল যখন অন্য অনেকগুলি মডিউলের উপর নির্ভর করে না এবং এটি যেগুলির সাথে সংযুক্ত হয় সহজেই প্রতিস্থাপন করা যেতে পারে উদাহরণস্বরূপ লিসকভ প্রতিস্থাপন নীতি মানার জন্য ।
1.সম্পর্কীয় 2. যৌক্তিক 3. সাম্প্রদায়িক 4. পূর্ববর্তী 4. কার্যনির্বাহী 6. যোগাযোগ 6. 6. প্রয়োজনীয় 7. কার্যকরী