সত্ত্বা উপাদান সিস্টেম আর্কিটেকচার বস্তু সংজ্ঞা দ্বারা ভিত্তিক হয়?


20

সংজ্ঞা অনুসারে সত্তা উপাদান সিস্টেম আর্কিটেকচার অবজেক্টটি কি অরিয়েন্টেড? এটি আমার কাছে আরও পদ্ধতিগত বা কার্যকরী বলে মনে হয়। আমার মতামতটি হ'ল এটি আপনাকে ওও ভাষায় প্রয়োগ করতে বাধা দেয় না, তবে দৃ O়ভাবে ওও উপায়ে এটি করা বুদ্ধিমানের কাজ হবে না।

দেখে মনে হচ্ছে ইসিএস আচরণ (এস) থেকে ডেটা (ই ও সি) আলাদা করে। প্রমাণ হিসাবে :

সত্ত্বায় কোনও গেম পদ্ধতি এম্বেড করা না হওয়াই ধারণা।

এবং :

উপাদানটি একটি নির্দিষ্ট উদ্দেশ্যে প্রয়োজনীয় ন্যূনতম সেট নিয়ে গঠিত

সিস্টেমগুলি হ'ল একক উদ্দেশ্যমূলক ফাংশন যা সুনির্দিষ্ট উপাদান রয়েছে এমন সত্তাগুলির একটি সেট গ্রহণ করে


আমি মনে করি এটি আপত্তি ভিত্তিক নয় কারণ অবজেক্ট ওরিয়েন্টড হওয়ার একটি বড় অংশটি আপনার ডেটা এবং আচরণকে একত্রিত করে। প্রমাণ হিসাবে :

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

অন্যদিকে, ইসিএসগুলি মনে হয় আপনার আচরণ থেকে আপনার ডেটা আলাদা করার বিষয়টি।

উত্তর:


21

ভূমিকা


সত্তা – উপাদান সিস্টেমগুলি একটি অবজেক্ট-ভিত্তিক স্থাপত্য কৌশল।

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

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

 

উদাহরণ


আসুন আসুন মনে করি যে Playerসঙ্গে একটি সত্তা Position, Velocityএবং KeyboardControlledউপাদান, যা সুস্পষ্ট কিছু করার।

entity Player:
  Position
  Velocity
  KeyboardControlled

আমরা জানি Positionদ্বারা Velocityএবং Velocityদ্বারা প্রভাবিত করা আবশ্যক KeyboardControlled। প্রশ্নটি কীভাবে আমরা সেই প্রভাবগুলি মডেল করতে চাই।

 

সত্তা, উপাদান এবং সিস্টেম


মনে করুন যে উপাদানগুলির একে অপরের সাথে কোনও রেফারেন্স নেই; একটি বাহ্যিক Physicsসিস্টেম সমস্ত Velocityউপাদানকে অনুসরণ করে এবং Positionসংশ্লিষ্ট সত্তার আপডেটগুলি ; একটি Inputসিস্টেম সমস্ত KeyboardControlledউপাদানকে অনুসরণ করে এবং আপডেট করে Velocity

          Player
         +--------------------+
         | Position           | \
         |                    |  Physics
       / | Velocity           | /
  Input  |                    |
       \ | KeyboardControlled |
         +--------------------+

এটি মানদণ্ডকে সন্তুষ্ট করে:

  • কোনও গেম / ব্যবসায়িক যুক্তি সত্তা দ্বারা প্রকাশ করা হয় না।

  • উপাদানগুলি আচরণের বর্ণনা দিয়ে ডেটা সঞ্চয় করে।

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

 

সত্তা এবং উপাদান


যাইহোক, যে অনুমান করা উপাদান না একে অপরের রেফারেন্স আছে। এখন সত্তাটি কেবল একটি নির্মাতা যা কিছু উপাদান তৈরি করে, তাদের একসাথে আবদ্ধ করে এবং তাদের জীবনকাল পরিচালনা করে:

class Player:
  construct():
    this.p = Position()
    this.v = Velocity(this.p)
    this.c = KeyboardControlled(this.v)

সত্তা এখন ইনপুট প্রেরণ এবং ইভেন্টগুলি সরাসরি তার উপাদানগুলিতে আপডেট করতে পারে। Velocityআপডেটগুলিতে প্রতিক্রিয়া KeyboardControlledজানাবে এবং ইনপুটটিতে প্রতিক্রিয়া জানাবে। এটি এখনও আমাদের মানদণ্ডকে সন্তুষ্ট করে:

  • সত্তাটি একটি "বোবা" ধারক যা কেবল ইভেন্টগুলিতে ইভেন্টগুলি ফরোয়ার্ড করে।

  • প্রতিটি উপাদান তার নিজস্ব আচরণ enacates ।

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

মিথস্ক্রিয়াগুলি সত্তার স্তরে ("যখন কোনও " ... "এর Playerসাথে সংঘর্ষ হয় তখন Enemy) বা পৃথক উপাদানগুলির স্তরে পরিচালিত হতে পারে (" যখন কোনও সত্তার সাথে কোনও সত্তার সাথে Lifeসংঘর্ষ হয় Strength... "))।

 

উপাদান


সত্তার অস্তিত্বের কারণ কী? যদি এটি কেবল কোনও নির্মাণকারী হয়, তবে আমরা উপাদানগুলির একটি সেট ফেরত ফাংশন দিয়ে এটি প্রতিস্থাপন করতে পারি । যদি আমরা পরে সত্ত্বাকে তাদের ধরণ অনুসারে জিজ্ঞাসা করতে চাই তবে আমাদের পাশাপাশি একটি Tagউপাদান থাকতে পারে যা আমাদের কেবল এটি করতে দেয়:

function Player():
  t = Tag("Player")
  p = Position()
  v = Velocity(p)
  c = KeyboardControlled(v)
  return {t, p, v, c}
  • সত্তা যতটা বোবা হতে পারে - সেগুলি কেবলমাত্র উপাদানগুলির সেট sets

  • উপাদানগুলি পূর্বের মতো ইভেন্টগুলিতে সরাসরি প্রতিক্রিয়া জানায়।

মিথস্ক্রিয়াগুলি অবশ্যই বিমূর্ত প্রশ্নের দ্বারা পরিচালনা করা উচিত , সত্তার প্রকার থেকে ইভেন্টগুলি পুরোপুরি ডিকপল করে। কোয়েরিতে আর কোনও সত্তার প্রকার নেই — স্বেচ্ছাসেবী Tagডেটা গেম যুক্তির চেয়ে ডিবাগিংয়ের জন্য সম্ভবত আরও ভাল ব্যবহৃত হয়।

 

উপসংহার


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


2
শ্রেণিভিত্তিক ওওর প্রধান বিকল্প, প্রোটোটাইপ-ভিত্তিক ওও, দু'টি ডেটা এবং আচরণ বলে মনে হয়। আসলে, এটি ক্লাসভিত্তিক ওওর মতোই ইসিএসের থেকে পৃথক বলে মনে হচ্ছে। সুতরাং আপনি ওও বলতে কী বোঝাতে চেয়েছেন?

@ ডেলান্নের প্রশ্নের সাথে যুক্ত করতে, আপনি যে ওও উইকিপিডিয়া নিবন্ধটি উদ্ধৃত করেছেন তার স্নিপেটের সাথে আপনি একমত নন?
ড্যানিয়েল ক্যাপলান

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

@ ডেলানান: আমি ওও দ্বারা কিছু বোঝাতে চাইছি না। "বস্তু" কোথায় নির্দিষ্ট ডেফিনেশনে (যেমন ফাংশন, বিধি, অভিনেতা, dataflow combinators, ইত্যাদি উল্টোদিকে) সঙ্গে প্রোগ্রামিং: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং, আমার কাছে ঠিক কি টিনের হয় বস্তুর বাস্তবায়ন-সংজ্ঞায়িত করা হয়।
জন পুরী

1
@ টিটিওয়াইটি: আমি কেবল বন্যের মধ্যে যে বাস্তবায়নগুলি দেখেছি তা বর্ণনা করছি, যাতে এটি বোঝাতে যে এটি একটি বিস্তৃত শব্দ the এটি উইকিপিডিয়া বর্ণনার সাথে বিরোধী নয়, তবে অবশ্যই এর চেয়ে বিস্তৃত।
জন পুরী

20

কোন। আর আমি অবাক হয়েছি কত জন অন্যথায় ভোট দিয়েছে!

দৃষ্টান্ত

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


প্রায়োগিক?

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


যেখানে সংহতি ঘটে

আপনার পর্যবেক্ষণ প্রাসঙ্গিক এবং স্পট-অন :

"... [ইসিএস] আপনাকে এটি কোনও ওও ভাষায় প্রয়োগ করতে বাধা দেয় না, তবে দৃ O়ভাবে ওও পদ্ধতিতে এটি করা বুদ্ধিমানের কাজ হবে না"


ইসিএস / ইএস ইসি / সিই নয়

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

আপনি যদি 2015 সালে এই শর্তাদি বোঝার চেষ্টা করছেন তবে নিশ্চিত হয়ে নিন যে "সত্তা উপাদান উপাদান" এর সাথে কারওর উল্লেখটি "সত্তা-উপাদান উপাদানগুলি" নয়।


1
এটা সঠিক উত্তর. ইসিএস ওওপি প্যারাডাইমগুলির সাথে খুব ভাল ফিট করে না, কারণ ইসিএস হ'ল ডেটা এবং আচরণ পৃথক করার বিষয়ে, যখন ওওপি বিপরীত।
ন্যাক্স 'vi-vim-nvim'

"যখন ওওপি বিপরীত সম্পর্কে" ওওপি সম্পর্কে কী আছে তার কোনও গ্রহণযোগ্য সংজ্ঞা নেই, যদি না স্মলটকের মতো অকেজো একাডেমিক সংজ্ঞা যেমন ব্যবহারে ব্যবহৃত হয় না।
জিন-মিশেল সেলারিয়ার

10

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

ওওপ উপায়:

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

আরও কার্যকরী উপায়:

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

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

টিএলডিআর: আপনি এটি যেভাবেই করতে পারেন, তবে আমি যুক্তি দেব যে ভাল সত্তা উপাদান উপাদানগুলির সুবিধাগুলি তাদের আরও কার্যকরী প্রকৃতি থেকে প্রাপ্ত।


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

2

ডেটা-ওরিয়েন্টেড সত্তা উপাদান উপাদানগুলি অবজেক্ট-ওরিয়েন্টেড প্যারাডিজমগুলির সাথে সহাবস্থান করতে পারে: - উপাদানগুলি সিস্টেমগুলি তাদেরকে বহুগুণে ধার দেয়। - উপাদানগুলি পিওডি (প্লেইন পুরাতন ডেটা) এবং ALSO অবজেক্ট (একটি ক্লাস এবং পদ্ধতি সহ) উভয়ই হতে পারে এবং পুরো জিনিসটি এখনও 'ডেটা ওরিয়েন্টেড' থাকে তবে শর্ত থাকে যে উপাদান উপাদান শ্রেণি পদ্ধতিগুলি কেবলমাত্র স্থানীয় অবজেক্টের মালিকানাধীন ডেটা ম্যানিপুলেট করে।

যদি আপনি এই পথটি চয়ন করেন তবে আমি আপনাকে সুপারিশ করি যে আপনি ভার্চুয়াল পদ্ধতি ব্যবহার করা এড়িয়ে চলুন, কারণ আপনার যদি সেগুলি থাকে তবে আপনার উপাদানগুলি খাঁটি উপাদান উপাদান আর থাকবে না, সেই সাথে এই পদ্ধতিগুলির কল করতে বেশি খরচ হয় - এটি COM নয়। একটি নিয়ম হিসাবে আপনার উপাদান উপাদানগুলি বহিরাগত যে কোনও উল্লেখ থেকে পরিষ্কার রাখুন।

উদাহরণটি vec2 বা vec3 হবে, সেই ডেটা স্পর্শ করার জন্য কিছু পদ্ধতি সহ একটি ডেটা ধারক এবং আরও কিছু নয়।


2
এই পোস্টটি পড়ার চেয়ে শক্ত (পাঠ্যের প্রাচীর)। আপনি এটিকে আরও ভাল আকারে সম্পাদনা করতে আপত্তি করবেন ? এছাড়াও, পাঠকদের যদি আপনি লিঙ্কিত ব্লগ নিবন্ধকে জিজ্ঞাসা করা প্রশ্নাবলীর সাথে দরকারী এবং প্রাসঙ্গিক মনে হতে পারে তা যদি আপনি ব্যাখ্যা করেন ...
gnat

... যদি আপনি একরকম যে ব্লগের সাথে সম্পর্কিত করছি (? তুমি), এটি করার জন্য কাম্য হতে পারে অন্তর্ভুক্তি প্রকাশ
মশা

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

2

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

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

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

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

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

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

এটি আমরা ওওপির সাথে traditionতিহ্যগতভাবে সংযুক্ত হওয়ার বৈশিষ্ট্যের থেকে একেবারেই বিপরীত, কমপক্ষে সংযোজনের বৈশিষ্ট্যগুলির ক্ষেত্রে এবং "পাবলিক ইন্টারফেস" বনাম "ব্যক্তিগত বাস্তবায়ন বিশদ" এর গঠনগুলির তুলনায়। অবশ্যই উভয় ক্ষেত্রে "বাস্তবায়নের বিশদগুলি" পরিবর্তন করা সহজ তবে ইসিএসে এটি এমন ডেটা ডিজাইন যা পরিবর্তন করা ব্যয়বহুল (ডেটা ইসিএসে বাস্তবায়নের বিশদ নয়), এবং ওওপিতে এটি কার্যকারিতার নকশা যা পরিবর্তনের জন্য ব্যয়বহুল ly (ফাংশনগুলির নকশা ওওপিতে প্রয়োগের বিশদ নয়)। সুতরাং এটি "প্রয়োগের বিবরণ" সম্পর্কে খুব আলাদা ধারণা এবং রক্ষণাবেক্ষণের দৃষ্টিভঙ্গি থেকে ইসিএস সম্পর্কে আমার কাছে প্রধান আবেদনগুলির একটি হ'ল আমার ডোমেইনে, জিনিসগুলি করার জন্য প্রয়োজনীয় ডেটাগুলি স্থিতিশীল করা এবং একবারে এবং সঠিকভাবে ডিজাইন করা সেই ডেটা নিয়ে যে সমস্ত বিভিন্ন জিনিস আমরা করতে পারি তার চেয়ে সহজ ছিল (যা ক্লায়েন্টরা তাদের মন পরিবর্তন করেছিল এবং নতুন ব্যবহারকারীর পরামর্শগুলি বন্যায় এসেছিল) all ফলস্বরূপ, আমি কাঁচা, কেন্দ্রীয় উপাত্তের দিকে অ্যাবস্ট্রাক্ট ফাংশনগুলি থেকে দূরে নির্ভরতাগুলি পরিচালনা করতে শুরু করার সময় রক্ষণাবেক্ষণ ব্যয়গুলি হ্রাস পেয়েছিলাম (তবে এখনও যত্ন সহকারে সমস্ত সিস্টেমে ধারণা থাকা সত্ত্বেও কোন সিস্টেমগুলি অ্যাক্সেস করে এমন কোন উপাদানকে অবিচ্ছিন্ন ডিগ্রীতে রাখে allow বিশ্বব্যাপী অ্যাক্সেসযোগ্য)।

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

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

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