সি ++ কি ওওপির জন্য উপযুক্ত নয়? [বন্ধ]


12

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

এর মধ্যে কি কিছু সত্যতা রয়েছে; যদি তাই হয় তবে কেন?



5
ওওপি কোনও সংজ্ঞায়িত শব্দ নয়, সুতরাং সি ++ উপযুক্ত কিনা তা নিয়ে আলোচনা করা অর্থহীন।
zvrba

উত্তর:


31

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

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

আপনি যদি বার্তাটি পাস করার বিষয়টি ওওপির কাছে মৌলিক হিসাবে গ্রহণ করেন, তবে আপনি যখন এটি C ++ দিয়ে করতে পারেন তখন তা সহজ নয়। OTOH আপনি যদি সেই ডেটাতে কাজ করে এমন ফাংশনগুলির সাথে ডেটা যুক্ত করার অর্থ যদি OOP নেন তবে সি ++ ঠিক আছে।


8
+1 - তবে আমি সবসময়ই ভেবেছিলাম যে কোনও ফাংশন কল হ'ল কোনও বার্তা প্রেরণের যুক্তিসঙ্গত উপায়। সত্য, এটি প্রতিটি স্তরের জন্য উচ্চ স্তরের স্থিতির চেয়ে নিম্ন স্তরের ভিত্তি - তবে সক্রিয় বস্তুর প্যাটার্নটি দেখায় যে এটি সেই ভিত্তিটি থেকে তৈরি করতে সক্ষম।
স্টিভ 314

6
তাই এই ক্ষেত্রে প্রযোজ্য না শুধুমাত্র C ++ কিন্তু জাভা, সি #, অবজেক্ট পাস্কাল, ইত্যাদি এবং এটা হচ্ছে উইন্ডোস API মেসেজিং সিস্টেমের কি অ্যালান গলি সবচেয়ে গুরুত্বপূর্ণ জিনিস, হিসাবে বোঝানো হয় যে শেষ পর্যন্ত বিশেষভাবে উপায় এটা ডেল্ফী দ্বারা পরিচালিত হয়
ত্রিনিদাদ

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

@ স্টিভ 314 হ্যাঁ এটি। প্রকৃতপক্ষে ওজেজেসি কীভাবে কাজ করে, একটি বার্তা প্রেরণ একটি ফাংশন কলে অনুবাদ করা হয় যা দেখায় এবং পদ্ধতি ফাংশনটিকে কল করে। আমি যেমন বার্তা পাঠানো বুঝতে পারি, এটি গুরুত্বপূর্ণ যে দ্বিগুণ প্রেরণ।

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

27

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

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

তিনি মশীহ নন, এবং ওওপি ওয়ান ট্রু প্রোগ্রামিং উপমা নয় ig

এটি অনেকের মধ্যে একটি ভাল ধারণা। ওপ মানসিকতা থেকে আসা সি ++ এর কি এতে ভাল ধারণা আছে? অবশ্যই আছে।


8

সি ++ ওওপি সমর্থন করে , যদি আপনি ওওপিটিকে এনক্যাপসুলেশন, উত্তরাধিকার এবং পলিমারফিজম বলতে বোঝায়।

তবে, সি ++ সত্যই ওওপিতে এক্সেল করে না । একটি কারণ হ'ল পলিমারফিজম প্রায়শই হিপ-বরাদ্দকৃত বস্তুর উপর নির্ভর করে, যা (স্মার্ট পয়েন্টার ব্যবহার সত্ত্বেও) আবর্জনা-সংগৃহীত ভাষায় কাজ করা আরও স্বাভাবিক।

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


4

সি ++ সিমুলা থেকে নেওয়া ওওপি বৈশিষ্ট্যগুলি। এক বা একাধিক সিমুলা বিকাশকারী আইআইআরসি মন্তব্য করেছে যে সি ++ তারা মনে মনে রাখে না।

সি ++ এর বিমূর্তকরণের জন্য ভাল সরঞ্জাম রয়েছে তবে এটি কোনও অবজেক্ট ওরিয়েন্টেড ভাষার চেয়ে মিশ্র-দৃষ্টান্তের ভাষা। অবজেক্ট ওরিয়েন্টেড বৈশিষ্ট্যগুলি রয়েছে তবে আপনার পছন্দগুলি রয়েছে যা "কঠোর ওওপি" নয়।

আপনি সি ++ এ যে দুষ্টু "অপ্ট-আউটস" পেয়েছেন তার মধ্যে একটি হল পদ্ধতির জন্য দেরি বাঁধাই না করে তাড়াতাড়ি ব্যবহার করা। কেবল এটিই সম্ভব নয় - এটি ডিফল্ট। জাভাতে, "চূড়ান্ত" সম্পর্কিত, তবে কিছু উপায়ে ক্লিনার (এটি এমন একটি উপায়ে নির্দিষ্ট করে যা কেবলমাত্র তুচ্ছ কর্মক্ষমতা উপেক্ষা করে না), এবং এটি ডিফল্ট নয় not

কিছু উপায়ে, সি ++ প্রারম্ভিক পরীক্ষা হওয়ার চিহ্ন রয়েছে যা এখনও এখানে রয়েছে here তবুও, এটি এখনও একটি ভাল সরঞ্জাম, প্রচুর সুবিধাগুলি সহ যা আপনি অন্যান্য ওওপি ভাষায় পান না।


2
সি ++ অ-ওওপি এবং সি ++ ওপিকে অনুমতি দেয়, কিছু ভাষা ওও হওয়ার জন্য এটি ওওপিকে অনুমতি দিতে হয়, সুতরাং সি ++ একটি ওও ভাষা।
ত্রিনিদাদ

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

1
@ ট্রিনিডাড: যে কোনও ভাষা ওওপিকে অনুমতি দেয়। আমি সরল পুরাতন সিতে বেশ সুন্দর ওও কোড দেখেছি, হ্যাঁ, সমস্ত ভার্চুয়াল পদ্ধতির টেবিলগুলি হাত দ্বারা সংজ্ঞায়িত করা ব্যথা হচ্ছে তবে ভাষা স্পষ্টভাবে এটির অনুমতি দেয়।
জানু হুডেক

4

সবকিছুকে একটি শ্রেণীর অংশ হতে বাধ্য করা অগত্যা দুর্দান্ত ওও কোড দেয় না।

জাবাতে একটি দুর্বল প্রসেসরাল প্রোগ্রামারকে জিজ্ঞাসা করুন এবং তারা সম্ভবত কোথাও একটি ক্লাস নেবে, এটিকে একটি স্ট্যাটিক প্রধান পদ্ধতি দেবে এবং এতে 1000 লাইন কোডের কাঠি আটকাবে। আমি জানি আমি এটি দেখেছি।

জাভা একটি সুইচ স্টেটমেন্ট আছে। আমি switch( type ) { case typeA: bundles_of_code; break; case typeB: bundles_of_other_code; break }C ++ এবং জাভা কোড উভয় ক্ষেত্রেই দেখেছি ।

সি ++ অনেকগুলি ওও ধারণাগুলি সমর্থন করে তবে এর মানটি এর দ্বারা সংজ্ঞায়িত করা হয় না, তবে আমি অনুমান করি যে আপনার উদ্দেশ্য কী তার উপর অনেক কিছু নির্ভর করে।

সি ++ এর মূল "দুর্বল" শব্দার্থক ক্লাসগুলির অনুলিপি-নির্মাণের অনুমতি দিচ্ছে যার ফলে কোনও বস্তু অন্য একটিতে ট্রান্সমোগ্রাইফ করে। আপনি এটি অক্ষম করতে পারেন তবে তারপরে আপনি কোনও ফাংশন থেকে ফিরতে পারবেন না। ভাগ্যক্রমে এটি C ++ 0x এ সম্বোধন করা হয়েছে।


3

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

সি ++ বিভিন্ন জিনিসগুলির মিশ্রণের সাথে সেরা কাজ করে; এটি আশ্চর্যজনক হওয়া উচিত নয়, যেহেতু সর্বাধিক ভাল জিনিসগুলি সর্বোত্তমভাবে কাজ করে। প্রায়শই ওওপি হ'ল এই খুব দরকারী সরঞ্জামগুলির মধ্যে একটি।


2

সি ++ ওওপি-র জন্য ব্যবহার করা যেতে পারে তবে এটি 'খাঁটি' ছোট্টটালকের মতো কিছু নয়। সি ++ আপনাকে নন-ওওপিও করতে দেয় যা লোকেদের দ্বারা কথা বলা হতে পারে।


2

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

তবে বেশিরভাগ লোকেরা সম্ভবত যা বোঝায় তা হ'ল অনেক লোক সি ++ এ অ-অবজেক্ট ওরিয়েন্টেড কোড লিখেন তবে বিশ্বাস করেন যে তারা "ওওপি" ভাষা ব্যবহার করছেন বলে তারা বস্তু-ভিত্তিক। এটা সত্যি না. তবে আমার মতে, আপনি ছোট্ট টাল্কে ঘৃণ্য অত্যাবশ্যক কোড লিখতে পারেন এবং সি ++ এর কোনও শালীন ওওপি ডিজাইনের চেয়ে সেরা হতে পারবেন না।


1

অ্যালান কেয়ের সি ++ এর সম্পর্কে পুরোপুরি বৈধ আপত্তিটি ছিল এটি সি এর উপরে একটি ম্যাক্রো ভাষা ছিল was

"বার্তা পাসিং" এর ধারণাটি কেবল এই ধারণাটি যে ক্লাসগুলির উদাহরণগুলি মেমরিতে রাখা হয় এবং তারা যে পদ্ধতিগুলি বলা যেতে পারে তা প্রকাশ করে। বার্তা পাসিংটি সিমুলেটেড হয় সি ++ তে ভিটিবেলগুলি হোল্ড পয়েন্টারগুলি ফাংশনে ব্যবহার করে।

মেসেজ পাসিংটি সি ++ তে বিদ্যমান নয় বলে সঠিকভাবে বলতে গেলে আরও সঠিকভাবে বলা যায় যে বার্তাটি পাস করা অন্যান্য ভাষার একটি অবিচ্ছেদ্য অঙ্গ যা ছোট্ট টাল্ক এবং জাভা পছন্দ করে কারণ ভাষাটি কোনও বিদেশি নির্মাণের প্রস্রোসিং করে না এবং সরাসরি সিটিতে গ্রাফটিং করে না।

এটি একটি অত্যন্ত শব্দার্থক ভাষা নকশার যুক্তি, যা আমি সন্দেহ করি যে প্রশ্নকর্তার অভিজ্ঞতার স্তর থেকে কিছুটা দূরে।

বলা হচ্ছে যে C ++ ঘৃণা করার হাজারো কারণ রয়েছে এবং এটি ভালবাসার খুব কম কারণ রয়েছে।

নিখুঁত হাতুড়ি এবং নিখুঁত পেরেকটি অনুসন্ধান করার পরিবর্তে, তৈরি করার জন্য নিখুঁত বাড়িটি সন্ধান করুন এবং তারপরে সঠিক সরঞ্জামগুলি সন্ধান করুন ... যা অভিজ্ঞতা লাগে।

এটি মনে রাখাও গুরুত্বপূর্ণ যে সিস্টেমে প্রোগ্রামিংয়ে অ্যালান কে যা ভয় পায় "খাঁটি ওওপি" আসলে সি ++ এর শক্তি। প্রতিটি তার নিজস্ব...


1
উদ্দেশ্য সিও সি এর শীর্ষে ম্যাক্রো ভাষা হিসাবে শুরু হয়েছিল তবে এটি একটি অবজেক্ট ওরিয়েন্টেড ভাষা।
জানু হুডেক

1

আমার দৃষ্টিতে এটি ব্যবহারযোগ্যতার সমস্যা হিসাবে এত সংজ্ঞাযুক্ত সমস্যা নয়।

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

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

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

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


কোন গুরুতর উত্তর হওয়া উচিত এফকিউএ রেফারেন্সের জন্য -1। এফকিউএ হ'ল বিকৃতি, অর্ধ-সত্য এবং ভুল বোঝাবুঝির একটি নীড়।
ডেভিড থর্নলে

@ ডেভিডথর্নলে বিশেষ উদ্ধৃতিটি কোনও বিকৃতি, অর্ধ-সত্য বা ভুল বোঝাবুঝি?
অ্যালেক্স পি

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

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

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

-1

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


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

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

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

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

-1

স্টিভ ইয়েজ এটি সেরা বলেছেন :

সি ++ হ'ল পৃথিবীর সবচেয়ে মূ .় ভাষা, স্বল্পতম সংবেদনশীল হওয়ার সত্যিকার অর্থে। এটি নিজের সম্পর্কে জানে না।

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


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

2
পৃথিবীতে আপনি কীভাবে বলতে পারেন যে তিনি এটি "সেরা" বলেছিলেন? এলোমেলো উদ্ধৃতিটির অর্থ কী তা আমার কোনও ধারণা নেই।
ব্যবহারকারী16764

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

ধন্যবাদ। আমি বিশ্বাস করতে পারি না যে আমি প্রতি-প্রতিবিম্বিত ভাষা ওওপির একটি ভাল উদাহরণ নয় বলে এই বলে যে আমি -৩ এ পৌঁছেছি।
জন ক্রোমারটি

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