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