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

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

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

প্রসিডিউরাল (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) ।