সোমবার, ১৩ মার্চ, ২০১৭

পলিমরফিজম (Polymorphism)

পলিমরফিজম অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি বহুল ব্যবহৃত কৌশল । এই শব্দের সহজ মানে হচ্ছে যার একাধিক রুপ আছে অর্থাৎ বহুরুপিতা ।

ধরা যাক,
  public class Liquid {

public void swirl(){

System.out.println("Swirling Liquid");
}
}

এর একটি অবজেক্ট তৈরি করতে চাইলে  new key word ব্যাবহার করে তা একটি ভ্যারিয়েবল এ রাখতে হবে ।

Liquid myFavoriteBeverage = new Liquid();

এখানে myFavoriteBeverage হচ্ছে একটি ভ্যারিয়েবল যা Liquid অবজেক্ট এর রেফারেন্স ।

আমরা ইনহেরিটেন্স  পড়ার সময় Is-A সম্পরকে জেনে এসেছি । জাভা প্রোগ্রামিং পলিমরফিজম সাপোর্ট করায় myFavoriteBeverage ভ্যারিয়েবল এ   Is-A সম্পর্কিত যেকোনো টাইপ রাখতে পারি।
যেমনঃ

Liquid myFavoriteBeverage = new Coffee();
Liquid myFavoriteBeverage = new Milk();

এখানে   Coffee এবং Milk হচ্ছে Liquid এর সাবক্লাস এবং Liquid হচ্ছে সুপারক্লাস ।



সোমবার, ৬ মার্চ, ২০১৭

অবজেক্ট কম্পোজিশন(Object composition)

অবজেক্ট কম্পোজিশন(Object composition)

আমি আগের ব্লগ এ ইনহেরিটেন্স কি তার একটি সংক্ষিপ্ত বিবরণ দিয়েছিলাম । ইনহেরিটেন্স নিয়ে আলোচনা করতে গেলে আরও একটি বিষয় চলে আছে , তাহলো অবজেক্ট কম্পোজিশন(Object composition) । অর্থাৎ অনেক গুলো অবজেক্ট একটি আর একটি অবজেক্ট এর মধ্যে সংযোগ স্থাপন করে একটি প্রোগ্রাম লিখা যায় । আরও গভিরে যাওয়ার আগে Is-A এবং Has-A নিয়ে কথা বলা যাক ।

যেহেতু আমরা জাভা প্রোগ্রাম শিখছি, তো আমরা যতোই এর ভিতরে প্রবেশ করবো আমরা জানতে পারবো যে অবজেক্ট কোন স্বতন্ত্র কম্পোনেন্ট নয় বরং একটি অবজেক্ট অন্য অবজেক্ট এর সঙ্গে সম্পর্ক মেনে চলে । এই সম্পর্ক দুই ধরনের হয়ে থাকে Is-A এবং Has-A । আমরা যদি বাস্তব জীবন থেকে এর উদাহরণ দেই তাহলে আমরা বলতে পারি যে, বিড়াল একটি প্রাণী , গাড়ির চাকা আছে ।
A cat is an Animal (বিড়াল একটি প্রাণী) .
A car has wheels(গাড়ির চাকা আছে).
অবজেক্ট ওরিয়েন্টেড  ধারণা মতে যখন দুটি অবজেক্ট এর মধ্যে Is-A সম্পর্ক দেখা যাবে তখন তাকে ইনহেরিটেন্স বলবো । আর যখন Has-A সম্পর্ক দেখবো তখন তাকে অবজেক্ট কম্পোজিশন(Object composition) বলবো ।

continue....
happy coding
mahadi hasan 

শনিবার, ৪ মার্চ, ২০১৭

ইনহেরিটেন্স (Inheritance)

ইনহেরিটেন্স (Inheritance)

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

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ  ইনহেরিটেন্স  বলতে এই ঘটনাকেই বুঝায় । এতে করে আমরা একই কোড পুনরায় ব্যাবহার করে নতুন নতুন ফাংশনালিটি যোগ করতে পারি ।

continue.................

বুধবার, ১ মার্চ, ২০১৭

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর প্রয়োজনীয়তা

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর প্রয়োজনীয়তা :

প্রসিডিউরাল (procedural ) বা সি প্রোগ্রামিং ভাষার বেশ কিছু অসুবিধা আছে । আমরা চাইলে প্রোগ্রাম কে পুনরায় ব্যাবহার যোগ্য করতে পারি না , কম্পোনেন্ট তৈরী করতে পারি না। সব থেকে বড় অসুবিথা হল একটি প্রোগ্রাম এর ফাংশন কে অন্য প্রোগ্রাম এ ব্যাবহার করতে পারি না । কারণ ফাংশন গুলো সাধারণত গ্লোবাল (Global) ভ্যারিয়েবল এবং অন্যান্য ফাংশন এর উপর নির্ভর করে ।
এই ভাষাগুলো হাই লেভেল অ্যাবস্ট্রাক্টশন (high level abstraction ) এর উপর ঠিক মানানসই নয় ।
সি প্রোগ্রামিং ভাষা যে  কম্পোনেন্ট  গুলো ব্যাবহার করে তা লো-লেভেল , যা দিয়ে একটি বাস্তব জগতের সমস্যাকে সহজে চিত্রায়ন করা যায় না । কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (customer relationship management), CRM অথবা ফুটবল খেলাকে সহজে সি দ্বারা চিত্রায়ন করা সম্ভব হয় না ।

১৯৭০ সালে যুক্তরাষ্ট্র প্রতিরক্ষা অধিদপ্তর একটি টাস্কফোর্স তদন্থ করে বের করার চেস্টা  করে যে কেন আইটি বাজেট নিয়ন্ত্রণ করা যায় না । সেগুলর মধ্যে ৮০% ব্যাবহার করা হয় সফটওয়্যারে এবং ২০% করা হয় হার্ডওয়্যার এ । এই ৮০% এর মধ্যে , ৮০% ব্যাবহার করা হয় শুধুমাত্র সফটওয়্যার মেইনটেইন্স এর ক্ষেত্রে । আর বাকি ২০% ব্যাবহার করা হয় সফটওয়্যার বানানোর ক্ষেত্রে । সফটওয়্যার সহজে ব্যাবহার করা যায় এবং  এর ইন্ট্রিগ্রিটি নষ্ট হয় না । একই সাথে হার্ডওয়্যার এর একটি বিশেষ অংশ নষ্ট হয়ে গেলে তা সহজে আলাদা করা যায় এবং নতুন একটি দিয়ে পরিবর্তন করা যায় । কিন্তু সফটওয়্যার এর ক্ষেত্রে তা সম্ভব হয় না, একটি প্রোগ্রাম এর জন্য অন্য প্রোগ্রাম এর সমস্যা তৈরী হয় ইত্যাদি ।

এই সমস্যা সমাধাণ করার জন্য টাস্কফোর্স একটি প্রস্তাব করে যে, সফটওয়্যার ও হার্ডওয়্যার এর মত হয়া উচিৎ । প্রগ্রামিং ভাষা পরিবর্তন করে অ্যাডা (Ada) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা ব্যাবহার করে ।


OOP concept

Mahadi Hasan