কীভাবে ওওপি সম্পত্তিগুলির ধারণা অন্তর্ভুক্ত করতে বিকশিত হয়েছিল


12

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

"এটি হ'ল বৈশিষ্ট্যগুলি ক্লাসের সদস্য কোড (পদ্ধতি) এবং সদস্য ডেটা (উদাহরণ ভেরিয়েবল) এর মধ্যে অন্তর্বর্তী এবং বৈশিষ্ট্যগুলি সর্বজনীন ক্ষেত্রের তুলনায় উচ্চতর স্তরের এনক্যাপুলেশন সরবরাহ করে।"

এমএসডিএন আরও পটভূমি যুক্ত করেছে:

"যদিও সম্পত্তিগুলি প্রযুক্তিগতভাবে পদ্ধতির সাথে খুব একইরকম, তবে তাদের ব্যবহারের পরিস্থিতিগুলির ক্ষেত্রে সেগুলি বেশ আলাদা different তাদের স্মার্ট ক্ষেত্র হিসাবে দেখা উচিত They তাদের ক্ষেত্রগুলির কলিং বাক্য গঠন এবং পদ্ধতিগুলির নমনীয়তা রয়েছে।"

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


8
খালি ভাষার বৈশিষ্ট্যটি গেটর এবং সেটার পদ্ধতিগুলির জন্য কেবল সুবিধাজনক সিনট্যাকটিক চিনি। ব্যাখ্যা এবং পরিভাষার পিছনে আরও গভীর কারণ রয়েছে কিনা তা আমার জানা নেই।

ওও বিশেষজ্ঞদের একটি দফায় আপনার প্রশ্নের শিরোনাম উত্তেজক হতে পারে এবং আপনি যা জিজ্ঞাসা করেছিলেন তা থেকে বিভ্রান্ত হতে পারে। আমি নিজেকে ওও বিশেষজ্ঞকে মৌমাছি হিসাবে গ্রহণ করি না, আমি বেশ কয়েক বছর ধরে কেবল একজন "ওও ব্যবহারকারী"।
ডক ব্রাউন

এটি একটি সিনট্যাক্টিক নব্বইটি আমি পাইথনের 'প্যারামিটার-কম পদ্ধতিগুলি' থেকে সি ++ এ যেতে মিস করতে এসেছি। আইএমও BMI = bob.weight/sq(bob.height)ছাড়াই ভাল পড়ে ()
ওজেফোর্ড

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

অবিরত: সম্পত্তি উইন্ডোটি কোড না লিখে বিষয়বস্তু কনফিগার করার একটি উপায় ছিল। একে বলা হত আরএডি ডেভলপমেন্ট। এই লিঙ্কটিতে ভিবি 6 বৈশিষ্ট্য উইন্ডোটির একটি স্ক্রিনশট রয়েছে: মাইক্রোসফ্ট
এমএসপ্রেস / বইস / ডাব্লুডাব্লু /স্যাম্পপ্যাপ / 4068.aspx

উত্তর:


5

এটি সমস্তই এনক্যাপসুলেশন এবং ইউনিফর্ম অ্যাক্সেস নীতিমালা সম্পর্কে।

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

এটি অর্জনের বিভিন্ন উপায় রয়েছে:

  • ডেটা পুরোপুরি পরিত্রাণ পান, কেবল পদ্ধতি আছে (নিউজজাইক এটি করে)

    • উপরের একটি কম র‌্যাডিকাল ফর্ম: পাবলিক ইন্টারফেসে ডেটা থেকে মুক্তি পান , অর্থাত্ সর্বদা ব্যক্তিগত রাখুন, পাবলিক ইন্টারফেসে কেবল পদ্ধতি উদ্ঘাটিত করুন (স্মার্টটাক, রুবি এটি করেন)
  • পদ্ধতিগুলি পুরোপুরি পরিত্রাণ পান, কেবল ডেটা রাখুন (স্বয়ংক্রিয়ভাবে এটি করে, "পদ্ধতি" Methodহ'ল অবজেক্টগুলি ভেরিয়েবলগুলিকে বরাদ্দ করা হয়, উদাহরণের ভেরিয়েবলগুলি ভার্চুয়াল প্রেরণের সাথে দেখানো হয়)

  • পদ্ধতি এবং উপাত্তের মধ্যে কোনও সিনট্যাক্টিক বা সিনথেটিক পার্থক্য তৈরি করবেন না (স্ক্যালাল এটি করে, একটি ক্ষেত্র অ্যাক্সেসটি যুক্তি তালিকা ছাড়া পদ্ধতিটি কল করা থেকে সিনট্যাকটিকভাবে পৃথক হতে পারে foo.bar), একটি ক্ষেত্রের জন্য বরাদ্দ করা বিশেষভাবে নামযুক্ত পদ্ধতিতে কল করা থেকে সিনট্যাকটিকভাবে পৃথক হয় ( foo.bar = baz) যেমন foo.bar_=(baz)নামক পদ্ধতিতে কল করা foo_=, এবং কেবলমাত্র পঠনযোগ্য মানগুলিকে পরামিতি তালিকা ছাড়াই কোনও পদ্ধতি দ্বারা ওভাররাইড করা বা প্রয়োগ করা যেতে পারে (যেমন val foo) একটি সুপারক্লাসে abstract valএকটি পদ্ধতিতে একটি সাবক্লাসে ওভাররাইড করা (বা প্রয়োগ করা যেতে পারে def foo)

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

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

সুতরাং, এটি আসলে সমস্যার সমাধান করে না: জিনিসগুলিতে অ্যাক্সেসের তৃতীয় উপায় যুক্ত করে আপনি জিনিসগুলিতে অ্যাক্সেসের দুটি ভিন্ন উপায় থাকা ঠিক করতে পারবেন না! এমনকি যদি তৃতীয় উপায়টি অন্য দুটি উপায়ে একটির মতো দেখায়, তবুও আপনার কাছে (অন্তত) দুটি ভিন্ন উপায় থাকবে। আপনি কেবলমাত্র একটি ব্যতীত অন্য সমস্ত উপায়ে পরিত্রাণ পেয়ে বা পার্থক্য থেকে মুক্তি পেতে কেবল এটি ঠিক করতে পারেন।

পদ্ধতি, বৈশিষ্ট্য এবং ক্ষেত্রগুলি সহ কোনও ভাষা থাকলে এটি পুরোপুরি ঠিক আছে তবে তিনটিরই অভিন্ন অ্যাক্সেস থাকা উচিত।


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

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

এই প্রশ্নের অনেক ভাল উত্তর কিন্তু আমি মনে করি এটি প্রোগ্রামিং ভাষার প্রকৃতির আরও মৌলিক দিকগুলি টেনে নিয়ে এবং ইউএপি সম্পর্কিত প্রথাগত ধারণাটি বিশদ দিয়ে মস্তকে পেরেক মারল। সলিড
jxramos

18

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

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


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

2
@ ফ্র্যাঙ্কহিল্যান: "সম্পত্তি হ'ল ক্ষেত্রের বিমূর্ততা এবং ক্ষেত্রগুলি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের অংশ" - ভাল, আমার কাছে মনে হয় আপনি এই ধারণাটির সাথে সম্মত হচ্ছেন যেমন ওওপি-র সাথে কমপক্ষে কিছু করার আছে do আর এই কারণেই আপনি আমাকে বঞ্চিত করলেন?
ডক ব্রাউন

3
হাঃ হাঃ হাঃ. আপনি কি তাকে দোষ দিতে পারেন? সে টয়লেট থেকে পিছলে গেল এবং তার ডুবে তার মাথায় আঘাত করল। যাইহোক ... আমি যেভাবে সর্বদা দেখেছি তা হ'ল সম্পত্তিগুলি ওও জিনিসের উপর কঠোরভাবে হয় না । এগুলি এনক্যাপসুলেশনে সহায়তা করে এবং এনক্যাপসুলেশন ওওকে সহায়তা করে।
মেটাফাইট

1
হা! এটি আমার জন্য প্রোগ্রামার্স.স্ট্যাকেক্সচেঞ্জের বেশ পরিচিতি। লল, প্লেইন ওল স্ট্যাকওভারফ্লোতে আমার সমতুল্য অভিজ্ঞতার চেয়ে অনেক বেশি উত্তপ্ত :- দিনটি ভালভাবে মিশ্রিত করার উপায়!
jxramos


11

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

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

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

অন্য বড় অনুপ্রেরণা হ'ল জাভা বিন এবং তাদের আত্মীয়। জাভা প্রতিচ্ছবি সন্ধান করতে GetXএবং জোড়গুলির জন্য ব্যবহার করতে SetXএবং আধুনিক বৈশিষ্ট্যের মতো কার্যকরভাবে তাদের আচরণ করার জন্য বেশ কয়েকটি ফ্রেমওয়ার্ক তৈরি করা হয়েছিল । তবে যেহেতু এগুলি প্রকৃত ভাষা নির্মাণ ছিল না, এই কাঠামোগুলি ভঙ্গুর এবং উদ্বেগজনক ছিল। যদি আপনি কোনও নাম টাইপ করেন তবে জিনিসগুলি কেবল নিঃশব্দে ভেঙে যায়। যদি কেউ রিফ্যাক্টর হয়ে থাকে তবে কোনও কিছুই সম্পত্তির অন্য দিকে সরেনি। এবং ক্ষেত্রের সমস্ত / get / সেট বয়লারপ্লেট করানো ভার্ভোজ এবং ক্লান্তিকর ছিল (এমনকি জাভাও!)। যেহেতু সি # বড় আকারে "শেখা পাঠের সাথে জাভা" হিসাবে বিকশিত হয়েছিল সেই ধরণের পাঠের মধ্যে এই ধরণের ব্যথা ছিল।

তবে সবচেয়ে বড় বিষয় সম্পত্তি ধারণাটি সফল হয়েছে। এটি বোঝা সহজ, এটি ব্যবহার করা সহজ। এগুলি গ্রহণযোগ্যভাবে ব্যাপকভাবে সহায়তা করে এবং একটি সরঞ্জাম হিসাবে প্রোগ্রামাররা খুঁজে পেয়েছেন যে বৈশিষ্ট্যগুলি ফাংশন বা ক্ষেত্রগুলির চেয়ে বেশি পরিষ্কারভাবে সমস্যার একটি উপসেট সমাধান করে।


7
অপ্রাসঙ্গিক আনুষ্ঠানিক জালিয়াতির খুব বেশি রেফারেন্সের জন্য আমি আপনাকে বেশিরভাগ ক্ষেত্রে অগ্রাহ্য করেছি। প্রোগ্রামিং ভাষার বাস্তব বাস্তবায়নে লাম্বদা ক্যালকুলাসে তাদের মডেল অন্তর্ভুক্ত ছিল কি না তার চেয়ে অনেক বেশি গুরুতর বিষয় বিবেচনা করতে হবে।
ডেড জিএম

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

3
এটি অবশ্যই "অপ্রাসঙ্গিক প্রথাগত জঞ্জাল" নয়। তবে, লাম্বদা ক্যালকুলাসটি প্রাথমিক প্রোগ্রামিং ভাষার জন্য খুব বেশি বিবেচিত হবে না। যদি তা হয় তবে সিপিইউগুলি সম্ভবত সেই মানসিকতার দিকেই বেশি মনোযোগী হবে।
ফ্রাঙ্ক হিলেমান

3
@ ফ্র্যাঙ্কহিল্যান - আমি বেশ নিশ্চিত যে লিস্প এটি বিবেচনা করেছে ...
টেলাস্টিন

4
@ টেলাস্টিন - হ্যাঁ - এবং লিস্পের মূলত প্রোগ্রামিং ভাষা হওয়ার কথা ছিল না, মনে আছে?
ফ্রাঙ্ক হিলিমান

3

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


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

অত্যন্ত আকর্ষণীয় যে আপনি এই প্রশ্নের উপাদানগুলির দিক থেকে একমাত্র হলেন। আমি কেবলমাত্র একটি সাইটের সাথে লিঙ্ক করে আমার প্রশ্নের সাথে একটি মন্তব্য যুক্ত করেছি যা কিছু সম্পত্তি-পদ্ধতি-ইভেন্ট মডেলের অংশ হিসাবে বৈশিষ্ট্য তালিকাভুক্ত করেছে যা সি # সন্তুষ্ট করে। তারপরে আমি "মিথ্যা" কিছু মিথ্যা ধনাত্মক অবতারণার জন্য আমার প্রশ্নের পৃষ্ঠাটি আবার অনুসন্ধান করেছি তবে আপনার উত্তর আমি মনে করি আসলে যা আমি লিঙ্ক করেছি তার সাথে ওভারল্যাপ হয়।
jxramos

3

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

ক্ষেত্রগুলিতে সম্পত্তিগুলির সুবিধাগুলি রয়েছে:

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

বৈশিষ্ট্যগুলি ক্ষেত্রগুলির বিমূর্ততা এবং সিনট্যাক্টিক সুবিধার জন্য, সি # এর মতো ভাষা বৈশিষ্ট্যগুলির জন্য ক্ষেত্রের বাক্য গঠনকে গ্রহণ করে।


2
উইকিপিডিয়া নিবন্ধ থেকে প্রথম লাইন। "কিছু সম্পত্তি-ভিত্তিক প্রোগ্রামিং ভাষায় একটি সম্পত্তি শ্রেণীর সদস্যদের একটি বিশেষ ধরণের ..." " সুতরাং আপনার প্রথম বাক্যটি সরল ভুল। এবং বাকি অংশটি প্রশ্নের উত্তর দেয় না।
ডক ব্রাউন

1
@ ডকব্রাউন: আকর্ষণীয় প্রতিক্রিয়া। অনেক উইকিপিডিয়া নিবন্ধ পরিষ্কারভাবে ভুল। আমি ধরে নিচ্ছি আপনি এই নির্দিষ্ট নিবন্ধটির লেখককে রক্ষা করছেন?
ফ্র্যাঙ্ক হিলিমান

1
অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষার সমস্ত বৈশিষ্ট্য অবজেক্ট-ওরিয়েন্টেড ধারণার সাথে সম্পর্কিত নয়।
ফ্র্যাঙ্ক হিলেমান

1
এটি আপনি প্রশ্নের উত্তর দিচ্ছেন না এমন পরিবর্তন করে না।
ডক ব্রাউন

3
এটি লক্ষ করা উচিত যে এটি কেবলমাত্র alচ্ছিক সেটার নয়। আপনার কেবল সেটার বৈশিষ্ট্য থাকতে পারে।
টেলাস্টিন

2

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

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

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

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


আমি কিছু পয়েন্ট সঙ্গে একমত এবং অন্যদের সঙ্গে মতানৈক্য, কিন্তু সামগ্রিক বার্তা একটি ভাল এগুলির মধ্যে একটি: সম্পর্কে একটি বস্তু চাহিদা গণনা করা করতে কিছু তথ্য কিন্তু এখনও টেকনিক্যালি তথ্য যে হয় এমন একটি ক্রিয়া করা যেতে পারে বদলে সম্পন্ন
ফারাপ

0

একেবারে কিছুই। সম্পত্তি এবং OOP একে অপরের সাথে কোন সম্পর্ক নেই। বৈশিষ্ট্যগুলি ফাংশন কলগুলির জন্য সিনট্যাকটিক চিনি ছাড়া আর কিছুই নয়, এবং সুতরাং ঠিক একই রকম ওওপি-সংযুক্তি রয়েছে যা ফাংশন কল করে which যা বলার অপেক্ষা রাখে না।

উইকিপিডিয়া পুরোপুরি ভুল। আপনি জাভাতে পাবেন getMember / setMember প্যাটার্নটি সি # এর বৈশিষ্ট্য হিসাবে হুবহু একই সুবিধা (এবং অসুবিধাগুলি) সরবরাহ করে। আপনি চাইলে এমনকি সিতেও এই প্যাটার্নটি প্রতিলিপি করতে পারেন।

সি # তে থাকা বৈশিষ্ট্যগুলি ভাষা-সমর্থিত সিনট্যাকটিক-চিনি ছাড়া আর কিছুই নয়।


3
আপনি কি কখনও শ্রেণি বা বস্তুর প্রসঙ্গে বাইরের কোনও প্রোগ্রামিং ভাষায় সম্পত্তি ধারণাটি দেখেছেন? আমার নেই.
ডক ব্রাউন

1
@ ডকব্রাউন: আমি এটি প্রয়োগ করেছি। ঘটনাটি হ'ল ভাষা লেখকদের জন্য বৈশিষ্ট্যগুলি বেশ কম-লক্ষ্য লক্ষ্যমাত্রা, যেহেতু নিয়মিত ফাংশন কলগুলির তুলনায় তাদের উন্নতি কম।
ডেড এমজি

1
ওপি জনপ্রিয় প্রোগ্রামিং ভাষাগুলিতে ধারণা হিসাবে সম্পত্তিগুলির ইতিহাস সম্পর্কে জিজ্ঞাসা করছিল । এবং প্রকৃতপক্ষে, historicতিহাসিক অর্থে বৈশিষ্ট্য এবং ওওপির মধ্যে একটি সংযোগ রয়েছে।
ডক ব্রাউন

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

4
এগুলি কেবল সি # তে সিনট্যাক্স চিনি নয়, তারা এসেম্বলি মেটাটাটাতে স্বতন্ত্র সদস্য হিসাবে বিদ্যমান এবং আপনি ক্ষেত্রগুলিতে যেমন ডেটাবাইন্ডিংয়ের সাথে সম্পত্তি না পারেন এমন জিনিসগুলি আপনি করতে পারেন।
অ্যান্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.