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


91

কোনও ইউএমএল শ্রেণির ডায়াগ্রামে অ্যাসোসিয়েশন সম্পর্ক এবং নির্ভরতার সম্পর্কের মধ্যে পার্থক্য কী?

আমি যা জানি, একটি সমিতি নির্ভরতার চেয়ে শক্তিশালী সম্পর্ক, তবে কীভাবে এটি আরও শক্তিশালী তা আমি নিশ্চিত নই।

কোন উদাহরণ স্বাগত চেয়ে বেশি হতে পারে :)

উত্তর:


50

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

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

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

...


6
কেন উত্তর, যখন মার্টিন আপনার পক্ষে এটি এত ভাল করে ?! +1
র্যান্ডলফো

4
এটি এখনও আমার জন্য স্ফটিক পরিষ্কার নয়, তবে একটি জিনিস আমি বুঝতে পেরেছি যে নির্ভরতাগুলি সমিতির চেয়ে কিছুটা 'দুর্বল'। দেখে মনে হয় যে সমিতিগুলি নির্ভরতার একটি উপসেট, যদিও আমার দৃষ্টিতে কমপক্ষে, নির্ভরতা মেলামেশার চেয়ে শক্তিশালী শব্দ। এটি সম্ভবত বিভ্রান্তির উত্স হতে পারে।
ফিলিপ

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

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

@ সফ্টনিনজা: আপনার মানে আপনি বোঝেন নি। বাকি সবাই এটি গ্রহণযোগ্য বলে মনে হচ্ছে। ওহ এবং ডাউনটোটের জন্য ধন্যবাদ
মিচ গম

74

একটি সমিতি প্রায় সবসময়ই বোঝায় যে একটি অবজেক্টের ক্ষেত্র / সম্পত্তি / বৈশিষ্ট্য হিসাবে পৃথক বস্তুর রয়েছে (পরিভাষা পৃথক পৃথক)।

একটি নির্ভরতা সাধারণত (তবে সর্বদা নয়) বোঝায় যে কোনও বস্তু অন্য পন্থাকে একটি পদ্ধতি প্যারামিটার হিসাবে গ্রহণ করে, ইনস্ট্যান্টিয়েট করে বা অন্য কোনও বস্তু ব্যবহার করে। একটি নির্ভরতা খুব একটা সমিতি দ্বারা নিহিত ।


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

49

ওওপি পদগুলিতে:

সমিতি -> -এর একটি সি অবজেক্ট (সদস্য ভেরিয়েবল হিসাবে)

নির্ভরতা -> একটি রেফারেন্স বি (একটি পদ্ধতি প্যারামিটার বা রিটার্নের ধরণ হিসাবে)

public class A {
    private C c;
    public void myMethod(B b) {
        b.callMethod();
    }
}

আরও একটি বিস্তারিত উত্তর আছে


4
@ নারুটো_উজুমাকি সমষ্টিটি সম্পূর্ণ অংশের সম্পর্ক। উদাহরণস্বরূপ একটি প্লেলিস্ট এবং গান। অ্যাসোসিয়েশন, নির্ভরতা এবং সমষ্টি স্ট্যাকওভারফ্লো.com
আহমদ আবদলঘনি

মার্টিন ফাউলারের ইউএমএল ডিস্টিল্ড বই থেকে : "ক্লাসগুলির সাথে বিভিন্ন কারণে নির্ভরশীলতা বিদ্যমান: এক শ্রেণি অন্যের কাছে একটি বার্তা পাঠায়; একটি শ্রেণীর অপারেশনের পরামিতি হিসাবে অন্য একটি শ্রেণীর উল্লেখ রয়েছে"
আহমদ আবদেলঘানি

24

নির্ভরতা হ'ল যখন আপনি কোনও স্ট্রিং নেন (জাভা, সি # তে স্ট্রিং তাদের মধ্যে একটি বস্তু হিসাবে) প্যারামিটার হিসাবে নিয়ে যায় তখন আপনার শ্রেণি স্ট্রিং ক্লাসের উপর নির্ভরশীল class

অ্যাসোসিয়েশন এমন হয় যখন আপনি নিজের ক্লাসে একটি স্ট্রিংকে একটি গুণ হিসাবে ঘোষণা করেন। তারপরে আপনার কোডটি স্ট্রিং ক্লাসের সাথে সম্পর্কিত।

String name = null //: is a association.

"অ্যাসোসিয়েশন এমন হয় যখন আপনি আপনার ক্লাসে একটি স্ট্রিংকে অ্যাট্রিবিউট হিসাবে ঘোষণা করেন then তারপরে আপনার কোডটি স্ট্রিং ক্লাসের সাথে যুক্ত।" যদি তা হয়, তবে সমিতি এবং রচনার মধ্যে পার্থক্য কী?
ডিন পি

16

নির্ভরতা - শ্রেণীর পরিবর্তন তার নির্ভরশীল শ্রেণীর পরিবর্তনকে প্রভাবিত করে। উদাহরণ- সার্কেল শেপ (একটি ইন্টারফেস) এর উপর নির্ভরশীল। আপনি যদি আকার পরিবর্তন করেন তবে এটি চেনাশোনাকেও প্রভাবিত করে। সুতরাং, বৃত্তের আকারের উপর নির্ভরতা রয়েছে।

সমিতি - এর অর্থ 2 অবজেক্টের মধ্যে একটি নির্দিষ্ট সম্পর্ক রয়েছে

(এক-এক, একাধিক, বহু)

সমিতি 2 প্রকারের-

  1. রচনা
  2. সমষ্টি

    1) রচনা - শক্তিশালী সমিতি বা 2 টি বস্তুর মধ্যে সম্পর্ক between আপনি অন্য শ্রেণীর A এর ভিতরে একটি শ্রেণি বিয়ের একটি অবজেক্ট তৈরি করছেন

 public class A {
       B b;
       public void setB(){
         this.b= new B();
        }
     }

আমরা যদি ক্লাস এ মুছতে থাকি, বি উপস্থিত থাকবে না (বি অবজেক্ট কেবল এ এর ​​মধ্যে তৈরি হয়)।

আর একটি উদাহরণ - বডি এবং লিভার। লিভার শরীরের বাইরে থাকতে পারে না।

2) সমষ্টি - দু'টি বস্তুর মধ্যে দুর্বল প্রকারের সমিতি

public class A {       
             B b;
             public void setB(B b_ref){
                 this.b= b_ref;   
                /* object B is passed as an argument of a method */
              }
   }

এমনকি আপনি ক্লাস এ মুছলেও, বি বাইরে উপস্থিত থাকবে (বি বাইরে তৈরি করা হয়েছে এবং ক্লাস এ তে পাস করা হয়েছে)

এর আরেকটি উদাহরণ- ম্যান অ্যান্ড কার। মানুষের একটি গাড়ি আছে তবে ম্যান ও কার স্বতন্ত্রভাবে বিদ্যমান।


নির্ভরতা স্থানীয় সুযোগ, যেখানে সমিতি শ্রেণির সুযোগ class
ডিম্পিয়াাক্স

10

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


4
আমি এই সংজ্ঞাটি পছন্দ করি সমিতিটি হ'ল: আমি (অন্য শ্রেণীর রেফারেন্স করে এমন ক্লাস) কেবল কোনও জিনিসের রেফারেন্স রাখি, আমি এটি ব্যবহার করি না এবং সেই শ্রেণীর সদস্যরা আমার কাছে আকর্ষণীয় নয়। নির্ভরতা হ'ল: আমি কিছু সদস্য ব্যবহার করি, সুতরাং যদি রেফারেন্স শ্রেণি পরিবর্তন হয় তবে এটি আমার উপর প্রভাব ফেলতে পারে। আমি যদি এটির চেয়ে ঠিক বুঝতে পারি তবে বুঝতে পারি!
রোবসচ

4
আপনার প্রশ্নটি পড়ার পরে প্রথম প্রশ্নটি মনে আসল: মেলামেশার ক্ষেত্রে - কেন কোনও ব্যক্তি কোনও বস্তুর রেফারেন্স রাখবেন এবং এটি ব্যবহার করবেন না? আপনি কি বোঝাতে চাইছেন যে রেফারেন্সটি কেবল একটি ক্ষেত্র, কেবলমাত্র কোনও ক্লায়েন্ট যদি রেফারেন্স সম্পর্কে জানতে চান তবে ফেরত দেওয়া যায়?
এইচ.রাবি

3

একটি নির্ভরতা খুব সাধারণ এবং জটিলতা হ্রাস যতটা সম্ভব নির্ভরতা হ্রাস সম্পর্কে।

একটি সমিতি একটি শক্তিশালী (স্থিতিশীল) নির্ভরতা। সমষ্টি এবং রচনা আরও শক্তিশালী।


-1

অ্যাসোসিয়েশন হয় যখন একটি বস্তুর অন্যটির সাথে কেবল একটি লিঙ্ক থাকে এবং রিলেশনাল অবজেক্ট পদ্ধতি ব্যবহার না করে। উদাহরণস্বরূপ রুবি জন্য

class User
  has_one :profile
end

user = User.first
profile = user.profile
profile.sign_out

এর অর্থ আপনি ব্যবহারকারীর কাছ থেকে একটি প্রোফাইল অবজেক্ট পেতে পারেন তবে ব্যবহারকারী নিজের ভিতরে প্রোফাইলের পদ্ধতিগুলি ব্যবহার করেন না (কোনও প্রোফাইলের ইন্টারফেসে কোনও নির্ভরতা নেই)।

নির্ভরতা মানে ব্যবহারকারীর অন্য কোনও বস্তুর সাথে লিঙ্ক রয়েছে এবং সেই বস্তুর নিজস্ব পদ্ধতিগুলিকে কল করুন

class User
  has_one :profile

  def personal_info
    profile.info
  end
end

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


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

@ জিয়ার্টবেলকেনস যেমন আমি বুঝতে পারি নির্ভরতা দেখাতে হবে যে সরবরাহকারী শ্রেণিতে পরিবর্তনগুলি ক্লায়েন্ট শ্রেণিতে পরিবর্তন প্রয়োজন। প্রোগ্রামিং এ কেবল তখনই হয় যখন আপনি সরবরাহকারীর একটি ইন্টারফেস ব্যবহার করেন (বা আমাকে অন্য কোনও কারণ দেখান)। আপনার দৃষ্টিকোণ থেকে এই তীরগুলির মধ্যে কোনও পার্থক্য নেই। তারা কোড প্রয়োগের দিকে নির্দেশ করছে না এবং কেবল ধারণাগত।
স্টপানকো

আমি আশঙ্কা করছি এটি আপনার ব্যক্তিগত বোঝাপড়া, তবে এটি কীভাবে ইউএমএল স্পেসে বর্ণিত হয়েছে তা নয়। ইউএমএল থেকে 2.5 § 7.8.4.1: নির্ভরতা এমন একটি সম্পর্ক যা বোঝায় যে একক মডেল এলিমেন্ট বা মডেল উপাদানগুলির একটি সেট তাদের স্পেসিফিকেশন বা বাস্তবায়নের জন্য অন্যান্য মডেল উপাদানগুলির প্রয়োজন। এর অর্থ হ'ল ক্লায়েন্টএলেমেন্ট (গুলি) এর সম্পূর্ণ শব্দার্থবিজ্ঞান সরবরাহকারী এলিমেন্ট (গুলি) এর সংজ্ঞার উপর শব্দার্থগত বা কাঠামোগতভাবে নির্ভরশীল।
গিয়ার্ট বেলেকেন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.