প্রোগ্রামিং ভাষায় উত্তরাধিকার ছাড় O


10

আমি আমার নিজস্ব প্রোগ্রামিং ভাষা বিকাশ করছি। এটি একটি সাধারণ উদ্দেশ্য ভাষা (ডেস্কটপের জন্য স্থিরভাবে পাইথন টাইপ করুন, যেমন int x = 1;) মেঘের উদ্দেশ্যে নয়

আপনি কি ভাবেন যে উত্তরাধিকার বা মিক্সিনদের অনুমতি না দেওয়া ভাল? (প্রদত্ত যে ব্যবহারকারীটির কমপক্ষে ইন্টারফেস থাকতে পারে)

উদাহরণস্বরূপ: গুগল গো, একটি সিস্টেমের ভাষা যা উত্তরাধিকারের অনুমতি না দিয়ে প্রোগ্রামিং সম্প্রদায়কে হতবাক করে দেয়।

উত্তর:


4

প্রকৃতপক্ষে, আমরা আরও এবং আরও খুঁজে পাই যে উত্তরাধিকার ব্যবহার উপ-সর্বোত্তম কারণ (অন্যদের মধ্যে) এটি শক্ত দম্পতির দিকে পরিচালিত করে।

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

সুতরাং হ্যাঁ , বিশেষত উত্তরাধিকার প্রদান না করা সম্পূর্ণ বৈধ, এবং প্রচলিত ডিজাইনের সিদ্ধান্তে।

Mixins অন্যদিকে, এমনকি (এখনও) একটি মূলধারার ভাষা বৈশিষ্ট্য নয়, এবং ভাষা না একটি বৈশিষ্ট্য "mixin" বলা প্রদান প্রায়ই এটি দ্বারা খুব ভিন্ন জিনিস বুঝতে। এটি বিনামূল্যে নির্দ্বিধায়, না প্রদান করুন। ব্যক্তিগতভাবে আমি এটি খুব দরকারী বলে মনে করি তবে এটি বাস্তবায়ন করা খুব কঠিন হতে পারে।


13

উত্তরাধিকার (বা কোনও একক বৈশিষ্ট্য, সত্যিই) প্রয়োজনীয় কিনা তা নিয়ে যুক্তি বাক্য ভাষার শব্দার্থবিজ্ঞানের কথা বিবেচনা না করেই অর্থহীন; আপনি একটি শূন্য মধ্যে তর্ক করছেন।

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

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

আপনার যদি দেরীতে বাইন্ডিং, ডায়নামিক টাইপিং, মেথড-এ-প্রপার্টি, নমনীয় ফাংশন আর্গুমেন্ট এবং প্রথম শ্রেণির ফাংশনগুলি থাকে তবে আপনি একই ভিত্তিটিও আবৃত করেন, তবে আবার একটি আলাদা দৃষ্টান্ত ব্যবহার করে।

(বর্ণিত দুটি দৃষ্টান্তের উদাহরণ খুঁজে পাওয়া পাঠকের পক্ষে অনুশীলন হিসাবে ছেড়ে দেওয়া হয়েছে।)

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


9

হ্যাঁ.

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

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

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

তো, সবাই বলেছিল, আমি এর জন্য যাব।


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

না এটি স্থিতিশীল এবং দৃ strongly়ভাবে টাইপ করা হয়েছে, আমি এটি শীর্ষে উল্লেখ করব।
ক্রিস্টোফার

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

2
দয়া করে, দয়া করে, বেশ দয়া করে, উত্তরাধিকার এবং কোড পুনরায় ব্যবহার সম্পর্কিত সম্পর্কিত বন্ধ করুন। এটি বহু আগে থেকেই জানা যায় যে উত্তরাধিকার কোড পুনরায় ব্যবহারের জন্য সত্যই খারাপ সরঞ্জাম bad
জানু হুডেক

3
কোড পুনরায় ব্যবহারের জন্য উত্তরাধিকার হ'ল একটিমাত্র সরঞ্জাম। প্রায়শই এটি একটি খুব ভাল সরঞ্জাম এবং অন্যান্য সময় এটি ভয়ঙ্কর। উত্তরাধিকারের তুলনায় রচনা পছন্দ করার অর্থ এই নয় যে কখনও উত্তরাধিকার ব্যবহার করা হয় না।
মাইকেল কে

8

হ্যাঁ, উত্তরাধিকার বাদ দেওয়া একেবারে যুক্তিসঙ্গত ডিজাইনের সিদ্ধান্ত।

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

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

এখানে একটি ভিডিও যা আমি এই সাধারণ বিষয়টিতে খুব আলোকিত পেয়েছি, যেখানে রিচ হিকি প্রোগ্রামিং ভাষাগুলিতে জটিলতার মৌলিক উত্সগুলি (উত্তরাধিকার সহ) সনাক্ত করে এবং প্রতিটিটির জন্য বিকল্প উপস্থাপন করে: সরল তৈরি সহজ


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

4

যখন আমি প্রথম এই সত্যটি ছড়িয়ে দিয়েছিলাম যে ভিবি 6 ক্লাস উত্তরাধিকারকে সমর্থন করে না (কেবল ইন্টারফেসগুলি), তখন এটি সত্যই আমাকে বিরক্ত করেছিল (এবং এখনও করে)।

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

যদিও মিক্সিন নেই? আপনি যদি কোনও ইন্টারফেস বাস্তবায়ন করতে চান এবং নির্ভরতা ইনজেকশনের মাধ্যমে কোনও ইন্টারফেস সেট করে সেই ইন্টারফেসের সমস্ত কাজকে অর্পণ করতে চান তবে মিক্সিনগুলি আদর্শ are অন্যথায় আপনাকে সন্তানের উদ্দেশ্যে প্রতিটি পদ্ধতি এবং / অথবা সম্পত্তি সরবরাহ করতে সমস্ত বয়লারপ্লেট কোড লিখতে হবে। আমি এটি অনেকটা করি (সি # এর জন্য ধন্যবাদ) এবং এটি এমন একটি জিনিস যা আমি করতে চাই না।


হ্যাঁ এই প্রশ্নটি উত্সাহিত করে তা হ'ল এসভিজি ডোম বাস্তবায়ন যেখানে কোড পুনরায় ব্যবহার খুব সুবিধাজনক।
ক্রিস্টোফার

2

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

সুতরাং প্রশ্নটি: আপনি উত্তরাধিকারের চেয়ে আরও কী চান?


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

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

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

1
@ রায়ান: পয়েন্টারগুলি পুরোপুরি টাইপ-নিরাপদ। তারা সর্বদা তাদের সংজ্ঞা অনুযায়ী আচরণ করে। আপনি তাদের কীভাবে পছন্দ করেন তা নাও হতে পারে তবে সেগুলি কীভাবে সংজ্ঞায়িত করা হয় সে অনুযায়ী এটি সর্বদা। আপনি তাদের না এমন কিছু হতে প্রসারিত করার চেষ্টা করছেন। স্মার্ট পয়েন্টারগুলি সি ++ এ মোটামুটি তুচ্ছভাবে মেমরির সুরক্ষার গ্যারান্টি দিতে পারে।
ডেডএমজি

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

1

না।

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


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

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

1
@ ডেড এমজি বাহ! বেশ শক্ত ভাষা।
ক্রিস্টোফার

@ ডিড এমএমজি: আমি মন্তব্য হিসাবে প্রত্যাখ্যান লিখতে শুরু করেছিলাম তবে আমি এটিকে উত্তর (কিউভি) হিসাবে পরিণত করেছি।
রায়ান কলিপার

1
"যুক্ত করার মতো কিছুই অবশিষ্ট নেই যখন পূর্ণতা অর্জন হয় না তবে যখন অপসারণ করার মতো কিছুই থাকে না" (কিউ)
9000

1

কঠোরভাবে C ++ দৃষ্টিভঙ্গি থেকে কথা বলি, উত্তরাধিকার দুটি মূল উদ্দেশ্যে কার্যকর:

  1. এটি কোড পুনরায় আকারের অনুমতি দেয়
  2. চাইল্ড ক্লাসে ওভাররাইডিংয়ের সাথে একত্রে, এটি আপনাকে চাইল্ড ক্লাস অবজেক্টের ধরণ না জানার জন্য বেস ক্লাস পয়েন্টার ব্যবহার করতে দেয়।

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

উত্তরাধিকার অপসারণের সুবিধাগুলি হ'ল

  1. দীর্ঘ স্তরক্রম এবং এর সাথে সম্পর্কিত সমস্যাগুলি প্রতিরোধ করুন। আপনার কোড ভাগ করে নেওয়ার ব্যবস্থাটি এটির জন্য যথেষ্ট ভাল হওয়া উচিত।
  2. শিশুদের ক্লাস ভাঙা থেকে পিতামাতার ক্লাসে পরিবর্তন এড়াতে হবে।

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


1

আপনি কি ভাবেন যে উত্তরাধিকার বা মিক্সিনদের অনুমতি না দেওয়া ভাল? (প্রদত্ত যে ব্যবহারকারীটির কমপক্ষে ইন্টারফেস থাকতে পারে)

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

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

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