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

পলিমরফিজম (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

রবিবার, ১৯ ফেব্রুয়ারী, ২০১৭

জাভা প্রোগ্রাম এর উপাদান সমূহ

জাভা প্রোগ্রাম এর উপাদান ঃ

এবার তাহলে মূল বিষয়, সিনট্যাক্স নিয়ে কথা বলা যাক । আপনি যদি সি বা অন্য কোন প্রোগ্রামিং ভাষা আগে থেকে জেনে থাকেন তাহলে জানেন যে , একটি প্রোগ্রাম এর দুটি জিনিস আবশ্যক । ফাংশন এবং ডেটা । সি এর মত জাভাতে একটি ফাইল তৈরী করতে হবে যার এক্সটেন্সান হবে *.java ।
উদাহরণস্বরূপ   HelloWorld.java ।

ফাংশন এবং ডেটা এর সঙ্গে একটি জাভা প্রোগ্রাম এ নিচের উপাদান গুলো থাকে ঃ-

  • প্যাকেজ ডিক্লিয়ারেশন(Package Declaration) ,
  • ইমপোর্ট স্টেটমেন্ট (Import Statement),
  • টাইপ ডিক্লারেশন (Type declaration)
    • ফিল্ডস (Fields)
    • মেথডস (Methods)
এখন আমরা একটি জাভা প্রোগ্রাম দেখে নেই ।



এই কোডটির সুরুতেই রয়েছে প্যাকেজ ডিক্লিয়ারেশন (Package Declaration) ।

আমরা কম্পিউটার এ নানা ধরনের ফাইল বিভিন্ন ভাবে সাজিয়ে রাখি । যেমন Movie Folder এ ছিনেমা রখি আবার আমরা সাব ফোল্ডার ও করি । যেমন ঃ হিন্দি মুভি , বাংলা মুভি ইত্যাদি । জাভা তে  প্যাকেজ  বলতে এই ধারনাকেই বুঝি । একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফটওয়ারে শত শত বা হাজার হাজার ক্লাস থাকতে পারে । এজন্য প্যাকেজ ডিক্লিয়ারেশন এর মাধ্যমে একই রকম ক্লাস গুলো আলাদা আলাদা প্যাকেজ এ  রাখা হয় ।

প্যাকেজ এর নাম ছোট  হাতের (Lowercase letter ) লিখতে হয় ।

বিভিন্ন সফটওয়ারে কোম্পানি গুলো তাদের প্যাকেজ নেম সাধারণত তাদের ডোমেইন নেম কে উল্টো করে লেখে । যেমন ঃ example.com কে com.example আকারে লিখে ।

প্রোগ্রাম এর দ্বিতীয় লাইনটি হলো ইমপোর্ট স্টেটমেন্ট  (Import Statement)।

অন্যকোন প্যাকেজ এর ক্লাস যদি এই প্রগ্রামটিতে দরকার হয় তাহলে সেটি এভাবে ইমপোর্ট  করা যায়। এটি সি প্রগ্রামিং এর ইনক্ল ুড (#include) স্টেটমেন্ট এর মত।
এর পরের লাইন টি হল টাইপ ডিক্লারেশন (Type declaration) ।

জাভাতে একটি টাইপ একটি ক্লাস (class) অথবা ইন্টারফেস(Interface) অথবা এনাম (enum) হতে পারে । ক্লাস এর ক্ষেত্রে class কীওয়ার্ড  লিখে  একটি নাম দিতে হয় । এরপর ওপেনিং কারল্ব্রেকেট এবং ক্লোজ কারল্ব্রেকেট  দিয়ে শেষ করতে হয়। এখানে অতিরিক্ত একটি  public কীওয়ার্ড  দেখা যাচ্ছে । এখন শুধু এতটুকু মনে রাখুন । পরবর্তী এই টা নিয়ে আলোচনা করা হবে ।

এর পরে রয়েছে ফিল্ড ডিক্লারেশন (Fields declaration) ।

আমরা যে ভ্যারিয়েবল ডিক্লেয়ার করি সেগুলো ।

protected final String Hello = "Value"; 

এর পরে রয়েছে একটি মেথড (Method) ।

সি বা অন্যান্য প্রগ্রামিং ভাষায় যাকে ফাংশন কিংবা সাব্রুটিন (Subroutine) বলা হয়, জাভা তে একে মেথড (Method) বলা হয় । এদের মধ্যে বিশেষ কোন পার্থক্য নেই । শুধু জাভাতে ক্লাস এর মধ্যে লেখা হয় আর অনন্যা প্রসিডিউরাল (Procedural) প্রোগ্রামিং এ ক্লাস এর ধারণা নেই ।

এখানে মেথড টি হচ্ছে 

public static void main(String[] args){
                                                             
}

একটি জাভা প্রোগ্রাম মূলত কত গুলো ধারাবাহিক ইন্সট্রাকশন (Instruction) এর তালিকা।
এগুলো নিদিষ্ট অর্ডার (Order) এ এক্সিকিউট হয় । সেক্ষেত্রে এই ইন্সট্রাকশন গুলো রান করার জন্য একটি এন্ট্রি পয়েন্ট থাকতে হয় । মেইন মেথড হচ্ছে সেই এন্ট্রি পয়েন্ট যেখান থেকে কোড রান করা সুরু করে। এটি মূলতও একটি প্রচলিত রীতি (Convention) । 
অনেক গুলি প্রগ্রামিং ভাষার এই কনভেনশন টি রয়েছে ।




শনিবার, ১৮ ফেব্রুয়ারী, ২০১৭

আপনি শিখেন এবং অন্যকে শিখতে সাহায্যে করেন .: আপনি শিখেন এবং অন্যকে শিখতে সাহায্যে করেন.

অবজেক্ট(Object)
--------------------------
যেহেতু জাভা একটি object oriented programming ভাষা সেহেতু অবজেক্ট কী জানতে হবে । অবজেক্ট এর আভিধানিক অর্থ হল বস্তু , যাকে স্পর্শ করা যায় , যা স্থান দখল করে । তবে মানুষ হিশাবে আমাদের কল্পনা সক্তি অনেক । আমরা অনেক কিছু মনে মনে কল্পনা করে নিতে পারি । মনে করুন একটি বাইসাইকেল । বাইসাইকেল এর কথা মনে করলে এর একটা চিত্র চলে আসে । আমরা এর বৈশিষ্ট্য গুলো জানি , যেমন ঃ এর দুইটি প্যাডেল আছে , বসার জন্য সিট আছে , দুইটি ব্রেক আছে ইত্যাদি । অর্থাৎ এর কাজ গুলো আমরা জানি । যেমন ঃ প্যাডেল ঘুরালে এর চাকা ঘুরে , ব্রেক কষলে থেমে যায় ইত্যাদি । দেখা যাছে যে আমরা এর আচরণ এবং অবস্থা আলাদা করতে পারি । এই আচরণ এবং অবস্থা নিয়ে বাইসাইকেল একটি অবজেক্ট।

আমরা যদি আমদের কল্পনাকে আর একটু বারিয়ে নিয়ে বলি বাইসাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট বা একটি প্রোগ্রাম যা কিনা কম্পিউটার এ চলে ।

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

ক্লাস(class)
--------------------------
মনে করি আপনি থাকার জন্য একটি বহুতল বাড়ি তৈরি করতে চান । এর জন্য প্রথমে আপনার মাথায় যে চিন্তা গুলো আসবে, সে গুলো হলে এটি কত বড় হবে , কয়টা ফ্ল্যাট হবে , ফ্লাতগুলো কত বর্গফুট হবে ইত্যাদি । এগুলো ঠিক হয়ে গেলে আপনি ছিন্তা করবেন আরও জটিল বিষয় নিয়ে । ওয়ারিং কেমন হবে, টাইলস কেমন বসাবেন , পানির লাইন কেমন হবে ইত্যাদি ।

অর্থাৎ বাড়ি বানানোর আগে আপনাকে সব কিছু নির্ধারণ করে ফেলতে হবে । এরপর বিষয় গুলো কথায়ও লিপিবদ্ধ করবেন । এর একটি নাম আছে । একে বলা হয় ব্লুপ্রিন্ট(blueprint)।

এক্ষেত্রে বাড়িটি হচ্ছে অবজেক্ট আর এই অবজেক্ট তৈরির আগে যে ব্লুপ্রিন্ট(blueprint) তৈরি করা হয়েছে তাহলো ক্লাস(class) ।

আপনি শিখেন এবং অন্যকে শিখতে সাহায্যে করেন .: How to Convert PSD TO HTML5, CSS3 step-by-step , R...

অবজেক্ট(Object)
--------------------------
যেহেতু জাভা একটি object oriented programming ভাষা সেহেতু অবজেক্ট কী জানতে হবে । অবজেক্ট এর আভিধানিক অর্থ হল বস্তু , যাকে স্পর্শ করা যায় , যা স্থান দখল করে । তবে মানুষ হিশাবে আমাদের কল্পনা সক্তি অনেক । আমরা অনেক কিছু মনে মনে কল্পনা করে নিতে পারি । মনে করুন একটি বাইসাইকেল । বাইসাইকেল এর কথা মনে করলে এর একটা চিত্র চলে আসে । আমরা এর বৈশিষ্ট্য গুলো জানি , যেমন ঃ এর দুইটি প্যাডেল আছে , বসার জন্য সিট আছে , দুইটি ব্রেক আছে ইত্যাদি । অর্থাৎ এর কাজ গুলো আমরা জানি । যেমন ঃ প্যাডেল ঘুরালে এর চাকা ঘুরে , ব্রেক কষলে থেমে যায় ইত্যাদি । দেখা যাছে যে আমরা এর আচরণ এবং অবস্থা আলাদা করতে পারি । এই আচরণ এবং অবস্থা নিয়ে বাইসাইকেল একটি অবজেক্ট।

আমরা যদি আমদের কল্পনাকে আর একটু বারিয়ে নিয়ে বলি বাইসাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট বা একটি প্রোগ্রাম যা কিনা কম্পিউটার এ চলে ।

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

ক্লাস(class)
--------------------------
মনে করি আপনি থাকার জন্য একটি বহুতল বাড়ি তৈরি করতে চান । এর জন্য প্রথমে আপনার মাথায় যে চিন্তা গুলো আসবে, সে গুলো হলে এটি কত বড় হবে , কয়টা ফ্ল্যাট হবে , ফ্লাতগুলো কত বর্গফুট হবে ইত্যাদি । এগুলো ঠিক হয়ে গেলে আপনি ছিন্তা করবেন আরও জটিল বিষয় নিয়ে । ওয়ারিং কেমন হবে, টাইলস কেমন বসাবেন , পানির লাইন কেমন হবে ইত্যাদি ।

অর্থাৎ বাড়ি বানানোর আগে আপনাকে সব কিছু নির্ধারণ করে ফেলতে হবে । এরপর বিষয় গুলো কথায়ও লিপিবদ্ধ করবেন । এর একটি নাম আছে । একে বলা হয় ব্লুপ্রিন্ট(blueprint)।

এক্ষেত্রে বাড়িটি হচ্ছে অবজেক্ট আর এই অবজেক্ট তৈরির আগে যে ব্লুপ্রিন্ট(blueprint) তৈরি করা হয়েছে তাহলো ক্লাস(class) ।