আসসালামু আলাইকুম আশা করি সবাই ভাল আছেন। আজকে আমি জাভার একটি অত্যন্ত গুরুত্যপুর্ন জিনিস নিয়ে আলাপ আলোচনা করব,তা হচ্ছে অবজেক্ট অরিয়েন্টেড কন্সেপ্ট।
এই পর্বে আমি তেমন ভিতরে যাবনা। শুধু ব্যাসিক কিছু জিনিস নিয়ে আলাপ আলোচনা করব।
আগেই জেনে নেই অবজেক্ট কি জিনিস। অবজেক্ট হল অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং এর পিলার বা খুটি। যদি অবজেক্ট এর ধারনা আমাকে বলতে বলেন তাহলে আমরা প্রত্যেকেই এক এক টা অবজেক্ট।আমরা মানুষ,গাছপালা ,সকল প্রানী, সব জড় বস্তু সবাই এক এক টা অবজেক্ট।কিন্তু আমরা এবং যতগুলো উদাহরন দিলাম সবই হল বাস্তব জীবনের উদাহরন(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 করতে পারবে। আর প্রোটেক্টেড শুধু মাত্র যেই সকল ক্লাস এই ক্লাস্কে ইনহেরিট করবে তারাই ব্যবহার করতে পারবে।
কি?? বুঝতে সমস্যা হচ্ছে??? চিন্তার কোন কারন নেই সামনে এগুলো সব নিয়ে বিশদ আলোচনা করব। তখন সব কিছু পরিস্কার হয়ে যাবে।
আজ এ পর্যন্তই।সবাই ভাল থাকবেন।
আমি wahid63। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 16 টি টিউন ও 40 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
ভাই এখানে System টা কি ? এবং out টা কি একটু বলবেন? আগাম শুভেচ্ছা রইলো।