পদ্ধতিগত প্রোগ্রামিংয়ের উপর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের সুবিধা কী?


77

আমি সি এর মতো পদ্ধতিগত ভাষা এবং সি ++ এর মতো অবজেক্ট-ভিত্তিক ভাষার মধ্যে পার্থক্যটি বোঝার চেষ্টা করছি। আমি কখনই সি ++ ব্যবহার করি নি, তবে আমি কীভাবে দু'জনকে আলাদা করতে পারি সে সম্পর্কে আমার বন্ধুদের সাথে আলোচনা করেছি।

আমাকে বলা হয়েছে সি ++ এর অবজেক্ট-ভিত্তিক ধারণা রয়েছে পাশাপাশি ভেরিয়েবলের সংজ্ঞা দেওয়ার জন্য সরকারী এবং বেসরকারী পদ্ধতি রয়েছে: সিগুলিতে জিনিস নেই C ভিজ্যুয়াল বেসিক.এনইটি-তে প্রোগ্রাম বিকাশের সময় আমাকে কখনই এগুলি ব্যবহার করতে হয়নি: এগুলির সুবিধা কী কী?

আমাকে আরও বলা হয়েছে যে যদি কোনও ভেরিয়েবলটি সর্বজনীন হয় তবে এটি যে কোনও জায়গায় অ্যাক্সেস করা যেতে পারে, তবে এটি স্পষ্ট নয় যে এটি সি এর মতো ভাষায় বৈশ্বিক পরিবর্তনশীল থেকে কীভাবে আলাদা, এটি স্থানীয় স্পেসেবল থেকে কীভাবে ব্যক্তিগত ভেরিয়েবলের থেকে পৃথক হয় তাও পরিষ্কার নয়।

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

if ( login == "admin") {
    // invoke the function
}

কেন এটি আদর্শ নয়?

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




26
কিছু ডাউনভোটকে মোকাবেলা করতে +1। কোনও সহকর্মী যদি আমাকে এই জাতীয় প্রশ্ন জিজ্ঞাসা করেন তবে আমার সম্ভবত কিছুটা উদ্বেগ হবে এবং এমনকি তাকে নীচে নামিয়ে আনতে পারি (ধরে নিলাম তার পাশে কোনও ধরণের ডাউন তীর রয়েছে)। যাইহোক, এই প্রশ্নটি ভবিষ্যতের কোনও সফটওয়্যার ইঞ্জিনিয়ার দ্বারা জিজ্ঞাসা করা হয়েছে বলে মনে হয় এবং মনে হচ্ছে পোস্ট দেওয়ার আগে তিনি বিষয়টি নিয়ে চিন্তাভাবনা ও আলোচনা করতে কিছুটা সময় ব্যয় করেছিলেন। আমি বরখাস্ত করার পরিবর্তে তাকে সাহায্য করার পক্ষে ভোট দিই।
DXM

14
@ ডিএক্সএম দুর্দান্ত ধারণা! সহকর্মীদের চারপাশে ভাসমান ডাউনভোট / আপভোট তীরগুলি ... এটি আশ্চর্য কাজ করবে।
ইয়ানিস

2
স্ট্যান্ডার্ড কাউন্টার আর্গুমেন্ট: সি তে আপনি করতে পারেন এমন সমস্ত কিছু করার জন্য একটি এসেমব্লার উপায়ও রয়েছে, তবে আপনি কেন সি সম্পর্কে যত্ন করবেন? : (ইঙ্গিত এটা সব টন তিনি বিমূর্ততা স্তর উত্থাপন সম্পর্কে সি ++ আউট সি গতি অধিকাংশ sacrificing সঙ্গে এই কাজ পরিচালনা করে আইএমও যে সি ++ 'সাফল্যের জন্য প্রধান কারণ আছে।।।)
এসবিআই

উত্তর:


135

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

আমি আরও একটি উত্তর দিয়ে চিমে যেতে চেয়েছিলাম, কারণ আপনার প্রশ্নের বিবরণের ভিত্তিতে, আমি বিশ্বাস করি যে আপনাকে বেশ কয়েকটি পদক্ষেপ ফিরে নেওয়া দরকার।

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

আমি মনে করি আপনার সত্যিকারের যে মৌলিক প্রশ্নের উত্তর দেওয়া উচিত তা হ'ল: "আমি কখনই ডেটা গোপন করতে চাইব কেন? আমি যদি তা করি তবে আমি এটি দিয়ে কাজ করতে পারি না!" এবং এ কারণেই:

ধরা যাক আপনি একটি নতুন প্রকল্প শুরু করেছেন, আপনি আপনার পাঠ্য সম্পাদকটি খোলেন এবং আপনি ফাংশনগুলি লিখতে শুরু করেন। প্রতিবার যখন আপনাকে কোনও কিছু সঞ্চয় করতে হবে (এটি পরে মনে রাখার জন্য), আপনি একটি ভেরিয়েবল তৈরি করেন। জিনিসগুলি আরও সহজ করার জন্য, আপনি আপনার পরিবর্তনশীলগুলি বিশ্বব্যাপী তৈরি করেন make আপনার অ্যাপ্লিকেশনটির প্রথম সংস্করণ দুর্দান্ত চলছে। এখন আপনি আরও বৈশিষ্ট্য যুক্ত করা শুরু করুন। আপনার আরও ফাংশন রয়েছে, আপনার নতুন কোড থেকে পড়া দরকার আগে আপনি নির্দিষ্ট কিছু ডেটা সংরক্ষণ করেছিলেন be অন্যান্য ভেরিয়েবলগুলি সংশোধন করা দরকার। আপনি আরও ফাংশন লিখতে থাকুন। আপনি যা লক্ষ্য করে থাকতে পারেন (বা, যদি না হয় তবে আপনি ভবিষ্যতে একেবারে লক্ষ্য করবেন) হ'ল, আপনার কোডটি বড় হওয়ার সাথে সাথে পরবর্তী বৈশিষ্ট্যটি যুক্ত করতে আপনাকে আরও দীর্ঘ এবং বেশি সময় নেয়। এবং আপনার কোডটি বড় হওয়ার সাথে সাথে, কাজ করে এমন কিছু ভঙ্গ না করে বৈশিষ্ট্যগুলি যুক্ত করা আরও শক্ত এবং শক্ত হয়ে ওঠে। কেন? কারণ আপনার কী সব মনে রাখা দরকারআপনার গ্লোবাল ভেরিয়েবলগুলি সংরক্ষণ করছে এবং এগুলি সমস্ত কোথায় সংশোধন করা হচ্ছে তা আপনার মনে রাখা দরকার । আর আপনার মনে রাখতে যা ফাংশনে কল ঠিক আছে প্রয়োজন কি সঠিক অনুক্রমে এবং যদি আপনি তাদেরকে ডেকে বিভিন্ন আদেশ, আপনি ত্রুটি পেতে পারে, কারণ আপনার গ্লোবাল ভেরিয়েবল এখনো বেশ বৈধ নয়। আপনি কি কখনও এই মধ্যে চালানো হয়েছে?

আপনার সাধারণ প্রকল্পগুলি (কোডের লাইন) কত বড়? এখন আপনার প্রকল্পের চেয়ে 5000 থেকে 50000 গুণ একটি প্রকল্পের ইমেজিং। এছাড়াও, এতে একাধিক ব্যক্তি কাজ করছেন। দলের সমস্ত সদস্য কীভাবে এই সমস্ত ভেরিয়েবলগুলি করছে তা মনে রাখতে পারে (বা এমনকি সচেতন হতেও পারে)?

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

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

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


5
দুর্দান্ত উত্তর, প্রশ্নটি যথাযথ পর্যায়ে
কার্লোস

29
+1 ... বেশিরভাগের জন্য, "এবং সময়ের ভোর থেকেই (ধরে নেওয়া শুরু করা হয়েছে জানুয়ারী 1, 1970) ..." লাইন
ক্যাফগীক

4
@ চ্যাড - আমি অনুভব করছিলাম যে একা লাইনটি আমাকে কমপক্ষে একটি পয়েন্ট করা উচিত :)
ডিএক্সএম

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

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

10

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

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

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

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


6

ওওপি বনাম সি আপনি যে বিষয়ে আলোচনা করেছেন তার কোনওটিই সম্পর্কে সত্য নয়। এটি মূলত এমন অঞ্চলগুলিতে প্যাকেজিং কোড সম্পর্কে যা অজ্ঞাতসারে (বা কখনও কখনও এমনকি ইচ্ছাকৃতভাবে) একে অপরকে প্রভাবিত করে না / করতে পারে না।

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


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

@ লন্ডিন: আপনি প্রযুক্তিগতভাবে সঠিক হলেও আপনি বিষয়টিটি মিস করেছেন। ওওপি ভাষা ওওপি পদ্ধতিতে আচরণের জন্য এটিকে ডিফল্ট আচরণ করে। সি না।
জন ফিশার

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

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

আপনি জাভাতেও অ-ও-ও প্রোগ্রাম লিখতে পারেন, কেবল একটি বিশাল প্রধান ফাইলে হ্যাক করে ফেলুন ... ওও এখনও ভাষা-নির্দিষ্ট নয়, যদি প্রোগ্রামার ওও সম্পর্কে জানতে না পারে তবে বিশ্বের কোনও ভাষা সেগুলি সংরক্ষণ করতে পারে না।

4

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

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

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


ইন্টারফেসের ধারণাটি বস্তু-ভিত্তিক ভাষাগুলির পক্ষে অনন্য নয়। আমি মনে করি, এর চেয়েও বড় একটি বিষয় হ'ল অ-ওওপি ভাষায় মডিউলটির মধ্যে ব্যবহৃত প্রায় সমস্ত ফাংশন অবশ্যই একই গ্লোবাল নেমস্পেসের অন্তর্গত। ফলে প্রয়োজন ব্যক্তির হয় উপসর্গ ফাংশন নাম নির্দেশ করার জন্য তারা কি উপর অন্য কাজ, বা অনেক অনুরূপ-বাদন পদ্ধতি যা সম্পূর্ণরূপে পৃথক কিছু করার আছে (যেমন SetLocationএকটি সরাতে ব্যবহার করা যেতে পারে Monsterসময়, SetPositionএকটি সরানো পারে PopupWindow, এবং Moveঅবস্থান সমন্বয় করতে ব্যবহার করা যেতে পারে of a DisplayCursor)। অধিকার "স্থানান্তর" পদ্ধতি এটি চেষ্টা করা হচ্ছে ...
supercat

... MyMonstor->সম্পাদককে যখন লেখার সময় কেবল ধরণের জিনিসগুলির জন্য প্রযোজ্য পদ্ধতির একটি তালিকা দেখানো হয় তখন আরও সহজ করা যায় Monster। যদি বিভিন্ন ধরণের বিভিন্ন ধরণের জিনিস থাকে, যার মধ্যে প্রায় প্রতিটি ডজন ডজন ক্রিয়াকলাপ সমর্থন করে তবে 90% দ্বারা পদ্ধতির তালিকার মধ্যে বিশৃঙ্খলার পরিমাণ কাটা উত্পাদনশীলতাকে সহজতর করতে পারে।
সুপারক্যাট

@ সুপের্যাট নাম সংঘর্ষ একটি ভাষা ইস্যু একটি অ-ওওপি সমস্যা নয়। অন্যদিকে নেমস্পেসগুলি সমস্যাযুক্ত কারণ সংকলকটির মূলত ফাংশনটির স্বয়ংক্রিয় নামকরণ বা এটি ম্যাঙ্গেল করা প্রয়োজন। সুতরাং কেন এটি কেবল ম্যানুয়ালি করবেন না?
বিরক্তিকর_স্কুইড

@ অ্যানয়িং_স্কুইড: ওওপি যা সরবরাহ করে তা হ'ল নাম স্থানটি নির্বাচন করার জন্য ফানসিটনের প্রাথমিক যুক্তির প্রকারটি কার্যকরভাবে ব্যবহার করার ক্ষমতা । আমার যদি itটাইপের ভেরিয়েবল থাকে তবে এর যে কোনও একটি পদ্ধতির উপর SuperFancyWhizBangআহ্বান জানাতে টাইপটি লেখার দরকার পড়ে না ; বলার অপেক্ষা রাখে না কম্পাইলার স্বয়ংক্রিয়ভাবে জন্য চেহারা নির্দেশ করবে মধ্যে । SuperFancyWhizBangitSuperFancyWhizBangit.woozle()woozleSuperFancyWhizBang
সুপারক্যাট

3

একটি টুরিং মেশিনের সাহায্যে সবকিছু করার একটি উপায় রয়েছে বা মেশিন কোডের জন্য কমপক্ষে একটি সমাবেশের ভাষায় যা একটি সি বা সি ++ প্রোগ্রাম অবশেষে সংকলন করবে।

সুতরাং পার্থক্যটি কোড কী করতে পারে তা নয়, তবে লোকেরা কী করতে পারে সে সম্পর্কে।

মানুষ ভুল করে. প্রচুর।

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

প্রকল্পটি যত বড় হবে তত ভুল হওয়ার সম্ভাবনাও তত বেশি। কোন নতুন কোডার যদি কেবলমাত্র ছোট প্রোগ্রামগুলির সাথে অভিজ্ঞ হয় তবে তা উন্মুক্ত করা যায় না। সুতরাং ওওপি কেন মূল্যবান তা নিয়ে সম্ভাব্য ধাঁধা।


2

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


কেবল ফাংশন প্রোটোটাইপ ব্যবহার করুন। এটা encapsulation।
বিরক্তিকর_স্কুয়েড

2

আমি যেখানে বেসরকারী ভেরিয়েবলগুলি পড়ি সেগুলি অ্যাক্সেস করা যায় না যেখানে জনসাধারণের ভেরিয়েবলগুলি হয়ে উঠতে পারে তবে কেন স্থানীয় হিসাবে বিশ্বজনীন এবং ব্যক্তিগত হিসাবে ব্যক্তিগত করা হবে না তারতম্য কি? সরকারী এবং বেসরকারী আসল ব্যবহার কি? অনুগ্রহ করে বলবেন না এটি সবাই ব্যবহার করতে পারে, আমি মনে করি আমরা কিছু শর্ত না ব্যবহার করে কল দিই না কেন?

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


1

অনেকে বলেছিলেন যে কোনও প্রোগ্রাম, একবার সংকলিত হয়ে গেলে এটি বাইনারি কোডে পরিণত হয় এবং যেমন কোনও বাইনারি স্ট্রিংটি একটি পূর্ণসংখ্যার প্রতিনিধিত্ব করতে ব্যবহৃত হতে পারে, কোনও প্রোগ্রাম শেষ পর্যন্ত কেবল একটি সংখ্যা is তবে আপনার প্রয়োজনীয় নম্বরটি নির্ধারণ করা বেশ শক্ত হতে পারে এবং সেজন্যই উচ্চ স্তরের প্রোগ্রামিং ভাষা প্রকাশিত হয়েছিল। প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি শেষ পর্যন্ত তারা যে সমাবেশ কোডটি তৈরি করে তার মডেল। কনটেক্সট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে এই খুব সুন্দর কাগজের মাধ্যমে আপনাকে প্রক্রিয়াগত এবং ওও প্রোগ্রামিংয়ের মধ্যে পার্থক্যটি বর্ণনা করতে চাই http://www.jot.fm/issues/issue_2008_03/article4/

আপনি যেমন এই ছবিটি থেকে কাগজটিতে চিত্রিত দেখতে পাচ্ছেন, প্রক্রিয়াগত প্রোগ্রামিং একটি নামের সাথে একটি কম্পিউটেশনাল ইউনিট যুক্ত করার জন্য কেবল একটি মাত্রা সরবরাহ করে। এখানে, প্রক্রিয়া কল বা নামগুলি সরাসরি প্রয়োগের প্রয়োগে ম্যাপ করা হয়। চিত্র-এ কলিং এম 1 এর কোনও বিকল্প নেই কেবলমাত্র প্রক্রিয়া এম 1 এর বাস্তবায়নের জন্য প্রার্থনা।

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

এটি প্রকৃতপক্ষে এনক্যাপসুলেশন এবং মডুলারাইজেশনের অনুমতি দেয়।

এখানে চিত্র বর্ণনা লিখুন

চিত্র-সি পরিশেষে বিষয়-ভিত্তিক প্রোগ্রামিং সম্পর্কে অবজেক্ট-ভিত্তিক পদ্ধতি প্রেরণাকে আরও একটি মাত্রা দ্বারা প্রসারিত করে।

আশা করি এটি আপনাকে ওওপি তে অন্য দৃষ্টিকোণ থেকে ভাবতে সহায়তা করেছে।


0

(+1) আপনি বোধগম্য কিছু না এমন কিছু জিজ্ঞাসা করা, এটি ভাল, এমনকি এটি নির্বোধ মনে হলেও।

পার্থক্যটি হ'ল অবজেক্ট এবং ক্লাস ওরিয়েন্টেড প্রোগ্রামিং। "সমতল সি", ডেটা এবং ফাংশনগুলির সাথে কাজ করে। "সি ++" "অবজেক্ট ও ক্লাস" ধারণাগুলি যুক্ত করে, এবং বেশ কয়েকটি সম্পর্কিত মাধ্যমিক ধারণা যুক্ত করে।

যাইহোক, আমি বিকাশকারীদের "সি ++" এর আগে "প্লেইন সি" শেখার পক্ষে পরামর্শ দিই। বা "অবজেক্ট প্যাসকাল" এর আগে "কার্যবিধিত্বমূলক পাস্কাল"।

অনেক বিকাশকারী মনে করেন যে শিক্ষার্থীদের কেবল একটি স্টাফ শেখানো উচিত।

উদাহরণস্বরূপ, পুরানো শিক্ষকরা ওও পান না এবং কেবল "সরল কাঠামোগত সি" পড়ান।

বা "হিপস্টার" শিক্ষক যারা কেবল ওও পড়ান, কিন্তু "সরল সি" নয়, কারণ "আপনার এটির দরকার নেই"। বা উভয়ই, শিক্ষার আদেশের যত্ন না করে।

আমি বরং মনে করি, শিক্ষার্থীদের "স্ট্রাকচার্ড প্লেইন সি" এবং "অবজেক্ট ওরিয়েন্টেড সি (সি ++)" উভয়ই শেখানো উচিত। "সমতল সি" দিয়ে, প্রথমে এবং "সি ++" পরে।

বাস্তব বিশ্বে আপনাকে উভয় দৃষ্টান্ত শিখতে হবে ("ফাংশনাল" এর মতো আরও অন্যান্য দৃষ্টান্ত)।

স্ট্রাকচার্ড প্রোগ্রামগুলিকে একটি বড়, সিঙ্গলটন "অবজেক্ট" হিসাবে ভাবনা সাহায্য করতে পারে।

আপনার উভয় ভাষায় নেমস্পেসে ("মডিউল") জোর দেওয়া উচিত, অনেক শিক্ষক কেবল এটিকে এড়িয়ে যান, তবে, এটি গুরুত্বপূর্ণ।


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

MODULE_Foo () সর্বত্র লিখিতভাবে দৃশ্যমান বিশৃঙ্খলা হতে পারে তবে কমপক্ষে আপনি ঠিক জানেন যে এটি কোন ফাংশন।
ক্যালমারিয়াস

সমাধান @Calmarius স্পষ্ট, কিছু নাম হয় foo বিন্যাস

0

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


-1

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং হল বাক্স সহ প্রসিডেরাল প্রোগ্রামিং।

পিপি-তে, আপনার একটি বাক্স, একটি রাষ্ট্র রয়েছে, যা প্রকল্পটি বাড়ার সাথে সাথে অবিশ্বাস্যভাবে বড় হয়ে যায়, প্রতিবার আপনি যখন সেই বৃহত রাষ্ট্রের একটি ছোট্ট বিস্মরণটি ভুলে যান তখনই পার্শ্ব-প্রতিক্রিয়া দেখা দেয়।

ওওতে আপনার অনেকগুলি বাক্স রয়েছে, অনেকগুলি রাজ্য রয়েছে এবং প্রকল্পটি বাড়ার সাথে সাথে বাক্সগুলি কিছুটা বাড়তে থাকে এবং বাক্সগুলির সংখ্যাও অনেক বেড়ে যায়।

ছোট বাক্সগুলিতে নজর রাখা সহজ, পুরো চিত্রের মায়া পাওয়া সহজ, তবে ক্লাস এবং ইন্টারফেসগুলি দেখে বাস্তবায়ন সম্পর্কিত বিবরণ লুকিয়ে রাখে যা গুরুত্বপূর্ণ পদক্ষেপগুলি থাকতে পারে।

ফাংশনাল প্রোগ্রামিংয়ে আপনার অনেকগুলি ফাংশন বাক্স রয়েছে এবং সিদ্ধান্ত নিন যে প্রতিটি ফাংশনটিতে একটি প্রবেশ (পরামিতি) এবং একটি প্রস্থান (রিটার্ন) থাকে, বাইরের প্রসঙ্গে কঠোরভাবে অন্য কোনও প্রবেশাধিকার নেই।

কোনও রাষ্ট্র নেই এবং কোনও পার্শ্ব-প্রতিক্রিয়া নেই (নকশার দ্বারা), আপনি নিরাপদে কোনও কার্য পুরোপুরি আলাদা করে বিশ্লেষণ করতে পারেন এবং এটি যে কোনও পরিস্থিতিতে কীভাবে আচরণ করবে তা 100% জানতে পারবেন।

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

এটি ওওপি-র তুলনায় কোনও বৃহত আকারের প্রকল্পের কোড সঙ্কুচিত করবে যা বিভিন্ন শ্রেণিতে কোড বেসের উপরে একাধিক এনালগ ফাংশনগুলি লুকিয়ে রাখার প্রচার করে।

এটি পিপিকেও খুব বেশি মারবে কারণ আপনি আরও দীর্ঘকাল ধরে প্রকল্পটি বাড়িয়ে নিতে পারেন যেহেতু ট্র্যাক রাখতে আরও বেশি XXXXXXXL অবস্থা নেই।

সংক্ষেপে, পিপি সম্ভবত একটি সহজ প্রোগ্রামের কাছে যাওয়ার সহজতম উপায় এবং এফপি সম্ভবত কোনও জটিলটির কাছে যাওয়ার সহজতম উপায়।

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

এবং আপনি নিখরচায় 100% নির্ভরযোগ্য ইউনিট পরীক্ষা পান।

এবং আপনাকে "ডুম জিনিয়াস দুর্দান্ত স্ট্রিং_1 এর ব্যক্তিগত স্ট্যাটিক ফাইনাল" লিখতে হবে না।

এবং আপনি বিনামূল্যে জন্য সমান্তরালতা পেতে।


-3

সহজ এক বাক্যে পার্থক্য যে সি ++ ক্লাস সঙ্গে গ। (যদিও এটা আরো অনেক কিছু এখন) আমি চাই না তুমি কেন না উইকিপিডিয়া এ সি ++ উপর একটি মহান নিবন্ধ পড়ার মাধ্যমে দুই মধ্যে পার্থক্য জানতে চান .... এই নিবন্ধটি আপনাকে একটি দুর্দান্ত চুক্তিতে সহায়তা করবে: - সি ++ (উইকিপিডিয়া)

এছাড়াও ইস্যুতে গুগল করা সাহায্য করবে। এটিকে ব্যাখ্যা করতে এলোমেলো ব্যক্তিকে জিজ্ঞাসা করা জটিল হতে পারে। আইএমএইচও, কাউকে জিজ্ঞাসা করার চেয়ে পড়া দ্বারা আরও ভাল বোঝে


আমি সেগুলি পড়েছি কিন্তু তারা কেবল কোথায় তারা ব্যবহার করা হয়েছে তা বলেছে তবে এখনও আমার প্রশ্নের সমাধান হয়নি।
নিকো

আমি গুগল করা কোনও প্রচেষ্টা না করেই প্রশ্নটি জিজ্ঞাসা করি নি তবুও তফাতটি বুঝতে পারি না তাই এগুলির সাথে আমার সহায়তা করার জন্য স্ট্যাকওভারফ্লোটির সাথে দেখা হয়েছিল
নিকো

1
@ নাইকো, আপনি আমাকে এখানে ভুল বলছেন। আমার অর্থ হ'ল আপনি পড়ার মাধ্যমে দুজনের মধ্যে পার্থক্য বোঝার চেষ্টা করা উচিত। আপনার বন্ধুদের জিজ্ঞাসা ভাল না। কারণ তারা তাদের নিজস্ব বোঝাপড়া সরবরাহ করবে যা আপনাকে সন্তুষ্ট করতে পারে না। তবে, চিন্তা করবেন না, এখানে দুর্দান্ত সহকর্মী রয়েছে, তারা অবশ্যই আপনাকে সাহায্য করবে :-)
পঙ্কজ উপাধ্যায়

2
আমি ডাউনটিভোট করি নি, তবে "C ++ is C With Class" তে জোর করে প্ররোচিত হয়েছিল। আমরা যারা প্রকৃতপক্ষে সি ++ করতে পারি তারা জনগণের মাথার বাইরে যাওয়ার চেষ্টা করে আমাদের মূল্যায়ন কাজ করে ।
ডেড এমএমজি

1
@ পঙ্কজ: ঠিক আছে। এটি ক্লাস সহ সি ছিল । এটি ক্লাসের সাথে সর্বাধিক স্পষ্টভাবে নয় এবং এটিকে কল করা প্রায় 30 বছরের পুরানো। তখন থেকে সি ++ অনেক দীর্ঘ এগিয়ে গেছে। সি ++ কোড করা লোকেরা এখন আর কখনও সেভাবে উল্লেখ করে না। এটি সবচেয়ে খারাপ অভ্যাস এবং ভুল ছাপকে উত্সাহ দেয়।
ডেডএমজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.