অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং: কেন "ওরিয়েন্টেড"?


14

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

এই শব্দগুচ্ছটি আমাকে বিরক্ত করে না যতক্ষণ না আমি বিভিন্ন প্রোগ্রামিং প্যারাডিমগুলি সম্পর্কে জানতে পারি (আমি এই তালিকাটি https://en.wikedia.org/wiki/Compistance_of_programming_paradigms থেকে পেয়েছি ):

  • অনুজ্ঞাসূচক
  • ক্রিয়ামূলক
  • প্রথাগত
  • স্ট্রাকচার্ড
  • ঘটনা চালিত
  • অবজেক্ট ওরিয়েন্টেড
  • ঘোষণামূলক
  • অটোমাটা ভিত্তিক

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

এখানে ( https://en.wikedia.org/wiki/Object-oriented_programming ) খুঁজছেন , কোথাও "ওরিয়েন্টেড" শব্দের নিজস্ব শব্দ হিসাবে সম্বোধন করা হয়নি। কেবল "অবজেক্ট" ব্যাখ্যা করা হয়।

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

কীভাবে অবজেক্ট প্রোগ্রামিংকে একটি বাক্য হিসাবে তৈরি করে, যখন আমরা আমাদের প্রোগ্রামিংয়ে অবজেক্ট ব্যবহার করি তখন আমরা কী করব তা বর্ণনা করার পক্ষে যথেষ্ট নয়?

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

অন্যদিকে, যদি সেখানে আসলে কেন একটি ভাষা বা কোডের টুকরা আবশ্যক জন্য একটি দরকারী কারণ নেই বাতলান ,, বস্তু প্রতি সব অন্যান্য দিকনির্দেশ বর্জন যেমন নিছক তার toolbelt তাদের হিসাবে বিরোধিতা সরঞ্জাম , আমি সত্যিই হবে এটি সম্পর্কে জানতে আগ্রহী। আমি দরকারী জিনিস শিখতে পছন্দ করি।


11
আমার ধারণা "অবজেক্টিভালি" বা "আপত্তিজনক" আসলে কী বোঝানো হয়েছে তার সঠিক ধারণা দেয় না ;-)
ডক ব্রাউন

আমি "অবজেক্টিফাইটিড" হিসাবে বিবেচনা করেছি, তবে সিদ্ধান্ত নিয়েছি যে এটি ভুল টিপগুলিও বন্ধ করে দিতে পারে।
মার্জনাম


1
আমি মনে করি "অবজেক্ট" ভুল, "ওরিয়েন্টেড" নয়। আমরা যাকে অবজেক্ট-ওরিয়েন্টড বলি তা সাধারণত শ্রেণিকেন্দ্রিক।
স্টিভ 314

1
যে কোনও ফিনিক্স রাইটের ভক্তরা কেবল এটিকে "ওবিজেইশন !! প্রোগ্রামিং" বলতে চান?
কাতানা 314

উত্তর:


24

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

  • অনুজ্ঞাসূচক
  • ক্রিয়ামূলক
  • প্রথাগত
  • স্ট্রাকচার্ড
  • ঘোষণামূলক
  • ঘটনা চালিত
  • অটোমাটা ভিত্তিক
  • অবজেক্ট ওরিয়েন্টেড

শব্দগুলির মধ্যে কী মিল রয়েছে? এগুলি সমস্ত বিশেষণ কারণ তারা "প্রোগ্রামিং" শব্দটি সংশোধন করার উদ্দেশ্যে। তদ্ব্যতীত, "অপরিহার্য" ব্যতীত এগুলি সমস্তই "প্রাকৃতিক" বিশেষণ নয়, তবে "সংযুক্ত" বিশেষ্য - বিশেষ্য যা প্রকৃতপক্ষে দৃষ্টান্তটির মূল বর্ণনা দেয়: ফাংশন, কাঠামো, অটোমেটা এবং অবজেক্ট।

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

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


1
দুর্দান্ত পয়েন্ট (যদিও আমি মনে করি আপনি বিশেষণ বোঝাতে চাইছেন, বিশেষণ নয় - এই প্রসঙ্গে "প্রোগ্রামিং" একটি বিশেষ্য)।
JW01

@ জেডব্লিউ 01: ওফস, আপনি ঠিক বলেছেন
মাইকেল বর্গওয়ার্ট

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

অবাক হলেন কেন তিনি অবজেক্ট-আবেগপ্রবণ বাছাই করেন নি ... ওহ হ্যাঁ, এঁরা হলেন কেবল উদ্যোগী যারা জানেন না কখন থামবেন। ;-)
Deduplicator

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

18

তবে যখন আমরা অবজেক্টগুলির সাথে প্রোগ্রামিংয়ের বিষয়ে কথা বলি, তখন আমাদের স্পষ্ট করে বলতে হবে যে আমরা objects অবজেক্টগুলিকে ঘিরে। আমরা কি শুধু জিনিস ব্যবহার করতে পারি না? আমরা কি শুধু জিনিস রাখতে পারি না?

সত্যই, এটি ইতিহাসের একটি ধারক। ফাংশনাল প্রোগ্রামিং হ'ল ফাংশন-ওরিয়েন্টেড প্রোগ্রামিং, ডিক্লেয়ারেশনাল প্রোগ্রামিং আসলেই ডিক্লোরেশন-ওরিয়েন্টেড প্রোগ্রামিং ... সর্বোপরি আমরা কেবল ফাংশন ব্যবহার করি না? আমরা কি শুধু ফাংশন করতে পারি না?

"অবজেক্ট অরিয়েন্টেড" জিহ্বাকে আরও ভাল রোল করে তোলে এবং এটি historতিহাসিকভাবে অন্তর্নিহিত।

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


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

1
আমি মনে করি আপনি সত্যিই পেরেকটি আঘাত করেছেন: আমরা অবজেক্ট-ওরিয়েন্টড ডিজাইন করি এবং সেই কারণেই ভাষাগুলি বস্তু-ভিত্তিক - আমাদের এই নকশাটি প্রকাশ করার অনুমতি দেয়।
স্টেফ

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

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

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

2

এটিকে কল করা যা বোঝাতে সহায়তা করে যে অবজেক্টগুলি দৃষ্টান্তের খুব গুরুত্বপূর্ণ অংশ।

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

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

আমরা এটিকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বলি কারণ ওও স্টাইলে লেখা একটি প্রোগ্রামে কেবল অবজেক্ট থাকে না; পুরো প্রোগ্রামটির কাঠামো তাদের চারপাশে এবং তারা যেভাবে কাজ করে তার চারদিকে ভিত্তি করে।


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

2
আজকাল প্রচুর শিক্ষার্থী প্রথম ভাষা হিসাবে সরাসরি জাভা বা সি # তে যায় এবং আইএমও তারা ওওর সুবিধাগুলি বুঝতে পেরে সত্যিই এড়িয়ে যায়। - প্রকৃতপক্ষে, আমি সি ++ এ শুরু করেছি এবং আমার প্রথম কার্যনির্বাহে আমি অবজেক্ট এবং ফাংশনগুলির মিশ্রণ ব্যবহার করেছি, তবে আমার ফাংশনগুলির ব্যবহারের জন্য চিহ্নিত করা হয়েছে। এই ফাংশনগুলির মধ্যে কিছু সম্পূর্ণরূপে কার্যকরী ছিল এবং কোনও বস্তুতে থাকা ক্যাপসুলেশন থেকে কোনও উপকারে আসেনি, তবে অন্যরা কাজ করার জন্য (যেমন: পরিবর্তিত রাষ্ট্রের তথ্য) ভেরিয়েবলের কাছে পয়েন্টার নিয়েছিল, তারা একবার হয়ে গেলে এবং কল করা খুব সহজ হয়েছিল they একটি অবজেক্টে, তাই আমি এর উভয় দিক দেখেছি।
Excrubulent
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.