আগের ব্লগে, আপনি সম্পর্কে শিখেছি জাভাতে এখন এই ব্লগে, আমরা আরও একটি গুরুত্বপূর্ণ স্তম্ভটি বুঝতে পারি অর্থ্যাৎ জাভা অ্যাবস্ট্রাকশন যার মূল কার্যকারিতা হ'ল অভ্যন্তরীণ বাস্তবায়নের বিশদটি গোপন করা।
আমি এই নিবন্ধে উল্লিখিত বিষয়গুলি কভার করব:
অ্যানাকোন্ডায় পাইথন কীভাবে ব্যবহার করবেন
- ওওপিতে বিমূর্ততা
- জাভা বিমূর্ততা কী?
- বিমূর্ত শ্রেণি
- ইন্টারফেস
- জাভা বিমূর্তির বাস্তব জীবনের উদাহরণ
- অ্যাবস্ট্রাকশন বনাম এনক্যাপসুলেশন
আপনি এই রেকর্ডিং মাধ্যমে যেতে পারেন যেখানে আপনি উদাহরণ সহ বিশদভাবে বিষয়গুলি বুঝতে পারবেন।
ওওপিতে বিমূর্ততা
যখন আমরা সাধারণত বিমূর্তনের কথা বলি তখন সফটওয়্যার ল্যাঙ্গুয়েজ অ্যাবস্ট্রাকশনের উদাহরণ। আসুন একটি উদাহরণ নেওয়া যাক এবং হিসাবে একটি বিবৃতি লিখুন-
x = y + z
উপরের বিবৃতিতে, আমরা দুটি ভেরিয়েবল যুক্ত করছি যা দুটি পৃথক স্থানে সংরক্ষণ করা হয় এবং তারপরে ফলাফলটি একটি নতুন স্থানে সংরক্ষণ করা হয়। তো, এরপরে কী হবে? আপনি জানেন যে, জড়িত আছে রেজিস্টার, নির্দেশ সেট, প্রোগ্রাম কাউন্টার, স্টোরেজ ইউনিট, ইত্যাদি। যখন আমরা জাভাতে বিমূর্তি উল্লেখ করি, আমরা ভিতরে বিমূর্তনের কথা বলছি এবং কিভাবে এটি অর্জন করা হয়। কোনও ক্লাসের কল্পনা হওয়ার সাথে সাথেই ওওপিতে বিমূর্তির ধারণাটি ঠিক তখনই শুরু হয়। বিমূর্ততা সফ্টওয়্যার এবং ওওপি সর্বত্র প্রয়োগ করা হয়।
জাভা বিমূর্ততা কী?
বিমূর্ততা ইভেন্টের চেয়ে আইডিয়াগুলির সাথে আচরণ করার গুণ ছাড়া কিছুই নয়। এটি মূলত অভ্যন্তরীণ বিবরণগুলি গোপন করা এবং ব্যবহারকারীর কাছে প্রয়োজনীয় জিনিসগুলি দেখানোর সাথে কাজ করে।
আপনি যদি উপরের জিআইএফটির দিকে নজর রাখেন, আপনি যখন কল পাবেন তখন দেখতে পাবেন, আমরা এটি বাছাই করার জন্য বা কেবল এটি প্রত্যাখ্যান করার বিকল্প পাই। তবে বাস্তবে, প্রচুর কোড রয়েছে যা পটভূমিতে চলে। সুতরাং এখানে, আপনি কীভাবে কল উত্পন্ন হয় তার অভ্যন্তরীণ প্রক্রিয়াজাতকরণ জানেন না, এটি বিমূর্ততার সৌন্দর্য। আপনি দুটি উপায়ে বিমূর্ততা অর্জন করতে পারেন:
ক) বিমূর্ত শ্রেণি
খ) ইন্টারফেস
আসুন এই ধারণাগুলি আরও বিশদভাবে বুঝতে পারি understand
বিমূর্ত শ্রেণি
বিমূর্ত শ্রেণিতে ‘বিমূর্ত’ কীওয়ার্ড রয়েছে। তবে এর অর্থ কী? আপনি যদি ক্লাসটিকে বিমূর্ত করে তোলে তবে তা ইনস্ট্যান্ট করা যাবে না, অর্থাৎ আপনি কোনও বিমূর্ত শ্রেণীর কোনও অবজেক্ট তৈরি করতে পারবেন না। এছাড়াও, একটি বিমূর্ত শ্রেণিতে বিমূর্ত পাশাপাশি কংক্রিট পদ্ধতি থাকতে পারে।
বিঃদ্রঃ: আপনি একটি বিমূর্ত শ্রেণি ব্যবহার করে 0-100% বিমূর্ততা অর্জন করতে পারেন।
একটি বিমূর্ত শ্রেণি ব্যবহার করতে, আপনি এটি বেস বর্গ থেকে উত্তরাধিকারী হতে হবে। এখানে আপনাকে বিমূর্ত পদ্ধতিগুলির জন্য বাস্তবায়ন সরবরাহ করতে হবে, অন্যথায় এটি একটি বিমূর্ত শ্রেণিতে পরিণত হবে।
আসুন একটি বিমূর্ত শ্রেণীর বাক্য গঠনটি দেখুন:
বিমূর্ত শ্রেণীর ক্রীড়া {// বিমূর্ত শ্রেণীর খেলাধারা বিমূর্ত শূন্য জাম্প () // বিমূর্ত পদ্ধতি}
ইন্টারফেস
জাভাতে একটি ইন্টারফেস হ'ল বিমূর্ত পদ্ধতি এবং স্ট্যাটিক ধ্রুবকগুলির সংগ্রহ। আপনি যেমন কোনও ইন্টারফেসে জানতে পারেন, প্রতিটি পদ্ধতিটি সর্বজনীন এবং বিমূর্ত তবে এটিতে কোনও নির্মাণকারী নেই। বিমূর্তনের পাশাপাশি, ইন্টারফেস জাভাতে একাধিক উত্তরাধিকার অর্জনে সহায়তা করে।
বিঃদ্রঃ: আপনি ইন্টারফেস ব্যবহার করে 100% বিমূর্ততা অর্জন করতে পারেন।
মূলত, ইন্টারফেস হ'ল খালি দেহগুলি সম্পর্কিত একধরণের পদ্ধতি। আসুন এর সম্পর্কিত পদ্ধতিগুলির সাথে শেপ ’ইন্টারফেসের উদাহরণ নিয়ে ইন্টারফেসগুলি বুঝতে পারি।
পাবলিক ইন্টারফেস আকার {পাবলিক শূন্য ড্র () পাবলিক ডাবল getArea ()}
এই পদ্ধতিগুলি প্রতিটি ‘আকারে’ উপস্থিত থাকতে হবে, তাই না? তবে তাদের কাজ আলাদা হতে চলেছে।
ধরা যাক আপনি একটি আকার আঁকতে চান, বৃত্ত, বর্গক্ষেত্র, আয়তক্ষেত্র ইত্যাদি বলুন say আপনি ইতিমধ্যে জানেন যে প্রতিটি আকারের নিজস্ব মাত্রা ব্যাসার্ধ, উচ্চতা এবং প্রস্থের মতো থাকে। বলুন আমি একটি বৃত্ত আঁকতে এবং এর ক্ষেত্রফল গণনা করতে চাই। একইটি বিবেচনা করে, আমি উপরের কোডে দুটি পদ্ধতি তৈরি করেছি অর্থাৎ অঙ্কন () এবং getArea ()। এখন, এই পদ্ধতিগুলি ব্যবহার করে, আমি কোনও আকৃতি আঁকতে পারি এবং এর ইন্টারফেসটি প্রয়োগ করে অঞ্চলটি গণনা করতে পারি।
আপনি কীভাবে এই ইন্টারফেসটি বাস্তবায়ন করতে পারেন সে সম্পর্কে এখন কার্যকারিতার দিকে নজর দেওয়া যাক।
এই ইন্টারফেসটি বাস্তবায়নের জন্য, আপনার শ্রেণীর নামটি শেপের যে কোনও একটিতে পরিবর্তিত হবে, যাক 'বৃত্ত' বলুন। সুতরাং, শ্রেণি ইন্টারফেসটি বাস্তবায়নের জন্য, আমি 'বাস্তবায়ন' কীওয়ার্ডটি ব্যবহার করব:
পাবলিক ক্লাস সার্কেল শেপ-প্রাইভেট ডাবল রেডিয়াস পাবলিক সার্কেল (ডাবল আর) প্রয়োগ করে {this.radius = r} শূন্য অঙ্কন ()। System.out.println ('অঙ্কন বৃত্ত')} পাবলিক ডাবল getArea () {রিটার্ন ম্যাথ.পিআই * this.radius * this.radius} পাবলিক ডাবল getRadius () {ফিরিয়ে দিন এই.রাডিয়াস}} পাবলিক ক্লাস টেস্ট v পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আরগস []) pe শেপ সি = নতুন সার্কেল (8) সি.ড্রেউ () সিস্টেম। out.println ('অঞ্চল =' + c.getArea ())}
উপরের উদাহরণে, আমি একটি বৃত্তের বিভিন্ন পদ্ধতি এবং গণনা করা ক্ষেত্রের কার্যকারিতা নির্দিষ্ট করে দিয়েছি। এখানে, একটি ইন্টারফেস বাস্তবায়নের ক্ষেত্রে, এটি কোনও শ্রেণিকে এটি যে আচরণ সরবরাহ করে তা সম্পর্কে আরও ফর্মাল হতে দেয়। আপনি অন্য শ্রেণি তৈরি করতে পারেন, বলুন ‘আয়তক্ষেত্র’ শ্রেণি যা বিভিন্ন কার্যকারিতা সহ একই ইন্টারফেস ‘আকৃতি’ এর উত্তরাধিকারী হতে পারে।
জাভা মধ্যে বাইনারি অনুসন্ধান প্রোগ্রাম
জাভাতে বিমূর্ততার বাস্তব-সময়ের উদাহরণ
ধরুন আমাদের ইন্টারফেস হিসাবে স্পোর্ট রয়েছে। এখানে বাস্তবায়ন 'ব্যাডমিন্টন' এবং 'ফুটবল' নামে ক্লাস দ্বারা সরবরাহ করা হবে। বাস্তব দৃশ্যে, শেষ ব্যবহারকারী বাস্তবায়ন ক্লাস সম্পর্কে সচেতন হবে না। অতএব, কারখানা পদ্ধতি দ্বারা বাস্তবায়ন শ্রেণীর একটি বিষয় সরবরাহ করা যেতে পারে। কারখানার পদ্ধতিটি কিছু মানদণ্ডের উপর ভিত্তি করে বাস্তবায়ন শ্রেণীর একটি অবজেক্ট তৈরি করতে ব্যবহার করা যেতে পারে।
আসুন একই বাস্তবায়ন করি এবং স্পোর্ট.জভা নামে একটি ইন্টারফেস তৈরি করি।
পাবলিক ইন্টারফেস স্পোর্ট {অকার্যকর প্লে ()} // এখন, আমরা 'ব্যাডমিন্টন' পাবলিক ক্লাস ব্যাডমিন্টন স্পোর্ট প্রয়োগ করে create @ ওভাররাইড পাবলিক শূন্য প্লে ()। System.out.println ('প্লে ব্যাডমিন্টন') class} // এর পরে আসুন আমরা আমাদের শেষ শ্রেণীর 'ফুটবল' পাবলিক ক্লাসটি তৈরি করি ফুটবল খেলাধুলা করে {@ ওভাররাইড পাবলিক বায়োড প্লে ()। System.out.println ('ফুটবল খেলছে')}
শেষ পদক্ষেপটি হল 'স্পোর্টআইন্টারফেস' নামে একটি প্রধান শ্রেণি তৈরি করা।
পাবলিক স্পোর্টআইন্টারফেস {পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং আরগস []) {// আপনার কোড এখানে}}
আপনি যখন উপরের প্রোগ্রামটি চালাবেন, আউটপুট নীচের মত প্রদর্শিত হবে:
ব্যাডমিন্টন খেলছে ------------------- ফুটবল খেলছে
আমি আশা করি আপনি ছেলেরা ইন্টারফেসের সাথে এবং আপনি কীভাবে এটি ব্যবহার করে বিমূর্ততা অর্জন করতে পারবেন তা পরিষ্কার are এখন, বিমূর্তি এবং এনক্যাপসুলেশন তুলনা করে এই নিবন্ধটি শেষ করা যাক।
অ্যাবস্ট্রাকশন বনাম এনক্যাপসুলেশন
বিমূর্ততা | এনক্যাপসুলেশন |
নকশা স্তরে সমস্যা সমাধান করে | বাস্তবায়ন স্তরে সমস্যার সমাধান করে |
অযাচিত তথ্য গোপন করার জন্য এবং প্রাসঙ্গিক ফলাফল দেওয়ার জন্য ব্যবহৃত হয় | এনক্যাপসুলেশন মানে বহিরাগতের বিশ্ব থেকে ডেটা রক্ষার জন্য কোড এবং ডেটা একক ইউনিটে লুকিয়ে রাখা |
বাইরের লেআউট - নকশার ক্ষেত্রে ব্যবহৃত হয় | অভ্যন্তরীণ বিন্যাস - প্রয়োগের ক্ষেত্রে ব্যবহৃত হয় |
আমি আশা করি আপনি বিমূর্তি এবং এনক্যাপসুলেশন এর মধ্যে পার্থক্য বুঝতে পেরেছেন। এটির সাহায্যে আমরা জাভা বিমূর্ততা ব্লগের অবসান ঘটিয়েছি। আশা করি, আপনি এটি তথ্যপূর্ণ পেয়েছেন এবং এটি আপনার জ্ঞানের মূল্য যুক্ত করতে সহায়তা করেছে। আপনি জাভা সম্পর্কে আরও জানতে ইচ্ছুক হলে, আপনি উল্লেখ করতে পারেন
এখন আপনি 'জাভা বিমূর্ততা কী' বুঝতে পেরেছেন, এটিকে পরীক্ষা করে দেখুন বিশ্বজুড়ে ছড়িয়ে থাকা 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা এডুরেকা দ্বারা। এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি এমন শিক্ষার্থী এবং পেশাদারদের জন্য তৈরি করা হয়েছে যারা জাভা ডেভেলপার হতে চান। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।
আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই 'জাভা বিমূর্ততা' ব্লগের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।