না , কোনও বস্তুর কোনও সত্তাকে প্রতিনিধিত্ব করতে হবে না।
প্রকৃতপক্ষে, আমি যুক্তি দেব যে আপনি যখন শারীরিক সত্তা হিসাবে বস্তুগুলি সম্পর্কে চিন্তাভাবনা বন্ধ করেন তখন আপনি অবশেষে যে সুবিধাটি ওওপি-র প্রতিশ্রুতি দেয় তা পান।
এটি সর্বোত্তম উদাহরণ নয়, তবে কফি মেকার ডিজাইনটি সম্ভবত আমার জন্য আলো আসতে শুরু করেছিল।
বিষয়গুলি বার্তাগুলি সম্পর্কে। তারা দায়িত্ব সম্পর্কে। তারা গাড়ি, ব্যবহারকারী বা অর্ডার সম্পর্কে নয়।
আমি জানি আমরা ওওকে এইভাবে শিখাই, তবে আপনি যখন এমভিসি, এমভিভিএম বা এমভিডাব্লু যা করার চেষ্টা করেন তখন জিনিসগুলি কোথায় যায় তা নির্ধারণ করার জন্য এটি কতটা মৌলিক হতাশার চেষ্টা করার পরে তা স্পষ্ট হয়ে যায়। হয় আপনার মডেলগুলি হাস্যকরভাবে ফুলে উঠেছে বা আপনার নিয়ামকরা তা করেন। নাব্যতাযোগ্যতার জন্য, এটি জেনে রাখা দুর্দান্ত যে যানবাহনগুলি স্পর্শ করে এমন কোনও কিছুই Vehicle.ext ফাইলে রয়েছে তবে যখন আপনার অ্যাপ্লিকেশনটি যানবাহনের বিষয়ে থাকে, আপনি অবশ্যই সেই ফাইলটিতে স্প্যাগেটির 3000 লাইন দিয়ে শেষ করেন।
আপনার কাছে যখন কোনও নতুন বার্তা প্রেরণ করা হবে তখন আপনার কমপক্ষে একটি নতুন অবজেক্ট রয়েছে এবং সম্ভবত সেগুলির একটি জুড়ি। পদ্ধতিগুলির একটি বান্ডিল সম্পর্কে আপনার প্রশ্নে, আমি যুক্তি দেব যে আপনি সম্ভাব্য বার্তাগুলির একটি বান্ডিল সম্পর্কে কথা বলছেন। এবং প্রতিটি তার নিজস্ব কাজ হতে পারে, এটি করার নিজস্ব কাজ। এবং ঠিক আছে। আপনি জিনিসগুলিকে আলাদা করে দেওয়ার সাথে সাথে এটি প্রকট হয়ে উঠবে যা আসলে সত্যই একসাথে হওয়া দরকার। এবং আপনি তাদের একত্র করা। আপনি যদি ওও উপভোগ করতে চান তবে সুবিধার জন্য আপনি অবিলম্বে প্রতিটি পদ্ধতিটি অস্পষ্টভাবে উপযুক্ত ড্রয়ারে ফেলে দেবেন না।
ফাংশন ব্যাগ সম্পর্কে কথা বলা যাক
একটি অবজেক্ট কেবল পদ্ধতির সংগ্রহ হতে পারে এবং এখনও ওও হতে পারে তবে আমার "বিধিগুলি" বেশ কঠোর।
সংগ্রহটির একটি একক দায়িত্ব থাকা উচিত, এবং সেই দায়িত্ব "মজাদারদের কাছে কি করে না" এর মতো জেনেরিক হতে পারে না। আমি সার্ভিস-লেয়ার ফ্যাসিডের মতো কাজটি করতে পারি, তবে আমি নাবিকতা / আবিষ্কারের কারণে অলস হয়ে যাচ্ছি বলে আমি তীব্রভাবে সচেতন, কারণ আমি ওও কোডটি লেখার চেষ্টা করছি না।
সমস্ত পদ্ধতি বিমূর্ততার একটি সামঞ্জস্যপূর্ণ স্তরে হওয়া উচিত। যদি একটি পদ্ধতি মোটর অবজেক্টগুলি পুনরুদ্ধার করে এবং অন্য কোনওটি অশ্বশক্তি ফিরিয়ে দেয় তবে এটি সম্ভবত খুব দূরে।
অবজেক্টটির একই "ধরণের" ডেটাতে কাজ করা উচিত। এই অবজেক্টটি মোটরগুলিতে স্টার্ট করে (স্টার্ট / স্টপ), এটি ক্র্যাঙ্ক দৈর্ঘ্যের সাথে কাজ করে, এটি ইগনিশন সিকোয়েন্সিং পরিচালনা করে, এটি একটি এইচটিএমএল রূপ নেয়। এই ডেটা ধারণাটি অবজেক্টের ক্ষেত্র হতে পারে এবং এটি সম্মিলিত বলে মনে হয়।
আমি সাধারণত আমি এই ধরণের জিনিসগুলি তৈরি করি যখন আমি রূপান্তরগুলি, সংমিশ্রণ করি, বা কেবল পরিবর্তনের বিষয়ে চিন্তা করতে চাই না।
আমি মনে করি অবজেক্টের দায়িত্বগুলিতে মনোনিবেশ করা আমাকে সংহতির দিকে নিয়ে যায়। একটি বস্তু হতে কিছু সামঞ্জস্য থাকতে হবে, কিন্তু এটি কোনও বস্তু হওয়ার জন্য কোনও ক্ষেত্র বা খুব বেশি আচরণের প্রয়োজন নেই। যদি আমি এমন একটি সিস্টেম তৈরি করতাম যার জন্য এই 5 টি মোটর পদ্ধতির প্রয়োজন হত, আমি 5 টি বিভিন্ন জিনিস দিয়ে শুরু করব যা এই জিনিসগুলি করে। যেহেতু আমি সাধারণতা পেয়েছি, আমি হয় জিনিসগুলিকে একত্রে মার্জ করা বা সাধারণ "সহায়ক" অবজেক্টগুলি ব্যবহার করতে শুরু করব। এটি আমাকে উন্মুক্ত / বদ্ধ উদ্বেগের দিকে নিয়ে যায় - আমি কীভাবে এই বিট কার্যকারিতাটি বের করতে পারি যাতে আমাকে সেই নির্দিষ্ট ফাইলটি আর কখনও সংশোধন করতে না হয় তবে প্রয়োজনের পরেও এটি ব্যবহার করতে পারি?
বিষয়গুলি বার্তাগুলি সম্পর্কে
ক্ষেত্রগুলি সবেমাত্র একটি বস্তুর সাথে সম্পর্কিত - রেজিস্টারগুলি পাওয়া এবং সেট করা প্রোগ্রামের বাইরে বিশ্বে পরিবর্তন করে না। অন্যান্য বস্তুর সাথে সহযোগিতা করার ফলে কাজটি সম্পন্ন হয়। তবে ও-এর শক্তি হ'ল আমরা বিমূর্ততা তৈরি করতে পারি যাতে আমাদের সমস্ত ব্যক্তিগত বিবরণ একবারে ভাবার দরকার নেই। যেসব বিমূর্ততা ফাঁস হয় বা বোঝায় না সেগুলি সমস্যাযুক্ত, তাই আমরা আমাদের মানসিক মডেলগুলির সাথে মেলে এমন বস্তু তৈরির বিষয়ে গভীরভাবে চিন্তা করি (খুব বেশি, সম্ভবত)।
মূল প্রশ্ন: এই দুটি বস্তুর একে অপরের সাথে কথা বলার দরকার কী?
কোনও ব্যক্তির অবজেক্টটিকে কোনও অঙ্গ হিসাবে ভাবেন - এর একটি ডিফল্ট উদ্দেশ্য থাকে এবং কেবল তার আচরণের ক্ষেত্রে কোনও নির্দিষ্ট বার্তা পেলেই আচরণ পরিবর্তন করে।
এমন দৃশ্যের কল্পনা করুন যেখানে আপনি ক্রসওয়াক এবং একটি গাড়ি দ্রুত চলে আসছে। মস্তিষ্কের অবজেক্ট হিসাবে, আমি একটি চাপ সনাক্ত করি। আমি হাইপোথ্যালামাসকে বলছি কর্টিকোট্রফিন-রিলিজিং হরমোন প্রেরণ করুন। পিটুইটারি গ্রন্থিটি সেই বার্তাটি পায় এবং অ্যাড্রিনাল কর্টিকোট্রফিক হরমোন প্রকাশ করে। অ্যাড্রিনাল গ্রন্থিগুলি এই বার্তাটি পায় এবং অ্যাড্রেনালিন তৈরি করে। যখন পেশী অবজেক্টটি সেই অ্যাড্রেনালাইন বার্তা পায় তখন তা চুক্তিবদ্ধ হয়। যখন হৃদয় একই বার্তাটি পায়, তখন এটি আরও দ্রুত প্রসারণ করে। রাস্তা জুড়ে স্প্রিন্টিংয়ের জটিল আচরণ শুরু করার সাথে জড়িত রয়েছে পুরো খেলোয়াড় এবং এটি সেই বার্তাগুলিই গুরুত্বপূর্ণ। মস্তিষ্কের অবজেক্টটি কীভাবে হাইপোথ্যালামাসকে সতর্কতা প্রেরণের জন্য পেতে হয় তা জানে, তবে অবজেক্টগুলির চেইনটি এটি জানে না যা পরিণামে আচরণটি ঘটায়। তেমনি অ্যাড্রেনালিন কোথা থেকে এসেছে তা হৃদয়ের কোনও ধারণা নেই,
সুতরাং এটির ( সরলীকৃত ) উদাহরণে অ্যাড্রিনাল গ্রন্থি অবজেক্টের কেবল এসিটিএইচ কীভাবে নেওয়া এবং অ্যাড্রেনালিন তৈরি করা যায় তা জানতে হবে। এটি করার জন্য এটির কোনও ক্ষেত্রের প্রয়োজন নেই, তবুও এটি এখনও আমার কাছে একটি অবজেক্টের মতো বলে মনে হচ্ছে।
এখন যদি আমাদের অ্যাপ্লিকেশনটি কেবল রাস্তায় ছড়িয়ে পড়ার জন্য ডিজাইন করা হয়েছে তবে আমার পিটুইটারি গ্রন্থি এবং অ্যাড্রিনাল গ্রন্থিগুলির প্রয়োজন হবে না। অথবা আমার কেবল পিটুইটারি গ্রন্থি অবজেক্টের প্রয়োজন যা কেবলমাত্র আমরা "পিটুইটারি গ্রন্থি মডেল" হিসাবে ধারণাকে দেখতে পারি তার একটি ছোট অংশই করে। এই ধারণাগুলি সমস্ত ধারণাগত সত্তা হিসাবে বিদ্যমান, তবে এটি সফ্টওয়্যার এবং আমরা অ্যাড্রেনালাইনসেন্ডার বা পেশী-নিয়ন্ত্রণকারী বা যাইহোক তৈরি করতে পারি এবং আমাদের মডেলের "অসম্পূর্ণতা" সম্পর্কে খুব বেশি চিন্তিত হই না।