উত্তরাধিকার এবং বহুমুখিতা কেন এত ব্যাপকভাবে ব্যবহৃত হয়?


18

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

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

তবে হাঁসের টাইপিংয়ের মাধ্যমে এটি অর্জন করা অনেক সহজ, তা পাইথনের মতো গতিময় ভাষায় হোক বা সি ++ এর মতো স্থির ভাষা হোক।

উদাহরণস্বরূপ, নিম্নলিখিত পাইথন ফাংশনটি বিবেচনা করুন, এর স্থির সি ++ সমতুল্য:

def foo(obj):
   obj.doSomething()

template <class Obj>
void foo(Obj& obj)
{
   obj.doSomething();
}

ওওপি সমতুল্য নিম্নলিখিত জাভা কোডের মতো কিছু হবে:

public void foo(DoSomethingable obj)
{
  obj.doSomething();
}

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

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


আমি পাইথন বিশেষজ্ঞ নই তাই আমাকে জিজ্ঞাসা করতে হবে: পদ্ধতি objনা থাকলে কী হত doSomething? একটি ব্যতিক্রম উত্থাপিত হয়? কিছুই হয় না?
হতাশ

6
@ ফ্রাস্ট্রেটেড: একটি খুব স্পষ্ট, নির্দিষ্ট ব্যতিক্রম উত্থাপিত হয়েছে।
dsimcha

11
হাঁসের টাইপিং কি এগারো পর্যন্ত বহুত্ববাদ গ্রহণ করা যায় না? আমার অনুমান যে আপনি ওওপি নিয়ে হতাশ নন তবে এর স্ট্যাটিক্যালি টাইপ করা অবতারের সাথে। আমি এটি বুঝতে পারি, সত্যই, তবে এটি ওওপিটিকে পুরোপুরি একটি খারাপ ধারণা করে না।

3
প্রথমে "বন্য" হিসাবে "ব্যাপকভাবে" পড়ুন ...

উত্তর:


22

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

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

নীচের লাইন: আমি সম্মত হই যে জাভা-স্টাইলের উত্তরাধিকার এবং পলিমারফিজম পিআইটিএ হতে পারে এবং বিকল্পগুলি আরও প্রায়শই ব্যবহার করা উচিত তবে এটির এখনও এর সুবিধাগুলি রয়েছে।


29

উত্তরাধিকার এবং পলিমারফিজম ব্যাপকভাবে ব্যবহৃত হয় কারণ তারা নির্দিষ্ট ধরণের প্রোগ্রামিং সমস্যার জন্য কাজ করে

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

তুমি বলেছিলে:

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

আমি বলি:

না, তা নয়

আপনি যা বর্ণনা করেছেন তা বহুকর্ম নয়, উত্তরাধিকার। এতে অবাক হওয়ার কিছু নেই যে আপনার ওওপি সমস্যা রয়েছে! ;-)

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

সুতরাং ... হাঁস টাইপিং হয় (অথবা বরং সম্ভব) বহুরূপতা

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

এটি একটি স্ট্যাটিক বনাম গতিশীল জিনিস, যা লিস্পের মতো পুরানো আলোচনা এবং ওওপি-তে সীমাবদ্ধ নয়।


2
"হাঁসের টাইপিং হল বহুবাদিতা" এর জন্য +1 । পলিমারফিজম এবং উত্তরাধিকার অবচেতনভাবে অনেক দিন ধরে একসাথে বেঁধে রাখা হয়েছে এবং কঠোর স্ট্যাটিক টাইপিংই কেবল তাদের আসল কারণ ছিল।
সিএওও

+1 টি। আমি মনে করি স্থির বনাম গতিশীল পার্থক্যটি পার্শ্ব নোটের চেয়ে বেশি হওয়া উচিত - এটি হাঁসের টাইপিং এবং জাভা-স্টাইলের বহুবৈচিত্র্যের মধ্যে পার্থক্যের মূল স্থানে।
সাভা বি

8

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

কেন?

উত্তরাধিকার (হাঁসের টাইপিংয়ের সাথে বা ছাড়াই) একটি সাধারণ বৈশিষ্ট্য পুনরায় ব্যবহারের আশ্বাস দেয়। যদি এটি সাধারণ হয়, আপনি নিশ্চিত করতে পারেন যে এটি সাবক্লাসে ধারাবাহিকভাবে পুনরায় ব্যবহার করা হয়েছে।

এখানেই শেষ. কোনও "অপ্রয়োজনীয় বাধা" নেই। এটি সরলকরণ।

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

এটি কোনও বাধা নয়। এটি সরলকরণ।


7

উত্তরাধিকার অপব্যবহার করা হয়, তবে হাঁসের টাইপিং। উভয়ই সমস্যা সৃষ্টি করতে পারে এবং করতে পারে।

শক্ত টাইপিংয়ের সাহায্যে আপনি সংকলন সময়ে অনেকগুলি "ইউনিট পরীক্ষা" সম্পন্ন করেন। হাঁসের টাইপিংয়ের সাথে আপনাকে প্রায়শই সেগুলি লিখতে হয়।


3
পরীক্ষার বিষয়ে আপনার মন্তব্যটি কেবল গতিশীল হাঁসের টাইপিংয়ের ক্ষেত্রে প্রযোজ্য। সি ++ - স্টাইলের স্ট্যাটিক হাঁসের টাইপিং (টেমপ্লেট সহ) সংকলনের সময় আপনাকে ত্রুটি দেয়। (যদিও মঞ্জুর করা সি ++ টেম্পলেট ত্রুটিগুলি বোঝার পক্ষে বেশ কঠিন, তবে এটি সম্পূর্ণ আলাদা বিষয়))
চ্যানেল 72

2

স্কুলে কিছু শেখার সম্পর্কে ভাল জিনিস তুমি কি তাদের শিখতে। খুব ভাল কিছু নয় আপনি এগুলিকে কিছুটা কৌতুকপূর্ণভাবে গ্রহণ করতে পারেন, কখন সেগুলি কার্যকর এবং কখন না সেগুলি না বুঝে।

তারপরে, আপনি যদি কৌতুকপূর্ণভাবে এটি শিখেন তবে আপনি পরে অন্য দিকে যেমন কুকুর্তিকভাবে "বিদ্রোহী" হতে পারেন। এটিও ভাল নয়।

যেমন কোন ধারণা মত, একটি ব্যবহারিক পদ্ধতির গ্রহণ করা ভাল। তারা কোথায় ফিট এবং কোথায় তারা খায় না তার একটি ধারণা তৈরি করুন। এবং ওভারসোল্ড করা সমস্ত উপায়ে উপেক্ষা করুন।


2

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

এখন, কেউ যুক্তি দিতে পারে যে সংকীর্ণতা খারাপ, কিন্তু অন্যদিকে এটি অন্যথায় খুব জটিল একটি বিষয়ের জন্য শৃঙ্খলা, নিয়ন্ত্রণ এবং পরিচিতি নিয়ে আসে।

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


1

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

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

হাঁসের টাইপিং একটি ঝরঝরে বৈশিষ্ট্য, তবে আপনি যদি এটির অপব্যবহার করতে চলেছেন তবে সংকলক আপনাকে সতর্ক করবে না। রান-টাইমে আপনি যদি ব্যতিক্রমগুলি পরিচালনা করতে না চান তবে আপনাকে নিজেকে নিশ্চিত করতে হবে যে আপনি প্রতিবারই সঠিক ফলাফল পাচ্ছেন। স্থির উত্তরাধিকারের শ্রেণিবিন্যাস সংজ্ঞায়িত করা সহজ হতে পারে।

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

আপনি যদি স্ট্যাটিক টাইপিং এবং সংজ্ঞায়িত উত্তরাধিকারের স্তরক্রমের চেয়ে গতিশীল টাইপিং এবং হাঁসের টাইপিং পছন্দ করেন তবে তা ঠিক। যাইহোক, জাভা উপায় এর সুবিধা আছে।


0

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

আপনি উত্তরাধিকার নিয়ে যা যা করেন তার বেশিরভাগ কাজ করতে সাধারণত ক্লোজার ব্যবহার করতে পারেন , এটি কুৎসিতও হতে পারে।

মূলত এটি কাজের-জন্য-উপযুক্ত পরিস্থিতি: আপনার কাছে এমন একটি মডেল তৈরি হয় যখন প্রথাগত ওওপি সত্যই কার্যকরভাবে কাজ করতে পারে এবং যখন আপনি না করেন ক্লোজারগুলি সত্যিই খুব ভাল কাজ করতে পারে।


-1

সত্যটি মাঝখানে কোথাও রয়েছে। আমি পছন্দ করি যে সি # 4.0 কীভাবে স্থিতিযুক্ত ভাষা টাইপ করা হচ্ছে "ডাইনামিক" কীওয়ার্ড দ্বারা "হাঁস টাইপিং" সমর্থন করে।


-1

উত্তরাধিকার, এমনকি যখন এফপি দৃষ্টিকোণ থেকে যুক্তি একটি দুর্দান্ত ধারণা; এটি কেবল প্রচুর সময় সাশ্রয় করে না, এটি আপনার প্রোগ্রামে কিছু নির্দিষ্ট অবজেক্টের মধ্যে সম্পর্ককে অর্থ দেয়।

public class Animal {
    public virtual string Sound () {
        return "Some Sound";
    }
}

public class Dog : Animal {
    public override string Sound () {
        return "Woof";
    }
}

public class Cat : Animal {
    public override string Sound () {
        return "Mew";
    }
}

public class GoldenRetriever : Dog {

}

এখানে বর্গের উত্তরাধিকারের জন্য বিনামূল্যে ধন্যবাদ হিসাবে GoldenRetrieverসমান আছে।SoundDog

পার্থক্যটি দেখার জন্য আমি হাসাকেলের আমার স্তরের সাথে একই উদাহরণ লিখব

data Animal = Animal | Dog | Cat | GoldenRetriever

sound :: Animal -> String
sound Animal = "Some Sound"
sound Dog = "Woof"
sound Cat = "Mew"
sound GoldenRetriever = "Woof"

এখানে আপনি নির্দিষ্ট করতে না থাকার অব্যাহতি না soundজন্য GoldenRetriever। সাধারণভাবে সহজ জিনিসটি হ'ল

sound GoldenRetriever = sound Dog

তবে আপনার যদি 20 টি ফাংশন থাকে তবে কেবল চিত্র! যদি কোনও হাস্কেল বিশেষজ্ঞ থাকে তবে দয়া করে আমাদের একটি সহজ উপায় দেখান।

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


5
আমি শপথ করছি, Animalএটি ওওপির অ্যান্টি-টিউটোরিয়াল।
তেলস্তিন

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

এটি পূর্বের 10 টির উত্তরের চেয়ে বেশি কিছু যোগ করবে বলে মনে হচ্ছে না
11:34

@ গ্যাनेट "পদার্থ" ইতিমধ্যে বাইরে থাকা অবস্থায়, বিষয়টিতে নতুন একজন ব্যক্তি বুঝতে খুব সহজ উদাহরণ খুঁজে পেতে পারেন।
ক্রিশ্চিয়ান গার্সিয়া

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