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