বাংলা ভাষায় জাভা শিখুন
বৃহস্পতিবার, ২৭ মার্চ, ২০১৪
শিখুন জাভা বাংলাতে
সূচিপত্র
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০১] :: বেসিক আলোচনা
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০২] :: জাভা এবং এডিটর ইন্সটল দেয়া
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৩] :: জাভা দিয়ে একটি সিম্পল কোড রান করানো
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৪] :: ভেরিয়েবল,অপারেটর,ডাটা টাইপ
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৫] :: কন্ট্রোল স্টেটমেন্ট-০১
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৬] :: কন্ট্রোল স্টেটমেন্ট-০২
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৭] :: জাভাতে ইনপুট কিভাবে নিবেন
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৮] :: জাভাতে Array এর ব্যবহার
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৯] :: অবজেক্ট এবং ক্লাস নিয়ে সাধারন কিছু কথা
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১০] :: কন্সট্রাক্টর
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১১] :: কন্সট্রাক্টর ওভার রাইডিং
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১২] :: জাভাতে অপারেটর এর ব্যবহার
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৩] :: ইনহেরিটেন্স
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৪] :: গ্রাফিকাল ইউসার ইন্টারফেস এর ছোট একটি প্রোগ্রাম
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৫] :: গ্রাফিকাল ইউসার ইন্টারফেস এর ছোট একটি প্রোগ্রাম-২
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৬] ::পলিমরফিজম
• ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৭] ::শেষ কথা
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০১] :: বেসিক আলোচনা
আসসালামু আলাইকুম,আজকে আমি শুরু করতে যাচ্ছি জাভা টিউটরিয়াল এর সিরিজ। প্রথমেই যেনে নেওয়া যাক জাভা কি জিনিস। বলার অপেহ্মা রাখেনা যে জাভা একটি প্রোগ্রামিং ল্যাঙ্গুএজ। এটি বেশ শক্তিশালী একটি লাঙ্গুয়েজ। পাশাপাশি এটি কর্স প্লাটফর্ম সাপর্টেড। এখানে আমি কর্স প্লাটফর্ম বলতে বুঝাচ্চছি যে জাভার একটা কোড একবার যে কোন প্লাটফর্ম(Windows/Mac/Linux) এ লিখলে ওইটা অন্য যে কোন প্লাটফর্ম এ রান করানো যাবে।
পাশাপাশি এইটা গুই(GUI) ভিত্তিক একটা লাঙ্গুয়েজ । তাই ইউজার ইন্টারফেস এর কাজ ও বেশ সহজে করা যায়। জাভা শুরু করার আগে আপনাদের আগে সি প্রোগ্রামিং সম্পর্কে অবশ্যই ধারণা থাকতে হবে। আর যদি সি++ জেনে থাকেন তাহলে তো কথাই নেই।
এখন প্রশ্ন আসতে পারে জাভা আমি কেন শিখব? প্রশ্নটার উত্তর টাও অনেক সোজা। এটা সম্পুরনো আপনার ব্যাপার যে শিখবেন নাকি শিখবেন না।শিখতেই হবে এমন কোন কথা নেই। কিন্ত শিখতে পারলে অনেক মজা পাবেন আশা রাখি। কয়েকটি কারন আমরা দেখতে পারি যে আমরা কেন জাভা শিখবঃ
১) ৩০ কোটিরো অধিক সংখ্যক ডিভাইসে জাভা রান কড়ছে।
২)বর্তমানের সবথেকে জনপ্রিয় মোবাইল প্লাটফর্মে আন্ডর্্যেড জাভা সাপর্টেড।
৩)কর্স প্লাটফর্ম হওয়াতে আপনি যে কোন প্লাটফর্মেই বসে জাভার কোড লিখতে পারবেন।
এইরকম আরো হাজার টা কারন আছে যা আমি বলে শেষ করতে পারবনা।
আসুন জেনে নেই জাভা শুরু করার আগে আপনার কম্পিউটারে কি কি থাকতে হবে। প্রথমেই লাগবে জাভা ডেভেলপমেন্ট কিট। এটি আপনার কম্পিউটারে জাভা প্লাটফর্মের তৈরীর কাজে আসবে। আর জাভা ডেভেলপমেন্ট কিট পেতে এই লিঙ্কটিতে যান।
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
সেখান থেকে আপনার সিস্টেম এর প্রয়োজন আনুযায়ী JAVA SE টি ডাউনলোড করুন।
আরেকটি জিনিস লাগবে তাহল জাভা কোড লেখার জন্য একটা ইডিটর। আমি এইখানে Eclipse ব্যবহার করব। আপনারা চাইলে NETBEANS অথবা অন্য যেকোন ইডিটর ইউজ করতে পারেন। Eclipse পেতে এই লিঙ্ক টিতে ঢু মারুন:www.eclipse.org/downloads/। এইখানের ক্লাসিক টা ডাউনলোড করুন।আর বই হিসাবে Herbert Schildt এর complete reference টা দেখতে পারেন।
আমার টিউটরিয়াল গুলোর সিস্টেম হচ্ছে যে আমি প্রতি টা টিউট্রিয়াল এ কিছু স্যামপল কোড দেখাবো আপনাদের কাছে আমার অনুরোধ থাকবে এইগুলো নিজে এডিটর এ লিখে লিখে চর্চা করা। এবং প্রতিটা টিউটরিয়াল এর শেষে আমি কিছু Exercise আপনাদের করতে দিব যাতে আপনারা আপনাদের জাভা স্কিল কিছুটা হলেও ডেভেলপ করতে পারেন।
আজকে আর টেকনিকাল কথা বার্তা কিছু বললাম না। ইনশাহল্লাহ আগামি পর্ব থেকে টেকনিকাল কথা বার্তা বলব।সবাই ভাল থাকবেন।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০২] :: জাভা এবং এডিটর ইন্সটল দেয়া
আসসালামুআলাইকুম আসা করি সবাই ভালো আছেন। কথা না বাড়িয়ে কাজে আসি। আমরা প্রথমেই জাভা ইন্সটল করে নেই।এর জন্য আমারা যেই সেটাপ ফাইল্টি ডাউনলোড করেছিলাম তার .EXE ফাইল টি ক্লিক করি। তারপর নরমাল ইন্সটল এর মত ইন্সটল করি। ইন্সটল হল কিনা তা দেখার জন্য Command Promt এ যান সেখানে গিয়ে লিখুন জাভা। যদি কিছু দেখতে পান তাহলে আপানার কম্পিউটারে জাভা সঠিক ভাবে ইন্সটল নিয়েছে।
অন্যথা আপনাকে ইনভারন্মেন্ট ভেরিয়েবল ঠিক করতে হবে।এর জন্য আপনাকে “My computer” icon এর উপর রাইট ক্লিক করতে হবে।সেখান থেকে প্রপারটিজ এ ক্লিক করুন। তারপর বামপাশের সারি থেকে “Advanced system settings” e ক্লিক করুন। তারপর নিচের মত একটা উইন্ডো আসবে তাহতে “Environment variable” এ ক্লিক করুন। নিচের মত উইন্ডো থেকে path কে সিলেক্ট করুন।
এবার আপনি আপানার কম্পিউটারে যেখানে জাভা ইন্সটল দিয়েছেন ওই ফোলডারে ঢুকুন। তারপর Bin Folder এ ক্লিক করুন। এবার আপনার মাউস এর কার্সরটি নিয়ে নিচের ছবির মত জায়গায় একটি মাত্র ক্লিক করুন।
এখন পুরো URL টি কপি করে path এর একেবারে শেষে বসিয়ে দিন। এবার খালি ok প্রেস করে বেরিয়ে আসুন। এখন আপনার কম্পিউটার জাভা কম্পিটেবল হয়ে গেছে।
এখন আসি IDE ইন্সটল এর পালা। Eclipse ডাউনলোডের জন্য http://www.eclipse.org/downloads/এ গিয়ে Eclipse Classic অথবা Eclipse IDE for Java Developers দুইটার যে কোন একটা ডাউনলোড করে নিন। একটা zip ফাইল ডাউনলোড হবে। তা আনজিপ করে যেকোন জাগায় রাখলেই Eclipse দিয়ে কোড লেখার জন্য রেডি হয়ে যাবে। eclipse.exe ওপেন করলে আপনাকে Workspace দেখাতে বলবে। Workspace ডিফল্ট রাখতে চাইলে ওকে করুন অথবা আপনি অন্য আরেকটা ফোল্ডার দেখিয়ে দিয়ে ওকে করুন। ব্যাস ,আপনি এখন জাভা কোডিং এর জন্য পুরুপুরি প্রস্তুত।
ইনশাআল্লাহ আগামি পর্বথেকে আমরা জাভা কোডিং এ হাত দিব।সবাই ভাল থাকবেন।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৩] :: জাভা দিয়ে একটি সিম্পল কোড রান করানো
আসসালামু আলাইকুম। আশা রাখি সবাই ভাল আছেন। আজকে জাভা দিয়ে সিম্পল একটি কোড রান করাবো। তাহলে আসুন শুরু করি জাভা নিয়ে বকর বকর।
শুরুতেই আমরা Eclipse টি ওপেন করি। সবার প্রথমে এইরকম একটা উইন্ডো আসবে।
প্রথমেই আমি একটু Eclipse নিয়ে কথা বলি।একদম বামপাশের নীল রঙের আবৃত যে অংশটি দেখেতে পাচ্ছেন একে বলে Package explorer এখানে আপনার তৈরী সকল প্রজেক্ট এর নাম এবং এইসব প্রজেক্ট এর under এ যত ফাইল আসে তা থাকবে। আর লাল রঙের আবৃত যে অংশ টি দেখা যাচ্ছে এখানে আপনাদের কোড লিখতে হবে। আর নিচের সবুজ রঙের আবৃত অংশ টি হল আঊটপুট দেখানোর জন্য। যদিও GUI ভিত্তিক প্রোগ্রামে আউটপুট অন্য ভাবে দেখানো হয়। তা নিয়ে আমরা অন্য দিন আলাপ আলোচনা করব। এখন। আর উপরের হলুদ রঙের আবৃত অংশটি হল মেনুবার।
এবার আসি কোড কিভাবে করবেন। প্রথমে মেনুবার থেকে File এ ক্লিক করুন। তারপর NEW -> java project ক্লিক করুন।
তারপর নিচের মত একটি উইন্ডো আসলে লাল কালি চিনহিত যায়গায় আপনার Project এর একটা নাম দিন। যেমন আমি এখানে দিয়েছি project1 এরপর FINISH এ ক্লিক করে বেরিয়ে আসুন।
দেখুন আপনার প্রজেক্ট টি Project Explorer e যুক্ত হয়েছে। এখন চিত্রে প্রদর্শিত যায়গায় ক্লিক করুন দেখবেন কয়েকটি মেনু নেমে এসেছে।
সেখান থেকে SRC উপর মাউস রেখে রাইট(RIGHT) ক্লিক করুন। এবার সেখান থেকে চিত্রে প্রদর্শিত এর মত New -> Class এ ক্লিক করুন। নিচের মত একটা উইন্ডো আসবে। সেখানে আপনার ক্লাস এর একটা নাম দিন। যেমন আমি এখানে দিয়েছি Facebook । এবার Finish এ ক্লিক করে বেরিয়ে আসুন।
এবার আপনি কোড লেখার জন্য প্রস্তুত। নিচের মত একটা উইন্ডো আসবে। খেয়াল করে দেখবেন আপনার ক্লাস এর নাম আর .Java ফাইল্টির নাম একি। প্রতিবার নতুন ক্লাস তৈরির জন্য উপরের পদ্ধতি অব্লম্বন করতে হবে।
এখন আপনারা যদি কোডিং পার্টে প্রতি লাইনের জন্য লাইনের পাশে লাইন নাম্বার দেখতে চান তাহলে প্রথমে Menu বার থেকে Window তে ক্লিক করুন। তারপর Preference এ ক্লিক করুন। তারপর নিচের উইন্ডোর মত কাজ করুন General ->Editors এর বামের আইকন গুলোর উপর ক্লিক করুন। তারপর TExtEditors এর উপর ডাবল ক্লিক করুন। তারপর ডানদিকে প্রদর্শিত Show line number এর পাশের চেক বক্সটি তে ক্লিক করে চেক করে দিন। এবার Apply -> OK দিয়ে বেড়িয়ে আসুন।
নিচের জাভার কোডটার দিকে তাকাই। ১ নম্বর লাইনে আমরা দেখতে পাচ্ছি “//” দিয়ে কিছু একটা লেখা হয়েছে। এই চিনহ দিয়ে সাধারাণত কমেন্ট করা বুঝানো হয়। মানে এই লাইন টা জাভা এক্সিকিউট করবেনা। ২ নাম্বার লাইন্টা জাভা ক্লাস তৈরির সময় নিজেই তৈরি করে দিয়েছিল। এটা হচ্ছে আমাদের ক্লাস যার ভেতর আমাদের সকল কোড লিখতে হবে। ৩ নম্বর লাইন এর দিকে তাকাই এখানে মেইন ফাংশন শুরু করা হয়েছে। সি লাঙ্গুয়েজ এর মতই কোন জাভা কোড রান করানোর সাথে সাথে প্রথমেই মেইন ফাংশন কে খুজে। আপাতত এতটুকু মনে রাখুন যে প্রতি টি জাভা কোডে অবশ্যই একটা মেইন ফাংসন থাকতে হবে। পরবর্তিতে যখন ফাংশন নিয়ে আলাম আলোচনা করব তখন বিস্তারিত বলব। আরেকটি কথা জাভা কিন্তু case sensitive মানে জাভা তে ছোট হাতের অহ্মর আর বড় অহ্মর একটা বড় ফ্যাক্টর। তাই public static void main(String[] args) এর String এর S বড় হাতের হবে। পরের লাইন টা আউটপুট প্রদর্শন এর কাজে আসবে। System.out.println(“Hello Bangladesh ”) দিয়ে স্ক্রিনে আউটপুট দেখানো হয়।এখানেও System er “S” বড় হাতের হবে সাধারনত আউটপুটের জন্য system,out.println ছাড়াও অন্য অনেক কিছু ব্যবহার করা যায়। আপাতত এতটুকু জানলেই হবে পরে যখন INPUT OUTPUT নিয়ে টিউন করব তখন বিস্তারিত লেখব। ৫ম লাইনে “}“ দিয়ে মেইন ফাইংশন বন্ধ করা হয়েছে। আর তার পরের লাইনে ক্লাস কে “}” দিয়ে বন্ধ করা হয়েছে।
এবার মেনুবার থেকে রান বাটন্টিতে ক্লিক করুন। তারপর ok করুন।
দেখবেন আপনার প্রথম জাভা কোড সফলতার সহিত রান করে আউটপুট দেখাচ্ছে।
আজকের আমার এই আলোচনা যদি বুঝে থাকেন তাহলে নিচের প্রোগ্রাম গুলো নিজে নিজে চর্চা করুন।
১) আপনি এমন একটি জাভা কোড লিখুন যার আউটপুট হবে নিচের মতঃ
My countries name is Bangladesh.
I love my country.
আজ এ পর্যন্তই। সবাই ভাল থাকবেন।
Happy programming.
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৪] :: ভেরিয়েবল,অপারেটর,ডাটা টাইপ
আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন। আজকে আপনাদের মাঝে যে জিনিস টি নিয়ে টিউন করব তাহল অপারেটর , ভেরিয়েবল, ডাটা টাইপ।
প্রথমেই জেনে নেই ভেরিয়েবল কি জিনিস। সাধারণত যে কোন সংখা বা মান বা কোন কিছু ধরে রাখার জন্য যে ধারক্টি ব্যবহাঁর করা হয় তাকে প্রোগ্রামিং এর ভাষায় ভেরিয়েবল বলে। আমরা ছোট বেলায় যখন অঙ্ক করতাম তখন আমরা মাঝে মাঝে ধরতাম ধরি সংখা টি “X”। পরে দিয়ে X এর একটি মান আসত। এই X এ ছিল ভেরিয়েবল। ঠিক তেমনি আমরা কম্পিউটারে যদি কোন সঙ্খা ব্যবহার করতে চাই তাহলে আগে ওই সংখা টি কোন ভেরিয়েবল এ রাখতে হবে। তারপর ওইটা দিয়ে কাজ করানো যাবে। ভেরিয়েবল যেকোন কিছু হতে পারে যে কোন নাম,বর্ণ যে কোন কিছু। কিন্তু কিছু জিনিস হতে পারবে না। যেমনঃ
১) ভেরিয়েবল এর নাম কখনই কোন সংখা দিয়ে শুরু হতে পারবে না। যেমনঃ 1ad,2_54 ইত্যাদি গ্রহন যোগ্য নয়।
২)কোন কিওয়ার্ড এর নাম হতে পারনে। কিওয়ার্ড হল এমন কিছু শব্দ যা আগে থেকেই জাভার জন্য বরাদ্দ। জাভার কিওয়ার্ড গুলো কি কি তা জানতে নিচের লিঙ্ক টিতে ঢু মারুন। http://en.wikipedia.org/wiki/List_of_Java_keywords
যেমন আপনি চাইলেই ভেরিয়েবল হিসাবে if,for ইত্যাদি ব্যবহার করতে পারবেন না কারন এগুলো জাভার কিওয়ার্ড।
এবার আসুন জেনে নেই ডেটাটাইপ কি জিনিস। ডেটাটাইপ বলতে বুঝায় আপনার ডাটা টা কেমন হবে,মানে ডাটা টা কি কোন ডেসিমেল(DECIMAL) নাম্বার হবে নাকি কোন দশমিক সংখা হবে নাকি Character টাইপ ডাটা হবে ইত্যাদি ইত্যাদি। জাভা তে বেশ কয়েক প্রকার ডাটা টাইপ রয়েছে নিচে বিস্তারিত দেওয়া হল।
বাইট(byte): বাইট টাইপ ডাটা ৮ বিট ডাটা বহন করতে পারে। এই টাইপের ডাটার সর্বচ্চ মান ১২৭ এবং সর্ব নিম্ন মান -১২৮।
শর্ট(short): এটি ১৬ বিটের ডাটা। এর সর্বচ্চ মান ৩২৭৬৭ এবং সর্বনিম্ন মান -৩২৭৬৮।
ইন্টেজার(integer): সংহ্মেপে একে int লেখা হয়। এর ধারন হ্মমতা সর্বচ্চ ২,১৪৭,৪৮৩,৬৪৭ এবং সর্ব নিম্ন -২১৪৭৪৮৩৬৪৮। এটি ৩২ বিটের ডাটা।
লং(long): এটি ৬৪ বিটের ডাটা।
উপরের ৪ টি ডাটা টাইপ ই শুধু ডেসিমেল নাম্বার ধারন এর কাজে আসে।এর দশমিক ভিত্তিক সঙ্খা ধারন করতে পারেনা।
ফ্লট(float): এরা দশমিক সংখা ধারন করতে পারে। এরা ৩২ বিট ডাটা টাইপ।
ডাবল(double): এরা ৬৪ বিট ডাটা টাইপ। এরাও এরা দশমিক সংখা ধারন করতে পারে ।
বুলিয়ান(boolean): এরা শুধু ২ ধরনের ডাটা ধরে রাখতে পারে। হয় “true ” অথবা “false” ।
কেরেক্টার(char): এটি কারেক্টর টাইপ ডাটা ধারণ করতে পারে।
স্ট্রিং(string): এরা আস্ত একটা বাক্য ধারন করতে পারে।
এখন জেনে নেই অপারেটর বলতে কি বুঝায়। যেকোন প্রোগ্রামিং ভাসায় অপারেটর বলতে বুঝায় “+” ,“–“, “*”,“/”,”%” কে। এছাড়াও আরো কিছু অপারেটর আছে।
“+” একে বলে Plus operator এটি যোগ করার জন্য ব্যবহার করা হয়।
“-” একে বলে Minus operator এটি বিয়োগ করার জন্য ব্যবহার করা হয়।
“*” একে বলে Multiplication operator এটি গুন করার জন্য ব্যবহার করা হয়।
“/” একে বলে Divide operator এটি ভাগ করার কাজে ব্যবহার করা হয়।
“%” একে বলে Modulus operator এটি ভাগশেস বের করার জন্য ব্যবহার করা হয়।
উপরের সব গুলো অপেরেটর কে বাইনারি অপেরেটর বলা হয়।
এছারাও আরও অনেক ধরনের অপেরেটর রয়েছে যেমন ইউনারি অপেরেটরঃ
“++” Increment operator; increments a value by 1
“--“ Decrement operator; decrement a value by 1
“!” Logical complement operator; inverts the value of a boolean
এছাড়াও রয়েছে রিলেশনাল অপেরেটর।
“==” equal to
“!=” not equal to
“>” greater than
“>=” greater than or equal to
“<” less than
“<=” less than or equal to
এই ছিল মোটা মুটি ডাটা টাইপ এবং অপেরটর গুলো এখন আসুন এইগুলো কিভাবে ব্যবহার করবেন তার জন্য কয়েকটি প্রোগ্রাম দেখি।
প্রথমেই আপনার Eclipse Software টি চালু করুন। আগের পর্বের দেখানোর মত একটি প্রজেক্ট ওপেন করুন এবং একটি ক্লাস তৈরি করুন।
প্রথমেই আমি আপনাদের ভেরিয়েবল , ডেটা টাইপ ,এবং অপেরেটর এর ব্যসিক একটি প্রোগ্রাম দেখাবো। নিচের প্রোগ্রামটি দেখুন।
এইখানে প্রথমে int টাইপের ৩ টি ভেরিয়েবল ডিক্লায়ার করা হয়েছে। তারপর “=” অপেরেটর এর সাহায্যে X এবং y এর মান বসানো হয়েছে। পরের লাইনে x,y এর যোগফল “=” অপেরেটর এর সাহায্যে z এ বসানো হয়েছে। তারপর Z এর মান System.out.println(z); এর সাহায্যে অউতপুট করা হয়েছে। পরের লাইন গুলোতে আরো কিছু Arithmetic operation করানো হুয়েছে।
পরের এই প্রোগ্রামটি ইউনারি অপেরেটর এর কাজ দেখানো হয়েছে।
পরে যেদিন Control statement নিয়ে টিউন করব ওইদিন কন্ডিশনাল অপেরেটর নিয়ে লেখব।
এখন আপনাদের চর্চার জন্য কয়েকটি প্রব্লেম দিচ্ছি। এইগুলো অবশ্যই চর্চা করবেনঃ
১) ৬,৭,৮ এর যোগ,এবং গুনফল প্রদর্শন করুন। আওউটপুট টা যাতে দেখতে এমন হয়ঃ
Sum is 21 .
Multiplication result is 336.
২) নিজের ইচ্ছা মত কয়েকটি ভেরিয়েবল ডিক্লায়ার করেন তারপর তাদের উপর +,-,*,/,%,++,-- অপেরেশন গুলো চালান।
আজ এ পর্যন্তই।সবাই ভাল থাকবেন এবং ভাল মত চর্চা করবেন।
Happy programming
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৫] :: কন্ট্রোল স্টেটমেন্ট-০১
আসসালামু আলাইকুম। আশা করি সবাই ভালো আছেন। আজকে আমি যেই বিষয় নিয়ে টিউন করব তা হল জাভাতে কন্ট্রল স্টেটমেন্ট।
কন্ট্রল স্টেটমেন্ট বলতে আমি এখানে বুঝাতে চাচ্ছি এমন কিছু কোড যা আপনার প্রোগ্রামকে নিয়ন্ত্রন করবে। অথবা বলা যায় আপনি আপনার কম্পিউটার কে সিদ্ধান্ত নিতে সাহায্য করতে পারবেন এই কন্ট্রল স্টেটমেন্ট এর সাহায্যে।
যেমন ধরুন কেউ আপনাকে একটা সংখা দিয়ে বলল যে বলতো দেখি সঙ্খাটি জোড় নাকি বিজোড়? তাহলে আপনার মাথায় এই রকম একটা চিন্তা আসবে যে সংখা টি যদি ২ দিয়ে ভাগ যায় তাহলে সেটা জোড় সংখা না হয় তা বিজোড় সংখা।কিন্তু যদি এই একই জিনিসটা কম্পিউটার দিয়ে করতে বলা হয় তাহলে কিভাবে করবেন? আমাদের একটা জিনিস মাথায় রাখতে হবে কম্পিউটার খুব বোকা একটা যন্ত্র।আমরা মানুষ একে চালাক বানাবো। একে সিধান্ত নিতে শিখাবো। আসুন তাহলে আমরা এই প্রব্লেমটার ই জাভাতে কিভাবে করবেন তা দেখে নেই।
public class microsoft {
public static void main(String[] args)
{
int i=10;
if(i%2==0)
{
System.out.println("The number is even");
}
else
{
System.out.println("The number is odd");
}
}
}
উপরের প্রোগ্রামটির দিকে লহ্ম্য করলে আমরা দেখতে পারব যে,প্রথমে একটি ভেরিয়েবল i এ ১০ কে স্টোর করা হয়েছে। তারপর একটি শর্ত যুরে দেয়া হয়েছে যে যদি তা ২ দিয়ে ভাগকরলে ভাগশেষ ০ হয় তাহলে সংখাটি জোড় না হয় বেজোড়। এখানে যদি if দিয়ে এবং না হয় else দিয়ে বুঝানো হয়েছে। এখন আপনারা ১০ এর পরিবর্তে কোন বিজোড় সংখা দিয়েও জিনিসটা দেখতে পারেন। এটা অনেক সাধারন একটা সমস্যা ছিল। যদি কখনও এমন হয় যে একটি সমস্যার সমাধানের জন্য অনেক গুলো শর্ত থাকে তাহলে সেহ্মেত্রে প্রথম্বার if দিয়ে পরের প্রতিবারের জন্য else if লাগাতে হবে এবং একেবারে শেষবারের জন্য শুধু else লাগাতে হবে। এরকম একটি কোড এর Syntax নিচে দেয়া হলঃ
এছাড়া জাভাতে nested if বলে একটা কথা আছে। এই যেমন যদি কখনো শর্তের মধ্যে আবার শর্ত আসে তাহলে if{ } এর মধ্যে if{},else if{},else{} ব্যবহার করা যাবে। কিন্তু অবশ্যিই বন্ধনি”{” “}” গুলোর দিকে খেয়াল রাখতে হবে যাতে ওলট পালট হয়ে না যায়। নিচে Syntax দেখানো হলঃ
এখন আমরা জাভাতে Switch case নিয়ে আলাপ আলোচনা করব। এটিও একটি বিশেষ ধরনের কন্ট্রল স্টেটমেন্ট। এটি দিয়ে কিভাবে কাজ করানো যায় তা আমরা একটু দেখি।
public class facebook {
public static void main(String[] args)
{
String i="March";
switch(i)
{
case "january":
System.out.println("I contains January");
break;
case "february":
System.out.println("i contains February");
break;
case "March":
System.out.println("i contains March");
break;
default:
System.out.println("i contains a normal String");
}
}
}
এখানে প্রথমে i এর ভিতর “March” কে নেওয়া হয়েছে। বলে রাখা ভাল এখানে I এর ডাটা টাইপ হল string । তারপর switch case শুরু করা হয়েছে । switch case ব্যবহার এর নিয়ম হল যেই ভেরিয়েবল টি আমরা চেক করতে চাই ওইটা switch এর parameter হিসাবে switch() এর ভিতর দিতে হবে যেমন এখানে আমরা দিয়েছি switch(i) কারণ আমরা i কে চেক করতে চাই। তারপর case লিখে স্পেস দিয়ে ওইসব মান দিতে হবে যা দিয়ে আপনি চেক করতে চান তাকি আপনার শর্তগুলো মানে নাকি। যদি মানে তাহলে তা একটি নির্দিস্ট কাজ করবে এবং পরে তা থেকে বেরিয়ে আসবে break এর সাহায্যে। যেমন আমি এখানে চেক করেছি i এর মান “March” হলে তা প্রিন্ট করবে “I contains March” আর যদি i এর মান হয় January তাহলে প্রিন্ট করবে “I contains January” আর যদি i এর মান হয় February তাহলে প্রিন্ট করবে “I contains February” আর যদি ৩ টির একটিও i এর মান না হয় তাহলে তা প্রিন্ট করবে “I contains a normal string”।
এখন নিম্নের প্রব্লেম গুলো চেস্টা করুন।
১) একটি বছর একটি ভেরিয়েবল এ নিন যেমন i=1992, এখন বের করুন এই বছরটি কি লিপ ইয়ার নাকি লিপ ইয়ার না। যেমন
Leap year হলে প্রিন্ট করবে “This year is Leap year” আর না হলে প্রিন্ট করবে “Sorry,this year is not Leap year” । এটি করবেন if, else ব্যবহার করে।
২)ঊপরের দেখানো Switch case এর প্রব্লেমটি if else দিয়ে implement করুন।
আর Herbert Schildts এর বই এর ৫ম অধ্যায়টা পারলে পইরেন।
Happy Programming
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৬] :: কন্ট্রোল স্টেটমেন্ট-০২
আসসালামু আলাইকুম,আশা করি সবাই ভালই আছেন। আজকে আমি কন্ট্রল স্টেটমেন্ট এর ২য় টিউন টি করব।আজকে আমরা যে জিনিসটি দেখব তাহল লুপ এর ব্যাবহার।যে কোন প্রোগ্রামিং লাঙ্গুয়েজ এই লুপ অনেক গুরুত্যপুর্ন জিনিস। ধরুন আপনাকে কেউ বলল যে “I love my country” এটা ৫০ বার জাভাতে প্রিন্ট করতে। আপনি যদি লুপ না জানেন তাহলে ৫০ বার আপনাকে System.out.println(“I love my country”); লিখতে হবে। যেটা খুবই বিরক্তিকর। কিন্ত আপনি লুপ জানলে অতি সহজে কাজ টি করতে পারতেন।
জাভাতে অনেক ধরনের লুপ আছে যেমনঃ
১)For loop
২)While loop
৩)Do while loop
৪)Enhanced for loop
আসুন দেখে নেই for loop এর একটি প্রোগ্রাম। আমরা এখানে খুব সাধারন কিছু প্রোগ্রাম দেখব।
public class facebook {
public static void main(String[] args)
{
int i;
for(i=1;i<=5;i++)
{
System.out.println("Hello Bangladesh");
}
}
}
উপরের প্রোগ্রামটিতে তাকালে আমরা দেখতে পাব যে for{ } লুপ এর তিনটি প্যারামিটার রয়েছে। প্রথমে আপনাকে একটি ভেরিয়েবল এর মান দিতে হবে আমি এখানে যেমন দিয়েছি i=1; তারপর দিতে হবে লুপ টি কত বার চলবে তা বলে দেওয়া হয়েছে। যেমন আমি এখানে লিখেছি i<=5 মানে i এর মান ৫ এর থেকে ছোট বা ৫ এর সমান। তারমানে লুপটি ১ থেকে শুরু হয়ে ৫ বার চলবে। সোজা কথা টোটাল ৫ বার চলবে। আর পরে আরেকটি জিনিস রয়েছে তাহল i++ মানে হল প্রতিবার i এর মান এক এক করে বাড়বে। এবং i এর মান ৫ হওয়ার সাথে সাথে লুপটি বন্ধ হয়ে বেরিয়ে আসবে। উপরের প্রোগ্রামটি এভাবেও করা যায়।
public class facebook {
public static void main(String[] args)
{
int i;
for(i=5;i>=1;i--)
{
System.out.println("Hello Bangladesh");
}
}
}
জিনিসটা হল শুধু আগের প্রোগ্রামটার ঠিক উলটো। এহ্মেত্রে i এর মান ৫ থেকে শুরু হয়ে ১ পর্যন্ত যাবে। লহ্ম্য করার বিষয় হল এহ্মেত্রে i এর মান i—এর সাহায্যে এক এক করে কমেছে।
এবার আসি While লুপ এর ব্যবহার নিয়ে আলাপ আলোচনা করব।প্রথমেই while লুপ এর একটা কোড দেখে নেইঃ
public class Test {
public static void main(String args[]){
int x = 1;
while( x<=5 ){
System.out.println("Hello Bangladesh");
x++;
}
}
}
উপরের এই কোডটি হুবহু আগের for লুপ দিয়ে যে প্রোগ্রামটি করে ছিলাম তাই ই আঊটপুট দিবে। শুধু syntax ভিন্ন। এক্ষেত্রে প্রথমে একটি ভেরিয়েবল i এ ১ বসানো হয়েছে। তারপর while লুপটি শুরু করা হয়েছে। while লুপ এর প্যারামিটার হিসাবে i<=5 দেওয়া হয়েছে অর্থাৎ i এর মান যথহ্মন ৫ না হবে লুপ্টি তথহ্মন চলতে থাকবে। লুপ এর ভিতরে i এর মান বাড়ানোর জন্য i++ ব্যবহার করা হয়েছে। প্রতিবার লুপ ঘুরার পর i এর মান বারবার চেক হচ্ছে যে তা কি ৫ এর থেকে বড় কিনা ।
Do..while লুপঃ এটি আপনারা নিজেরা চেস্টা করুন। অনেকটা while লুপ এর মতই। খালি একটা পার্থক্য হল while loop এ শর্তটা লুপ এ ঢুকার আগে চেক হয়। তাই শর্ত না মানলে লুপ্টি একবারো নাও ঘুরতে পারে। কিন্তু do..while{} লুপে শর্ত পরে চেক হয় তাই এটি অন্তত একবার ঘুরবেই। আগের প্রোগ্রামটিই do..while লুপের সাহায্যে দেখানো হলঃ
public class Test {
public static void main(String args[]){
int x = 1;
do{
System.out.println("Hello Bangladesh");
x++;
}while( x < =5 );
}
}
এবার আসি Enhanced for loop নিয়ে আলোচনায়। এই লুপ্টি নরমালি
ব্যবহার করা অ্যারে এর মেম্বারদের একযোগে আক্সেস করার জন্য। এদের syntax নিচে দেখানো হলঃ
public class Test {
public static void main(String args[]){
int avy[] = {2,5,6,7,8,10,16};
int total=0;
for(int x:avy)
{
total=total+x;
}
System.out.println(total);
}
}
এইখানে যেই কাজ টা হচ্ছে তাহল avy নামক অ্যারেতে যত মান রাখা আছে তা যোগ করে total এ রাখবে। এর জন্য উপরের for লুপে অ্যারের প্রতিটি মান x এর মধ্যে নেওয়া হচ্ছে তারপর তা এক এক করে যোগ করে তা total এ রাখা হছে সবার শেষে total কে আউটপুট করা হচ্ছে।
এই ছিল আমার কন্ট্রল স্টেটমেন্ট এর ২য় পর্ব। সাম্নের পর্ব গুলোতে আমি একটু নেস্টেড লুপ এবং if else নিয়ে আলাপ আলোচনা করব।
এখন আপনাদের practice এর জন্য নিচের প্রোব্লেম গুলো চেস্টা করুন।
১)1971 থেকে 2013 পর্যন্ত সংখা গুলো প্রিন্ট করুন।(for,while,do..while) এর সাহায্যে।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৭] :: জাভাতে ইনপুট কিভাবে নিবেন?
আসসালামু আলাইকুম। আজকে আমি খুব ছোট একটি টিউন করব তা হল জাভাতে কিভাবে ইনপুট নিতে হয় তা নিয়ে।
নরমালি জাভাতে ইনপুট নেওয়া যায় দুভাবে একটি command line ইনপুট আর আরেকটি পদ্ধতি হল Graphical user interface ইনপুট। আমি আজকে শুধু command line ইনপুট নিয়ে কথা বলব।
এবার আসি কাজের কথায়, command line ইনপুট নেওয়ার হ্মেত্রে আপনাকে প্রথমেই জাভার একটি লাইব্রেরি ইম্পর্ট করতে হবে। যেমন C/C++ কোড করার সময় আমরা যেমন শুরুতেই লেখে নিতাম যে #include <stdio.h>। এটা হচ্ছে C/C++ এর ইনপুট আউটপুট এর লাইব্রেরি। ঠিক তেমনি জাভাতেও ইনপুট নেওয়ার সময় একটি লাইব্রেরি ইম্পর্ট করতে হয় আর তাহল java.util.Scanner । আসুন তাহলে কথা না বাড়িয়ে ঝটপট করে একটি প্রোগ্রাম দেখে নেই।
import java.util.Scanner;
public class facebook {
public static void main(String[] args)
{
Scanner avy= new Scanner(System.in);
System.out.println("What is your name?");
String a=avy.nextLine();
System.out.print("My name is: ");
System.out.println(a);
System.out.println("How old are you?");
int x=avy.nextInt();
System.out.println("I am:" + x + " years old" );
}
}
উপরের প্রোগ্রামে প্রথমে java.util.Scanner কে ইম্পর্ট করা হয়েছে। তারপর Scanner ক্লাস এর একটি অবজেক্ট avy তৈরি করা হয়েছে
তারপর ৯ম লাইনে প্রথম String টাইপ এর ভেরিয়েবল এ ইনপুট নেওয়া হয়েছে।১১ তম লাইনে আবার যে ইনপুট টি নেওয়া হয়েছিল তা আউপুট করা হয়েছে।আবার ১৩তম লাইনে আরেকটি int টাইপ এর ভেরিয়েবল X এর ভিতর ইনপুট নেওয়া হয়েছে। এবং ১৪ তম লাইনে তা আবার আউটপুট করে দেওয়া হয়েছে।
একটা জিনিস খেয়াল রাখেতে হবে আমরা যেই টাইপের ভেরিয়েবলে ইনপুট নিব সেই টাইপের .next[আমাদের টাইপ] দিতে হবে যেমন আমি এখানে a এর ভিতর স্ট্রিং টাইপের ইনপুট নিয়েছি তাই লিখেছি .nextLine() আবার X এর ভিতর int টাইপের ভেরিয়েবল নিয়েছি তাই এহ্মেত্রে দিয়েছি .nextInt(). যদি float টাইপ ভেরিয়েবলে মান নিতাম তাইলে লিখতাম .nextFloat();
এখন আসুন নিচের প্রোগ্রাম গুলি চর্চা করুনঃ
১) একটা সংখা ইনপুট নিন তা জোড় না বিজোড় তা যাচাই করুন।
২)একটা সংখা ইনপুট নিন এবং সেই সংখার নামাতা প্রিন্ট করুন।
আজ এ পর্যন্তই। সবাই ভালো থাকবেন।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৮] :: জাভাতে Array এর ব্যবহার
আসসালামু আলাইকুম। আশা করি সবাই ভাল আছেন। আজকে আমি যে টপিকটি নিয়ে কথা বলব তাহল Array। যেকোন প্রগ্রামিং লাঙ্গুয়েজই Array বেশ গুরুত্যপুর্ন একটি জিনিস। আগেই Array এর গুরুত্য কি তা আমরা জেনে নেই।
public class facebook {
public static void main(String[] args)
{
int a,b,c;
a=10;
b=30;
c=a+b;
System.out.println("Sum is:" + c);
}
}
উপরের প্রোগ্রামটি লহ্ম্য করি। এখানে প্রথমে ৩ টি ভেরিয়েবল ডিক্লায়ার করা হয়েছে । পরবর্তিতে এদের মধ্যে ২ টিতে মান নিয়ে এদের যোগফল ৩য় ভেরিয়েবল এ রাখা হয়েছে। খুবই সাধারান একটা প্রোগ্রাম।
কিন্ত এখন কেউ যদি আপনাকে বলে যে ১০১ টি ভেরিয়েবল ডিক্লায়ার কর এবং ১০০ টি ভেরিয়েবলে ইনপুটের সাহায্যে মান নিয়ে এদের যোগফল ১০১ তম ভেরিয়েবল এ রাখুন। তাহলে ১০১ টি ভেরিয়েবল ডিক্লায়ার করতে করতে ১২ টা বেজে যাবে। চিন্তার কোন কারন নেই।আমাদের আছে Array। Array হল Sequence of variable । একসাথে অনেক গুলো ভেরিয়েবল একবারেই ডিক্লায়ার করা যায়। এই যেমন আমি যদি লিখি :
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
তাহলে int টাইপের ১০ টা ভেরিয়েবল ডিক্লয়ার হয়ে গেছে। সোজা না??এবার আসুন আরেকটু ভিতরে যাই। আগের প্রোগ্রামটি যেখানে শুধু Array ডিক্লায়ার করেছিলাম ওইটাই আরেকটু মোডিফাই করি।নিচের প্রোগ্রামটি দেখুনঃ
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0]=100;
এখানে int টাইপের ১০ টা ভেরিয়েবল ডিক্লয়ার হয়েছে। পরের লাইনে মান বসানো হয়েছে। মনে রাখতে হবে যে আমরা যেই Array টা ডিক্লায়ার করে ছিলাম তার প্রথম Address টা ০ তারপরের আড্রেস টা হল 1 এভাবে করতে করতে শেস Address টা হবে 9 এরকম কোন একটা Array এর ভিতর প্রতিটা Address কে index বলে। আমাদের এই
Array এর সাইজ কত বলতে পারবেন? আমি এখানে সাইজ বলতে বুঝাতে চেয়েছি দৈর্ঘ্য কত? সোজা হিসাব ১০, কারন আমরা ১০ সাইজের একটা Array ডিক্লায়ার করেছিলাম। মানে এই Array টা তে আমরা সর্বচ্চ ১০ টি মান রাখতে পারব।এবং তাদের Address হবে ০-৯ পর্যন্ত। নিচের ছবিটি দেখি তাহলে অনেক কিছু পরিস্কার হয়ে যাবেঃ
এবার আসুন Array দিয়ে ঝটপট একটি পুর্ন প্রোগ্রাম দেখে ফেলিঃ
class ArrayDemo {
public static void main(String[] args) {
// declares an array of integers
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0] = 100;
// initialize second element
anArray[1] = 200;
// etc.
anArray[2] = 300;
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
System.out.println("Element at index 0: "
+ anArray[0]);
System.out.println("Element at index 1: "
+ anArray[1]);
System.out.println("Element at index 2: "
+ anArray[2]);
System.out.println("Element at index 3: "
+ anArray[3]);
System.out.println("Element at index 4: "
+ anArray[4]);
System.out.println("Element at index 5: "
+ anArray[5]);
System.out.println("Element at index 6: "
+ anArray[6]);
System.out.println("Element at index 7: "
+ anArray[7]);
System.out.println("Element at index 8: "
+ anArray[8]);
System.out.println("Element at index 9: "
+ anArray[9]);
}
}
প্রোগ্রামটা খুবই সোজা ১০ সাইজের একটি Array ডিক্লায়ার করা হয়েছে এবং এদের মান বসানো হয়েছে index অনুসারে পরে এই সব মান আবার আউটপুট করা হয়েছে। প্রোগ্রামটির আউটপুট নিচের মত আসবেঃ
Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000
এবার নিচের প্রব্লেমটি চেস্টা করুনঃ
১)একটা ১০ সাইজের array ডিক্লয়ার করুন।এদের মধ্যে ১০ টি আপনি নিজে ইনপুট নিন এবং এদের যোগফল আউপুট করুন।
আজ এ পর্যন্তই। আর একটা কথা টিউটরিয়াল এর কিছু বুঝতে না পারলে অবশ্যই জানাবেন।আমি ইনশাল্লাহ আপনাদের সাহায্য করার যথা সাধ্য চেস্টা করব।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-০৯] :: অবজেক্ট এবং ক্লাস নিয়ে সাধারন কিছু কথা
আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন। আজকে আমি জাভার একটি অত্যন্ত গুরুত্যপুর্ন জিনিস নিয়ে আলাপ আলোচনা করব,তা হচ্ছে অবজেক্ট অরিয়েন্টেড কন্সেপ্ট।
এই পর্বে আমি তেমন ভিতরে যাবনা। শুধু ব্যাসিক কিছু জিনিস নিয়ে আলাপ আলোচনা করব।
আগেই জেনে নেই অবজেক্ট কি জিনিস। অবজেক্ট হল অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর পিলার বা খুটি। যদি অবজেক্ট এর ধারনা আমাকে বলতে বলেন তাহলে আমরা প্রত্যেকেই এক এক টা অবজেক্ট।আমরা মানুষ,গাছপালা ,সকল প্রানী, সব জড় বস্তু সবাই এক এক টা অবজেক্ট।কিন্তু আমরা এবং যতগুলো উদাহরন দিলাম সবই হল বাস্তব জীবনের উদাহরন(Real world example)।প্রত্যেকটি অবজেক্ট এর ২ টি জিনিস থাকবেই তাহলঃ
১)অবস্থা(State)।
২)গুনাগুন বা ব্যবহার(Behavior)।
অবস্থা বলতে বুঝায় এই যেমন মানুস এর ২ টা চোখ আছে ,কান আছে,হাত আছে, পা আছে ইত্যাদি এই সবই হল এক এক টা স্টেট(State)।আবার মানুস চোখ দিয়ে দেখতে পারে ,কান দিয়ে শুনতে পারে সবই হল তার ব্যবহার(Behavior)।
প্রোগ্রামিং এর অবজেক্ট এর কন্সেপ্টটাও অনেকটা এমনই। প্রোগ্রামিং এও প্রতিটা অবজেক্ট এর State এবং Behavior আছে। প্রোগ্রামিং State বলতে বেশিরভাগ হ্মেত্রেই বিভিন্ন ভেরিয়েবল কে বুঝায়। আর Behavior বলতে বুঝায় ফাংশনকে। এই ছিল মোটামোটি অবজেক্ট নিয়ে আলোচনা। এবার আসি ক্লাস এ।
ক্লাসঃ সোজা কথায় বলতে গেলে আমরা মানুষরা যদি এক একটা অবজেক্ট হই তাহলে আমাদের সমাজ হল একটা ক্লাস। আবার ভেঙ্গে বলতে গেলে আমাদের বাস্তব জীবনের এমন অনেক আলাদা আলাদা অবজেক্ট পাব যারা প্রায় একি প্রকারের।যেমন হাজার হাজার সাইকেল আছে যারা প্রায় একি রকমের দেখতে ।প্রতিটি বাইসাইকেল একই ব্লুপ্রিন্ট কে মাথায় রেখে তৈরি হয়,তাই দেখতে একই রকম,বৈশিষ্ট ও প্রায় একই।আমাদের অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এ এক একটি বাইসাইকেল কে বলা হয় পুরো বাইসাইকেল গোস্টহির instance। ক্লাস হচ্ছে একটি নীল নকশা যার সাহায্যে আলাদা আলাদা অবজেক্ট তৈরি হয়।
এবার আসি ক্লাস কিভাবে তৈরি করবেন। এনিয়ে আমি আমার ৩য় টিউনেই বিস্তারিত আলোচনা করেছি। খুবই সোজা পদ্ধতি। এবার আসি আমরা একটু নিচের কোডটার দিকে তাকাইঃ
<pre>class Bicycle {
//Member variable
int cadence = 0;
int speed = 0;
int gear = 1;
//Member function
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}</pre>
এবার ২য় আরেকটি ক্লাস তৈরি করিঃ
class BicycleDemo {
public static void main(String[] args) {
// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
এবার ২য় প্রোগ্রামটার দিকে তাকাই এই প্রোগ্রামটিতে আগের প্রোগ্রামের ২টি অবজেক্ট তৈরি করা হয়েছে।পরের লাইনে অবজেক্ট গুলোর সাহায্যে যেই ক্লাসের অব্জেক্ট তৈরি করা হয়েছে সেই ক্লাসের বিভিন্ন মেম্বার ভেরিয়েবল এবং ফাংশঙ্কে Access করা হয়েছে।খেয়াল করলে দেখবেন main ফাংশন খালি ১টি ক্লাস এই রয়েছে। আর main ফাংশন থেকেই প্রোগ্রামকে রান করাতে হবে। মেইন ফাংশন থেকে রান করালে আউটপুট এমন আসতে পারেঃ
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
১ম ক্লাসে আমরা যতগুলি ভেরিয়েবল দেখতে পাচ্ছি এদের কে বলে মেম্বার ভেরিয়েবল আর যতগুলি ফাংশন দেখতে পাচ্ছি এদের কে বলে মেম্বার ফাংশন।
প্রতিটা ফাংশন এবং ভেরিয়েবল এর আবার আলাদা আলাদা Access হ্মমতা দেওয়া যায়। এইরকম Access করার হ্মমতা কে ৩ ভাগে ভাগ করা যায়ঃ
১)পাবলিক
২)প্রাইভেট
৩)প্রটেক্টেড
পাবলিক মেম্বার যারা তাদের কে চাইলেই অন্য একটি ক্লাসথেকে Access করা যায়। প্রাইভেট শুধু ওই ক্লাসের মেম্বাররাই Access করতে পারবে। আর প্রোটেক্টেড শুধু মাত্র যেই সকল ক্লাস এই ক্লাস্কে ইনহেরিট করবে তারাই ব্যবহার করতে পারবে।
কি?? বুঝতে সমস্যা হচ্ছে??? চিন্তার কোন কারন নেই সামনে এগুলো সব নিয়ে বিশদ আলোচনা করব। তখন সব কিছু পরিস্কার হয়ে যাবে।
আজ এ পর্যন্তই।সবাই ভাল থাকবেন।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১০] :: কন্সট্রাক্টর
আসসালামু আলাইকুম আশা করি সবাই ভালই আছেন। আজকে আমরা জাভাতে ক্লাস এর কন্সট্রাক্টর নিয়ে আলাপ আলোচনা করব।
কন্সট্রাক্টর হল কোন ক্লাসের মেম্বার ভেরিয়েবল গুলোর মান বসানোর জন্য ব্যবহ্রত একটি ফাংশন। সাধারনত এর সাহায্যে মেম্বার ভেরিয়েবল এর মান বসানো হয়। আমরা যখন কোন ক্লাসের অব্জেক্ট তৈরি করি তখন আর কোন ফাংশন কল হয় না,কোন ভেরিয়েবল এ মান বসানো হয়না,শুধু কন্সট্রাক্টর কল হয় তাই এই কন্সট্রাক্টর এর মধ্যে ভেরিয়েবল গুলোর মান বসানো হয়।
কন্সট্রাক্টর একটা ফাংশন। শুধু অন্যান্য ফাংশন এর সাথে এর পার্থক্য হচ্ছে কন্সট্রাক্টর এর নাম অবশ্যই তার ক্লাসের নামে হবে। যেমন আপনার ক্লাস এর নাম যদি myclass হয় তাহলে আপনার কন্সট্রাক্টর এর নাম ও myclass হতে হবে।
এখন আসুন নিচের প্রোগ্রামটি দেখে নেইঃ
public class facebook {
public String name;
public facebook(String myname)
{
name=myname;
}
public void setname(String myname)
{
name=myname;
}
public String getname()
{
return name;
}
public void show_name()
{
System.out.printf("My name is %s \n", getname());
}
}
এখানে facebook নামক ক্লাস এর facebook নামক কন্সট্রাক্টর তৈরি করা হয়েছে।এবং সেখানে ভেরিয়েবল “name” এর মান বসানো হয়েছে।পরে আরেকটি মেথড Show_name() এর সাহায্যে এর মান আউটপুট করা হয়েছে।
এবার আসুন ২য় আরেকটি ক্লাস এর প্রোগ্রাম এর দিকে লহ্ম্য করি যেখানে main() মেথড লেখা আছেঃ
public class microsoft {
public static void main(String[] args)
{
facebook fb=new facebook("sizan");
fb.show_name();
}
}
এখানে প্রথমে facebook ক্লাস এর একটি অব্জেক্ট তৈরি করা হয়েছে। খেয়াল করলে দেখবেন আমি এখানে অবজেকট তৈরির সময় প্যারামিটার হিসাবে আমার নাম দিয়েছি। এই মানটাই কন্সট্রাক্টর এর name ভেরিয়েবলে গিয়ে বসবে। ৬ষ্ঠ লাইনের দিকে তাকালে আমরা দেখতে পারব যে facebook ক্লাস এর যেই অবজেক্ট আমরা তৈরি করে ছিলাম তার সাহায্যে facebook ক্লাসের show_name() মেথড কে কল করা হচ্ছে। এবার ২য় ক্লাস থেকে প্রোগ্রামকে রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ
My name is sizan
আরেকটি কথা জেনে রাখা ভাল,আমরা যত গুলি ক্লাসই তৈরি করি না কেন আমাদের প্রোগ্রাম সবসময় রান করাতে হবে সেই ক্লাস থেকে যেখানে আমাদের main() মেথড আছে।যেমন আমাদের এখানে আছে microsoft ক্লাস এ তাই আমরা microsoft ক্লাস থেকে প্রোগ্রামকে রান করাবো।
আমরা আজকে বেশ গুরত্যপুর্ন একটা জিনিস সম্পর্কে জানলাম, তাহল কন্সট্রাক্টর। এই টিউট্রিয়াল এর কিছু না বুঝতে পারলে জানাবেন।আমরা আস্তে আস্তে জাভার ভিতরে প্রবেশ করছি। তাই যদি ব্যাসিক এ প্রব্লেম থাকে তাহলে সামনের টিউটরিয়াল গুলো বুঝতে আরো কস্ট হবে।
আজ এ পর্যন্তই। সবাই ভাল থাকবেন।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১১] :: কন্সট্রাক্টর ওভার রাইডিং
আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন আজকে আমরা জাভাতে কন্সট্রাক্টর কিভাবে ওভাররাইড করতে হয় তা আমরা জানব।
ওভার রাইড বলতে বুঝায় কোন ফাংশন এর নাম একি রেখে শুধু প্যারামিটার পরিবর্তন করে দিয়ে কিভাবে একি নামের ভিন্ন ভিন্ন ফাংশন তৈরি করা যায়।
কথাটা কি একটু বেশি কঠিন হয়ে গেল?? আচ্ছা তাহলে একটু কস্ট করে নিচের কোডটা দেখিঃ
public class facebook {
int x;
int y;
int z;
facebook(int i)
{
x=i;
y=0;
z=0;
}
facebook(int i,int j)
{
x=i;
y=j;
z=0;
}
facebook(int i,int j,int k)
{
x=i;
y=j;
z=k;
}
void show_me()
{
System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
}
}
এখানে facebook নামের ৩ টি আলাদা আলাদা কন্সট্রাক্টর তৈরি করা হয়েছে।খেয়াল করলে দেখতে পারবেন ১ম টিতে ১টি প্যারামিটার,২য় টিতে ২টি প্যারামিটার ,৩য় টিতে ৩টি প্যারামিটার দেওয়া হয়েছে। ১ম তিতে একটি প্যারামিটার দেওয়া হয়েছে বলে y,z এর মান আমার নিজেথেকে বসিয়ে দিতে হয়েছে,২য় কন্সট্রাক্টর এ আবার z এর ভ্যালু নিজে থেকে বসিয়ে দিতে হয়েছে। পরে ৩য় কন্সট্রাক্টরটিতে ৩টি প্যারামিটার থাকায় কোন ভেরিয়েবল এর মান ম্যানুয়ালী করা লাগেনি।একেবারে শেষে আরেকটি ফাংসন বানানো হয়েছে যাতে আমরা আমাদের ভেরিয়েব গুলোর মান প্রিন্ট দিতে পারি।
এবার আসি আমরা আরেকটি ক্লাশ তৈরি করব যেখানে আমরা ৩টি আলাদা আলাদা facebook ক্লাস এর জন্য অব্জেক্ট তৈরি করব।নিচের প্রোগ্রামটি দেখিঃ
public class microsoft {
public static void main(String[] args)
{
facebook ob1=new facebook(10);
facebook ob2=new facebook(10,15);
facebook ob3=new facebook(10,15,20);
ob1.show_me();
ob2.show_me();
ob3.show_me();
}
}
এখানে ৩টি আলাদা আলাদা অব্জেক্ট তৈরি হয়েছে।১ম অব্জেক্ট তৈরির সময় প্যারামিটার হিসাবে একটি ভ্যালু পাঠানো হয়েছে।২য় টিতে ২টি এবং ৩য় টিতে ৩টি ভ্যালুওই পাঠানো হয়েছে।
পরের লাইনগুলো তে খালি আমরা যেই কয়টি অব্জেক্ট তৈরি করেছিলাম তাদের প্রতিটির সাহায্যে show_me() function কে কল করা হচ্ছে।১ম অব্জেক্ট এর জন্য ১ম কন্সট্রাক্টর কল হয়েছে,২য় অব্জেক্ট এর জন্য ২য় কন্সট্রাক্টর কল হয়েছে,এবং ৩য় অব্জেক্ট এর জন্য ৩য় কন্সট্রাক্টর কল হয়েছে, এবার রান করলে নিচের মত আউটপুট দেখতে পারবেনঃ
The value of x is: 10 value of y is:0 value of z is: 0
The value of x is: 10 value of y is:15 value of z is: 0
The value of x is: 10 value of y is:15 value of z is: 20
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১২] :: জাভাতে this অপারেটর এর ব্যবহার
আসসালামু আলাইকুম,আশা করি সবাই ভাল আছেন। আজ বেশ অনেক দিন পর লিখতে বসলাম।পড়াশুনার চাপে লিখতে বস্তে পারছিলাম না।যাই হোক কাজের কথায় আশি।আজকে আমরা যে জিনিস গুলি শিখব তাহল this অপেরেটর এর ব্যবহার ।
প্রথমেই আসি this অপারেটর নিয়ে আলোচনায়। তার আগে আমরা নিচের প্রোগ্রামটি দেখিঃ
<pre>public class facebook {
int x;
int y;
int z;
facebook(int x,int y,int z)
{
x=x;
y=y;
z=z;
}
void show_me()
{
System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
}
}</pre>
এখানে facebook নামক একটি ক্লাসে কিছু কোড লিখা হয়েছে। এবার আবার নিচের কোডটি দেখুন।
<pre>
public class microsoft {
public static void main(String[] args)
{
facebook ob3=new facebook(10,15,20);
ob3.show_me();
}
}</pre>
এবার কোড টি রান করালে নিচের মত আউটপুট দেখতে পারবেঃ
The value of x is: 0 value of y is:0 value of z is: 0
আসলে আমরা যেই প্রোগ্রামটি তৈরি করেছি তার কাজ হলঃপ্রথমে facebook ক্লাস তার জন্য একটি কন্সট্রাক্টর ডিক্লায়ার করেছে। এবং কন্সট্রাক্টর এ যেই ভেরিএয়েবল গুলি আসছে তা প্রিন্ট করছে show_me() ফাংশন। আর Microsoft ক্লাস facebook ক্লাসের একটি অব্জেক্ট তৈরি করেছে। অব্জেক্ট তৈরির সময় প্যারামিটার হিসাবে কিছু ভ্যালু পাঠানো হয়েছে। পরে এই অব্জেক্ট এর সাহায্যে show_me() ফাংশন কে কল করা হয়েছে। হিসাবে আউটপুট দেখানোর কথা আমাদের যেই ভ্যালুগুলি আমরা প্যারামিটার হিসাবে অব্জেক্ট এর সাথে পাস করেছি তা কিন্তু x,y,z তিনটির ভ্যলুই ০ দেখাচ্ছে। কারন টা কি বলতে পারবেন??
আসলে এখানে facebook কন্সট্রাক্টরে আরগুমেন্ট হিসাবে যেই ভেরিয়েবল ব্যবহার করা হয়েছে আবার লোকাল ভেরিয়েবলেও একি জিনিস ব্যাবহার করা হয়েছে। তাই x=x,y=y,z=z বলতে কি বুঝানো হচ্ছে তা কন্সট্রাক্টর বুঝতে পারছেনা। তাই মান হিসাবে Garbage ভ্যালু দেখচ্ছে।
এর থেকে পরিত্রান এর উপায় হল this অপারেটর এর ব্যবহার।এবার নিচের facebook ক্লাসের প্রোগ্রামটি দেখিঃ
<pre>public class facebook {
int x;
int y;
int z;
facebook(int x,int y,int z)
{
this.x=x;
this.y=y;
this.z=z;
}
void show_me()
{
System.out.println("The value of x is: "+x + " value of y is:" +y +" value of z is: "+z );
}
}</pre>
দেখতেই পাচ্ছি যে কন্সট্রাক্টরে x,y,z এর মান লোকাল ভেরিয়েবল এ কিভাবে বসানো হয়েছে। এখানে this.x বলতে বুঝানো হয়েছে যে এই ক্লাসের x সোজা কথায় this বলতে বুঝায় এই ক্লাসের একটি রিপ্রেজেন্টেটিভ।ঠিক একি ভাবে this.y বলতে বুঝায় এই ক্লাসের y.
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৩] :: ইনহেরিটেন্স
আসসালামু আলাইকুম। কেমন আছেন সবাই। আজকে আমরা যে জিনিসটি নিয়ে আলোচনা করব তা হল জাভাতে ইনহেরিটেন্স। যেকোন অব্জেক্ট অরিয়েন্টেড প্রোগ্রামিং লাংগুয়েজেই এই জিনিসটি অনেক গুরুত্যপুর্ন।
ইনহেরিটেন্স বলতে বুঝায় উত্তরাধিকারি হওয়া। যেমন আপনি আপনার বাবার উত্তরাধিকারি।মানে আপনি চাইলে আপনার বাবার সম্পত্তি ব্যবহার করতে পারেন। ঠিক তেমনি প্রোগ্রামিং এ যখন একটি ক্লাস আরেকটি ক্লাসের সম্পত্তি(ভেরিয়েবল অথবা ফাংশন) ব্যবহার করে তখন তাকে ইনহেরিটেন্স বলে।
আগে জেনে নেই ইনহেরিটেন্স এর গুরুত্য কতটুকু।এর জন্য নিচের প্রোগ্রামটি দেখুনঃ
public class facebook {
public void who()
{
System.out.println("Welcome To Sizansoft Corporation");
}
}
এখানে facebook ক্লাস ডিক্লায়ার করা হয়েছে। এবং এর একটি who() নামে ফাংশন ও ডিক্লয়ার করা হয়েছে।এবার নিচের কোডটা দেখি।
public class microsoft {
public void who()
{
System.out.println("Welcome To Sizansoft Corporation ");
}
}
এখানে microsoft ক্লাস ডিক্লায়ার করা হয়েছে। এবং এর একটি who() নামে ফাংশন ও ডিক্লয়ার করা হয়েছে।এবার ধরুন আমাদের এরকম facebook এবং Microsoft এর মত ১০ টি ক্লাস আছে যার প্রতিটি ক্লাস এই who() ফাংশনটি আছে এবং প্রতিটি who() ফাংশন এর কাজ একিই। অর্থাৎ “I am the best IT company” বাক্যটি প্রিন্ট করা। এবার আপানাকে কেউ এসে বলল যে প্রতিটি ক্লাসের who() ফাংসন এর যে বাক্যটি প্রিন্ট করার কথা তা না করে “Welcome To Sizansoft Corporation” বাক্যটি প্রিন্ট করতে বলা হল। তাহলে চিন্তাই করতে পারছেন আপনাকে কত কস্ট করতে হবে।প্রতিটি ক্লাসের who() ফাংশন কে পরিবর্তন করতে হবে।যেটি অনেক সময় সাপেহ্ম এবং কস্ট সাধ্য। এর থেকে পরিত্রানের উপায়ই হল ইনহেরিটেন্স।এর জন্য আমরা নিচের ক্লাস টি লহ্ম্য করিঃ
public class apple {
public void who()
{
System.out.println("Welcome To Sizansoft Corporation ");
}
}
এখানে apple নামক ক্লাস ডিক্লায়ার করা হয়েছে।এবং এর ভিতর who() নামক ফাংশন ডিক্লায়ার করা হয়েছে।
এবার আগে আনাদের লেখা facebook এবং Microsoft ক্লাসের কিছু পরিবর্ত্ন আনি।
public class facebook extends apple{
}
public class microsoft extends apple {
}
অর্থাৎ আমরা শুধু who() নামক ক্লাস টা সরিয়ে দিয়েছি এবং extends কিওয়ার্ড এর সাহায্যে apple ক্লাস কে ইনহেরিট করা হয়েছে।এখানে বলে রাখা ভাল যে ক্লাসকে ইনহেরিট করা হয় তাকে বলে parent class আর যে ইনহেরিট করে তাকে বলে child class এখানে apple হল parent class facebook, microsoft হল child class। এবার আমরা আরেকটি ক্লাস তৈরি করব google নামে। দেখে নেই গুগল ক্লাসের কোডঃ
public class google {
public static void main(String[] args)
{
facebook fb=new facebook();
microsoft ms=new microsoft();
fb.who();
ms.who();
}
}
এখানে গুগল ক্লাসে facebook Microsoft ক্লাসের আলাদা আলাদা অব্জেক্ট তৈরি করা হয়েছে।পরে ওই অব্জেক্ট এর সাহায্যে who() ফাংশনকে কল করা হয়েছে। খেয়াল করলে দেখবেন যে Microsoft অথবা facebook এই দুটির কোনটিতেই কিন্তু who() ফাংশনটি লেখা নেই।তাও প্রোগ্রামটি সঠিক আউটপুট দিচ্ছেঃ
Welcome To Sizansoft Corporation
Welcome To Sizansoft Corporation
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৪] :: গ্রাফিকাল ইউসার ইন্টারফেস এর ছোট একটি প্রোগ্রাম
আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন।অনেক দিন পর আবার লিখতে বসলাম।আমার ইচ্ছা ছিল আজকে জাভাতে পলিমরফিজম নিয়ে লেখা লেখি করব কিন্তু পরে চিন্তা করলে আগে একটু গ্রাফিকাল ইউসার ইন্টারফেস নিয়ে আলোচনা করি। তাই আজকে আমি গ্রাফিকাল ইউসার ইন্টারফেস নিয়ে একটি ছোট এবং খুব সহজ একটি প্রোগ্রাম দেখাবো এবং আলোচনা করব।
প্রথমেই গ্রাফিকাল ইউসার ইন্টারফেস কি তা নিয়ে একটু বকর বকর করি।নিচের ছবিটির দিকে তাকাই এটা একটি সফটওয়্যারে গ্রাফিকাল ইউসার ইন্টারফেসঃ
এই যেমন ধরুন আপনি ক্রস বাটনে ক্লিক করলেন তাহলে সঙ্গে সঙ্গে software টি বন্ধ হয়ে যাবে।কারন এটা ক্রস বাটনের সাথে কোড এর একটা লিঙ্ক করা আছে যে ক্রস বাটনে ক্লিক করার সাথে সাথে প্রোগ্রামটি বন্ধ করার কোডটি এক্সিকিউট হবে।
জাভাতে যেকোন গ্রাফিকাল জিনিস যেমন বাটন,টেক্সটবক্স ইত্যাদি যখন তৈরি করবেন তখন আমাদের কষ্ট করে তৈরি করা লাগবেনা। জাভা আমাদের জন্য আগে থেকেই তৈরি করে রেখছে আমাদের শুধু তা ইম্পোর্ট করলেই হবে। মজা না??? আসলেই মজা। আসলে জাভাতে swing নামে একটি লাইব্রেরি আছে। যেখানে আগে থেকে সকল গ্রাফিকাল কম্পোনেন্ট এর কোড লেখা আছে।আমাদের শুধু swing কে ইম্পর্ট করে আমাদের যে যে কম্পনেন্ট গুলো লাগবে তা ব্যবহার করলেই হবে।
আসুন আমরা একটি খুব ছোট এবং খুবই সহজ একটি প্রোগ্রাম দেখি।প্রোগ্রামটার কাজ হল ২টা সংখা ইনপুট নিবে এবং তাদের আউটপুট দেখাবে।কিন্তু ইনপুট আর আউটপুট এর কাজ পুরোটা হবে গ্রাফিকাল ইউসার ইন্টারফেসেঃ
import javax.swing.*;
public class google {
public static void main(String[] args)
{
String fn=JOptionPane.showInputDialog("Enter your 1st number");
String sn=JOptionPane.showInputDialog("Enter your 2nd number");
int x=Integer.parseInt(fn);
int y=Integer.parseInt(sn);
int z=x+y;
JOptionPane.showMessageDialog(null,"Your reslut is:" +z);
}
}
এখানে একেবারে শুরুতে swing কে ইম্পর্ট করা হয়েছে।পরে মেইন ফাংশন এর ভিতরে ২টি নাম্বার ইনপুট হিসাবে নেওয়া হয়েছে। কিন্তু খেয়াল করলে দেখবেন যে আমরা ২ স্ট্রিং ইনপুট হিসাবে নিয়েছি। এবার আসুন এদেরকে ইন্টিজারে কনভার্ট করি।ইন্টিজারে কনভার্ট শেসে এদেরকে যোগ করে এর মান z এর ভিতর রাখা হল।সবশেষে একে আউটপুট করা হল।
এখন রান করলে একটি উইন্ডো আসবে.
এখানে আপনি আপনার যে নাম্বারটি দিতে চান দেন তারপর ok তে ক্লিক করলে আরেকটি উইন্ডো আসবে.
আরেকটি নাম্বারদিন এবং ওকে করুন। দেখবেন তাদের ফলাফল আউটপুট এ দেখাচ্ছে
আজ এ পর্যন্তই। কি অবাক হচ্ছেন আমি কেন কোডটার পুরোপুরি ব্যাখ্যা না দিয়ে টিউন্টি শেষ করছি।আসলে আমার উদ্দেশ্য ছিল আজকে শুধু গ্রাফিকাল ইউসার ইন্টারফেসে একটি খুব সোজা কোড করে দেখানো। সামনে গ্রাফিকাল ইউসার ইন্টারফেস নিয়ে অনেক বেশি বিস্তারিত আলোচনা করব।
অনুশীলনিঃ
১)২ টি সংখার বিয়োগফল গ্রাফিকাল ইউসার ইন্টারফেসে দেখান।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৫] :: গ্রাফিকাল ইউসার ইন্টারফেস এর ছোট একটি প্রোগ্রাম-২
আসসালামু আলাইকুম।আশা করি সবাই ভাল আছেন।অনেকদিন পর আবারো লিখতে বসলাম।আজকে বেশ সহজ কিছু নিয়ে আলোচনা করতে চাচ্ছি। একটা জিনিস খেয়াল করলে দেখবেই একি জাভার কোড উন্ডোজে দেখতে একরকম লাগে ,উবুন্টুতে দেখতে একরকম লাগে আবার ম্যাকিন্টোশ এ দেখতে একরকম লাগে। এটা কেন হয় বলতে পারবেন? আসলে জাভাতে চাইলেই এই জিনিসটি করে দেওয়া যায়।কিন্তু আমাদের আগের পর্বের টিউটরিয়ালটির কোড টি সব অপেরেটিং সিস্টেমে দেখতে একি রকম।মানে উন্ডোজে দেখতে যেমন উবুন্টুতেও দেখতে একি রকম।
আসুন নিচে এমন একটি জাভার কোড দেখিঃ
<pre>import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
public class google extends JFrame {
private JLabel item1;
public google()
{
super("The title");
setLayout(new FlowLayout());
item1=new JLabel("Hello google !!!");
item1.setToolTipText("I love you google");
add(item1);
}
}
প্রথমেই javax.swing.JFrame কে ইম্পর্ট করা হয়েয়েছে। এটা জাভার গ্রাফিকাল ইউজার ইন্টারফেস এর একটি লাইব্রেরি। মুলত এটি ব্যবহার এর কারন হল একটি কন্টেন্ট পেইন(content pane) তৈরি করা যার মধ্যে বাকি কন্টেন্ট গুলো যোগ করা যাবে।পরের লাইনে আরেকটি লাইব্রেরি ইম্পর্ট করা হয়েছে javax.swing.JLabel এর সাহায্যে আপনি যেকোন টেক্সট আপনার ফ্রেইম এ যোগ করতে পারবেন। আসলে উপরের দুটি ফাইল ইম্পর্ট না করে শুধু javax.swing.*; ইম্পর্ট করলেই হয়ে যেত। এক্ষেত্রে পুরো swing লাইব্রেরি ইম্পর্ট হয়ে যেত।পরের লাইনে ইম্পরট করা হয়েছে java.awt.FlowLayout।এর দ্বারা বুঝায় যে আমরা আমাদের কন্টেন্ট গুলো একের পর এক যোগ করতে থাকব।মানে কন্টেন্ট গুলো বাম দিক থেকে ডানদিকে যেতে থাকবে।অনেকটা Microsoft Word এর মত। Microsoft word এ কি হয় ? আমরা লেখা শুরু করি তা বামদিক থেকে ডান দিকে যেতে থাকে।যখন লাইন শেষ হয়ে যায় তখন আবার পরের লাইন থেকে আবার বাম থেকে ডানে যেতে থাকে। এখানেও ঠিক তাই ই। তারপরের লাইনে Google ক্লাস JFrame ক্লাস কে ইনহেরিট করেছে।আমরা জানি যে কোন ক্লাস কে ইনহেরিট করার জন্য extends অপেরেটর ব্যবহার করা হয়।
পরের লাইনে item1 নামক একটি Jlabel ভেরিয়েবল ডিক্লায়ার করা হয়েছে।সাধারনত কোন টেক্সটকে ডিক্লায়ার করার জন্য jLabel ব্যবহার করা হয়।পরে google ক্লাস এর কন্সট্রাক্টর তৈরি করা হয়েছে। কন্সট্রাক্টরের ১ম লাইনে super() ফাংশন দ্বারা টাইটেল ঠিক করা হয়েছে। তারপরের লাইনে লে-আউট সেট করা হয়েছে।তারপর এর লাইনে আমরা যে টেক্সটি ইম্পর্ট করতে চাই তা করা হয়েছে। তারপরের লাইনে আরেকটি টেক্সট ইম্পর্ট করা হয়েছে কিন্তু এটি তখনই দেখাবে যখন মাউস এর কার্সরটা আগের টেক্সট লাইনের উপর রাখা হবে।সবার শেষে add() দ্বারা item1 টি আমাদের কন্টেন্ট পেইনে যোগ করা হয়েছে।
এবার নিচের কোডটা দেখুনঃ
<pre>import javax.swing.JFrame;
public class apple {
public static void main(String[] args)
{
google g=new google();
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g.setVisible(true);
g.setSize(250, 100);
}
}</pre>
তারপর apple ক্লাসে google ক্লাসের একটি অব্জেক্ট তৈরি করা হয়েছে।আমরা পরের লাইনে একটি অতি গুরুত্বপুর্ন ফাংশন ডিক্লায়ার করা হয়েছে এর সাহায্যে আপনি আপনার প্রোগ্রামটা বন্ধ করতে পারবেন এটা না লিখলে আপনি আপনার প্রোগ্রামটা বন্ধ করতে পারবেন না।পরের লাইনে আপনার প্রোগ্রামটার উইন্ডো সাইজ কত হবে তা নির্ধারন করা হয়েছে।সবার শেষে visible দেওয়া হয়েছে।
এটা অনেক সোজা একটা কোড নিয়ে কথা বললাম ।আগামী পর্বে আরো কিছু নিয়ে আলোচনা করব। ভাল থাকবেন সবাই ।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৬] ::পলিমরফিজম
আসসালামু আলাইকুম।আশা করি সবাই অনেক অনেক ভাল আছেন।যাই হোক বেশি কথা না বাড়িয়ে আমরা আজ শুরু করি।আজকে আমরা যেই জিনিসটি নিয়ে কথা বলব তা হল পলিমরফিসম(Polymorphism)।এটা শুধু জাভা না যেকোন অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ অনেক গুরুত্বপুর্ন একটি বিষয়।
সাধারনত পলিমরফিজম কথাটির অর্থ হল বহুরুপতা।যেমন ধরুন কার্বণ এর ২টি রুপ আছেঃ গ্রাফাইট এবং হীরক। কিন্তু ২টি রুপই কিন্তু আহ্মরিক অর্থে কার্বণ।
ঠিক তেমনি প্রোগ্রামিং ভায়ায়ও পলিমরফিজম বলতে বুঝায় একটি জিনিস(ফাংশন) এর কয়েকটি রুপ।
সহজ বাংলায় বললে দাঁড়ায় আমারা একি নামের ফাংশন অনেক গুলো ক্লাসে ব্যবহার করতে পারব কিন্তু এদের প্রত্যেক এর কাজ ভিন্ন ভিন্ন হবে।
কি আমার কথা মাথার উপর দিয়ে যাচ্ছে? আসুন তাহলে জটপট করে একটি ছোট কোড দেখে ফেলি তাহলে আমাদের সব কনফিউশন দূর হয়ে যাবে।
Apple class:
</pre>
public class apple {
public void printme(){
System.out.println("I love Apple ");
}
}
<pre>
Mirosoft clas
</pre>
public class Microsoft extends apple {
public void printme(){
System.out.println("I love Sizansoft ");
}
}
<pre>
Facebook class
</pre>
public class facebook extends apple {
public void printme(){
System.out.println("I love Facebook ");
}
}
<pre>
Google class
</pre>
public class google {
public static void main(String[] args) {
apple ap1=new Microsoft();
apple ap2=new facebook();
ap1.printme();
ap2.printme();
}
}
<pre>
উপরের উদাহরনে “apple” হল প্যারেন্ট ক্লাস আর “microsoft” এবং “facebook” হল চাইল্ড ক্লাস।তিনটি ক্লাসেরই একি নামের ফাংশন রয়েছে। পরবর্তীতে আমরা “google” ক্লাস থেকে “apple” ক্লাসের টাইপের “microsoft” এবং “facebook” ক্লাসের ২টি অব্জেক্ট তৈরী করলাম। এখন যখন আমরা এই অবজেক্ট গুলোর সাহায্যে “printme” ফাংশঙ্কে কল করলাম তখন আমরা দেখতে পেলাম যে তা যথাক্রমে “microsoft” এবং “” ক্লাসের “facebook” ফাংশনকে কল করছে। অর্থাৎ এখানে কার্বণ হল “apple” ক্লাস এর “printme” ফাংশন আর গ্রাফাইট এবং হীরক হল যথাক্রমে “google” এবং “facebook” ক্লাসের “printme” ফাংশন। এখানে আমরা দেখতে পেলাম যে একই নামের ৩টি ফাংশন রয়েছে ৩টি ক্লাসে এবং ফাংশনগুলোর কাজ ও ভিন্ন ভিন্ন। এই জিনিস টিকেই বলা হয় পলিমরফিজম।
ব্যাসিক জাভা প্রোগ্রামিং [পর্ব-১৭] ::শেষ কথা
বন্ধুরা আমরা এই বইটিতে আপনাদের জাভা সম্পর্কে ব্যাসিক ধারনা দেওয়ার চেস্টা করেছি।প্রোগ্রামিং ল্যাংগুয়েজের জগত টা বিষাল।যেটা এই একটা বইয়ের মধ্য দেওয়া সম্ভব নয়।তো আমরা আপনাদের দোয়ায় আরো চেস্টা করব।আপ্নারা আমাদের সাথেই থাকুন......আল্লাহ হাফেয____
শিহাব সাহারিয়ার সিজান
সিনিয়র সফটওয়্যার ডেভেলপার ও প্রোগ্রামার
সিজান্সফট কর্পোরেশন
For More Visit….__
http://www.facebook.com/sihabsahariar.sizansarkar
এতে সদস্যতা:
পোস্টগুলি (Atom)