একটি মোড়ক ক্লাস কি?


উত্তর:


171

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


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

3
এই পোস্টে, প্রস্তাব দেওয়া হয়েছে যে একটি মোড়ক একটি দেরী-বাউন্ড শ্রেণীর জন্য কঠোরভাবে সংজ্ঞায়িত প্রক্সি তৈরির জন্য কার্যকর হতে পারে: আমি কি দেরীতে বাঁধাই ব্যবহার করতে পারি ... ? উপরে বর্ণিত পল সোনিয়ারের বাইরে মোড়কের জন্য এটি কি বৈধ অতিরিক্ত ব্যবহার?
টড

1
@ নীরজনসিংহ র্যাপার ইতিমধ্যে বিদ্যমান দুটি ইন্টারফেস পুনরায় ব্যবহার করেছেন এবং অন্যটির সাথে একটির কাজ করেন। অন্যদিকে, মুখোমুখি একটি নতুন ইন্টারফেস তৈরি করে।
আলিরেজা

67

এটির মতো যা শোনাচ্ছে: একটি শ্রেণি যা অন্য শ্রেণীর বা এপিআইয়ের কার্যকারিতা একটি "সরল বা নিছক আলাদা" এপিআইতে "মোড়ানো"।

দেখুন: অ্যাডাপ্টার প্যাটার্ন , মুখোমুখি প্যাটার্ন


হ্যাঁ! প্রায়শই মুখোমুখি প্যাটার্ন জন্য সমার্থক। অনেক কোড ডকুমেন্টেশনে আমি স্পষ্টভাবে মুখোমুখি পদ্ধতি দেখতে পাই, "র্যাপার থেকে এক্সএক্স :: ইয়াই পদ্ধতি" বা "রেপার থেকে এক্সএক্স :: ইয়ে পদ্ধতিতে ব্যতিক্রম হ্যান্ডলিং" এর মতো একটি ছোট্ট অ্যাডিকশন described
পিটার ক্রাউস

41

মোড়কের ক্লাসগুলি আদিম ধরণের জিনিসগুলি হিসাবে ব্যবহার করার একটি উপায় সরবরাহ করে। প্রতিটি আদিম জন্য, আমাদের একটি র‍্যাপার ক্লাস যেমন,

int Integer
byte Byte 

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

নিম্নলিখিত উদাহরণটি দ্বারা ধারণাটি ভালভাবে বোঝা যায়

double d = 135.0 d;
Double doubleWrapper = new Double(d);

int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();

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

double d = 135.0;
int integerValue = (int) d ;

যদিও দ্বিগুণ মান স্পষ্টভাবে পূর্ণসংখ্যার মানতে রূপান্তরিত হয় একে ডাউনকাস্টিং হিসাবেও ডাকা হয়।


1
আপনার উত্তরটি বোঝায় যে মোড়কের ক্লাসগুলি কেবল আদিম বস্তুর জন্য।
গিলিয়াম এফ।

17

একটি মোড়কের ক্লাসে অন্য ক্লাসটি আবশ্যকভাবে প্রয়োজন হয় না। এটি একটি API ক্লাস মোড়ানোর কার্যকারিতা হতে পারে যেমন একটি dll ফাইল।

উদাহরণস্বরূপ, এটি একটি ডেল র‌্যাপার ক্লাস তৈরি করা খুব কার্যকর হতে পারে যা সমস্ত ডিএল ইনিশিয়ালাইজেশন এবং ক্লিনআপের যত্ন নেয় এবং ক্লাসের পদ্ধতিগুলি তৈরি করে যা ফাংশন পয়েন্টারগুলিকে উদাহরণস্বরূপ তৈরি করে eg GetProcAddress()

চিয়ার্স!


8

একটি মোড়কের ক্লাস এমন একটি শ্রেণি যা তার নামের মতো অন্য কোনও কিছুকে "মোড়ানো" করে।

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


2
অ্যাডাপ্টারের প্যাটার্নটি সম্পর্কে আমার বোঝার দ্বারা, এটি একটি মোড়কের থেকে আলাদা: যদি এক্স ওয়াইকে আবৃত করে রাখে, তবে এক্সটি ওয়াইয়ের অবস্থাটি আবদ্ধ করতে হবে , তবে এটির পরিচয়টি নয় । এক্স এর দুটি উদাহরণ দেওয়া হয়েছে, যার দুটিই একটি ওয়াইকে আবৃত করে, এমন কোনও উপায় থাকা উচিত নয় যার মাধ্যমে কেউ প্রমাণ করতে পারে যে উভয়ের দুটি উদাহরণই ওয়াইয়ের একই উদাহরণটিকে আবৃত করে contrast অভিযোজিত বস্তুটির পরিবর্তনটি অ্যাডাপ্টারের নিজেই পরিবর্তন হিসাবে বিবেচিত হবে না।
সুপারক্যাট


7

এটি উল্লেখ করাও মূল্যবান হতে পারে যে কিছু পরিবেশে, র্যাপার ক্লাসগুলি যা করতে পারে তার অনেকগুলি দিক দ্বারা প্রতিস্থাপন করা হচ্ছে।

সম্পাদনা করুন:

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

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


7

মোড়ক ক্লাস এমন একটি শ্রেণি যা অন্য শ্রেণিকে আবৃত করে এবং ক্লায়েন্ট এবং আসল ক্লাসের মোড়কের বিমূর্ততা সরবরাহ করে।


5

একটি মোড়কের ক্লাস সাধারণত একটি শ্রেণি যা একটি ব্যক্তিগত সম্পত্তি হিসাবে একটি বিষয় আছে has মোড়ক প্রাইভেট অবজেক্টের এপিআই প্রয়োগ করে এবং তাই এটি আর্গুমেন্ট হিসাবে পাস করা যেতে পারে যেখানে ব্যক্তিগত অবজেক্টটি object

বলুন যে আপনার কাছে একটি সংগ্রহ রয়েছে এবং আপনি যখন কোনও বস্তু এতে যুক্ত করা হয় তখন আপনি কোনও প্রকারের অনুবাদ ব্যবহার করতে চান - আপনি একটি র‌্যাপার ক্লাস লেখেন যাতে সংগ্রহের সমস্ত পদ্ধতি রয়েছে। যখন অ্যাড () বলা হয়, মোড়কগুলি ব্যক্তিগত সংগ্রহগুলিতে কেবল তাদের পাস করার পরিবর্তে তর্কগুলি অনুবাদ করে।

সংগ্রহটি যে কোনও স্থানে ব্যবহার করা যেতে পারে, এবং ব্যক্তিগত অবজেক্টটিতে এখনও এটি ব্যবহার করে এবং পড়তে পারা যায়।


1
সম্মত হোন, মোড়কের বিষয়ে আমার ব্যক্তিগত দৃষ্টিভঙ্গি হ'ল তারা প্রকৃত প্রকারের মতো দেখায় এবং অনুভব করে এবং একই ইন্টারফেসটি প্রয়োগ করতে পারে, অবশ্যই আবৃত দৃষ্টান্তের অবস্থানটি ধরে রাখে। সদস্যদের "ইন্টারসেপ্ট" কল করার উপায় হিসাবে এগুলি বিদ্যমান।
লুক পুপলেট

3

একটি মোড়কের ক্লাস এমন একটি ক্লাস যা ক্লায়েন্ট এবং আসল ক্লাসের মোড়কের মধ্যবর্তী দিক এবং বিমূর্ততার একটি স্তর যুক্ত করতে অন্য শ্রেণিকে মোড়ানোর জন্য ব্যবহৃত হয়।


3

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


3

জাভা প্রোগ্রামিং প্রতিটি আদিম তথ্য প্রকারের জন্য মোড়কের ক্লাস সরবরাহ করে, একটি আদিম তথ্য প্রকারকে র‌্যাপার শ্রেণির সাথে সম্পর্কিত করে রূপান্তর করতে।


1

মোড়কের ক্লাস সুস্থ করা কোনও সহজ কাজ নয়। কিছু অন্যান্য দ্বারা এটি কীভাবে তৈরি করা হয়েছে তা বোঝার পক্ষে একটি সহজ কাজও নয়। কারণ এটি ধারণা, কোড নয়। আপনি যখন ধারণাটি বুঝতে পারবেন তখনই আপনি রাপারটি বুঝতে পারবেন।


0

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

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

আমি আমার ব্লগে মোড়কের ক্লাস সম্পর্কিত একটি বিস্তারিত নিবন্ধ লিখেছি যা গভীরভাবে র‌্যাপারের ধরণের ধারণাটি ব্যাখ্যা করে - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-example/ (প্রকাশ - এই ব্লগটি আমার মালিকানাধীন)


0

আমি বর্তমানে আমার প্রকল্পের জন্য একটি র‍্যাপার ক্লাস ব্যবহার করেছি এবং আমি প্রাপ্ত মূল বেনিফিটগুলি (বিষয়টির ব্যাখ্যাকে প্রশস্ত করতে কেবল একটি একক উপকার):

ব্যতিক্রম হ্যান্ডলিং: আমার প্রধান বর্গটি, যে অন্য শ্রেণীর মোড়ক রয়েছে, এমন পদ্ধতি রয়েছে যা যদি ঘটে থাকে তবে ব্যতিক্রম ছুঁড়ে মারছে, তাই আমি একটি মোড়কের ক্লাস তৈরি করেছি যা ব্যতিক্রমগুলি পরিচালনা করে এবং ততক্ষনে তাদের লগ করে। সুতরাং, আমার মূল সুযোগে, ব্যতিক্রম হ্যান্ডলিং নেই। আমি কেবল একটি পদ্ধতি কল করি এবং কিছু করি।

সহজ ব্যবহার: আমি সহজেই বস্তুটি শুরু করতে পারি। সাধারণত ধাপের ধাপটি প্রচুর পদক্ষেপে নির্মিত হয়।

কোড পঠনযোগ্যতা: অন্য প্রোগ্রামার যখন আমার কোড খুলবে, কোডটি খুব পরিষ্কার এবং ম্যানিপুলেট করা সহজ মনে হবে।

বিবরণ গোপন করা: আপনি যদি এমন কোনও ক্লাস তৈরি করে যা অন্য কোনও প্রোগ্রামার ব্যবহার করছে, তবে আপনি "ত্রুটি পরিচালনা, ব্যতিক্রম হ্যান্ডলিং, লগিং বার্তাগুলি এবং ইত্যাদি ..." এর মতো বিশদটি গুটিয়ে রাখতে পারেন যাতে প্রোগ্রামারটিকে পরিচালনা করতে না হয় বিশৃঙ্খলা, কেবল সহজভাবে পদ্ধতিগুলি ব্যবহার করে।


0

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

int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();

এটি মোড়কের চেয়ে বক্সিং আদিম হিসাবে পরিচিত।
সাইবার্গ

-8

একটি মোড়ক ক্লাস যা বিভিন্ন প্ল্যাটফর্মের মধ্যে দুটি পৃথক অ্যাপ্লিকেশন মধ্যে যোগাযোগ করতে ব্যবহৃত হয়


আমি মনে করি আপনি এটি কেবলমাত্র একটি মামলার চেয়ে অনেক বেশি ব্যবহার করতে পারবেন
ফ্লেক্সো

1
প্রকৃতপক্ষে, এটি শুধুমাত্র একটি ছোট ব্যবহারের কেস।
praseodym

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