Java

Enumeration

Enum কি?

Enum, জাভার মধ্যে একটি কিওয়ার্ড, একটি ফিচার।

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

পরবর্তীতে নতুন ভেরিয়েবল ডিক্লেয়ার করতে গেলে তা অবশ্যই এর পূর্বনির্ধারিত ভেরিয়েবলের অন্তর্ভূক্ত হতে হবে।

উধারণঃ Compass direction(values of north,south,east and west) এবং সপ্তাহের দিন গুলি।

জাভা পোগ্রামিংয়ে ইনাম টাইপ enum কিওয়ার্ড দ্বারা প্রকাশ করা হয়।

সপ্তাহের দিন গুলির কোডঃ

Public enum day {Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday

}

সুবিধাঃ

প্রথমদিকে ইনাম জাভা ল্যাঙুয়েজে ছিলো না। এটি সি এবং সি++ এ ছিল, তবে এর ব্যাবহারের পরিধি ছিল অত্যন্ত কম।

জাভাতে এটি খুব উন্নত এবং বহুমুখী( এক সাথে অনেক কিছুতে সক্ষম ) অন্যসব পোগ্রামিং ল্যাঙুয়েজ থেকে। এটি ক্লাসের মাঝেও ডিক্লেয়ার করা যায়। ইনাম ক্লাসের মত মেথোড এবং এর অন্যান্য কিছু ফিল্ড নিয়ে কাজ করতে পারে। এছাড়াও যখন একটি ইনাম তৈরি করা হয় ইন্টারাপ্রেটার বা জাভা অটো ভাবে এতে বিশেষ কিছু মেথোড যুক্ত করে।

এছাড়াও অন্য কিছু সুবিধা হলঃ

১) টাইপ সেইফঃ পূর্ব নির্ধারিত ইনাম ভেলু বাদে নতুন কোন ভেলু ভেরিয়েবলে এসাইন করা যাবেনা।

২) এটির নিজস্ব namespace আছে।

৩) Switch স্টেইটমেন্টের মাঝেও এর ব্যাবহার সম্ভব

৪) কোড না ভেঙেই নতুন ভেরিয়েবব বা কন্সটেন্ট যুক্ত করা যায়।

ইনামের কোডঃ

publicenum enum_test {Shaon(“INTELLIGENT AND SMART AND PEACEFUL MIND AND KIND AND SOFT KINDED PERSON”, “22”),

Nupur(“BIDESHINI”, “18”),

Shoshi(“STILL I REMEMBER THAT FACE”, “19”),

Nishi(“Talkative”, “18”),

Sabrin(“NICE AND SHOWING ISLAMIC BUT STILL HAVE DOUBT”, “19”),

Tushi(“GOOD FRIEND BUT IT WILL BEMORE GOOD AND THIS RELATION WILL GO FARTHER, I HAVE FAITH”, “20”),

Sharmin(“CUETIAN FRIEND, MIXED WITH GOOD AND TALKATIVE”, “20”);

/* উপরে বর্ণিত আশিক, নুপুর…… এই নামগুলো হচ্ছে enum type কন্সটেন্ট ভেরিয়েবল বা অবজেক্ট।

এগুলো প্রকাশের সময় কমা দ্বারা পর পর লিখতে হয় এবং শেষে সেমিকলন দিতে হয়। */

private final String about;

private final String year;

/* এখানে about হচ্ছে প্রথম স্ট্রিংয়ের জন্যে, year হচ্ছে ২য় টির জন্যে।

যেহেতু তারা কন্সটেন্ট তাই এখানে final কিওয়ার্ড ব্যবহৃত হয়েছে */

enum_test(String a, String y) {

about = a;

year = y;

}

/* এটি একটি কন্সট্রাক্টর যেটি এই অবজেক্টের বা ভেরিয়েবল গুলোর ভেলু বা স্ট্রিং আমাদের ডিক্লেয়ার করা about এবং year এ এসাইন করবে */

public String get_about() {

return about;

}

public String get_year() {

return year;

}

/* রিটার্ন টাইপ মেথোড যেগুলো এই ভেরিয়েবলের ভেলু রিটার্ন করবে */

}

public class enumType {

public static void main(String[] args) {

for(enum_test name : enum_test.values())

System.out.println(“Name: ” + name + “\tAbout: ” + name.get_about() + “\tAge: ” + name.get_year());

}

}

/* এখানে আবারো enhanced loop এর সাথে দেখা হল। আমরা আগেই পড়েছি এটি কিভাবে কাজ করে। আপাতত বুঝতে বেশি কষ্ট হবার কথা নয়। ( সাহায্যের জন্যে পূর্বের লেকচার দেখতে পারো )

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

যেটি এনামের নাম ডট ভেলুস (enum_type.values())লিখে প্রকাশ করা হয়।

Name এখানে অবজেক্ট বা ভেরিয়েবল যেটি ইনামের নেইম গুলো দেখাবে আউটপুটে।

সাধারণ নিয়মেই about এবং year পেতে গেলে অবজেক্টের মাধ্যমে তাদের রিটার্ন টাইপকে এক্সেস করতে হবে। লুপের পরের অংশে তাই করা হয়েছে

আউটপুটঃ

ইনাম

ইনাম রেইঞ্জঃ

ইনামের ডিক্লেয়ার করা অবজেক্ট গুলো একটি এরের সেট হিসেবে থাকে। এরের মত এখানেও একটি নির্দিষ্ট স্থান থেকে আরেকটি নির্দিষ্ট স্থান পর্যন্ত কন্সটেন্ট নিয়ে কাজ করা যায়। সেই জন্যে এখানে মেইন ফাংশনের উপরে এটিকে import java.util.EnumSet ইম্পোর্ট করতে হবে, হেডার ফাইল যেটিকে বলি।

import java.util.EnumSet; /* এখানে এটি বিল্ড ইন রেইঞ্জ মেথোড এক্সেস করার জন্য এই ক্লাসকে ইম্পোর্ট করা হল */public class enumType {

public static void main(String[] args) {

for(enum_test name : EnumSet.range(enum_test.Nupur, enum_test.Sabrin))

System.out.println(“Name: ” + name + “\tAbout: ” + name.get_about() + “\tAge: ” + name.get_year());

}

}

/* লুপের কোলনের পরে EnumSet.range(arg1, arg2) দ্বারা মূলত ইনামের কোন্সটেন্টের একটি নির্দিষ্ট এরিয়া নিয়ে কাজ করা হয়। এটি একটি বিল্ড ইন মেথোড।

এখানে রেইঞ্জ নামক বিল্ড ইন মেথোডে ইনাম নেইমের সাথে অবজেক্ট কে ডট দ্বারা এক্সেস করা হয়েছে। আউটপুট দেখলে ব্যাপারটি পুরো পরিষ্কার হবে।

এখানে নুপুর থেকে সাবরিনা পর্যন্ত ডাটা বা স্ট্রিং গুলো আউট পুটে দেখানো হয়েছে।

*/

আউটপুটঃ

enum_range

Leave a Reply

Your email address will not be published.

three × 3 =