• ভাষা:
  • English
  • বাংলা
হোম > সহজ ভাষায় প্রোগ্রামিং সি/সি++
লেখক পরিচিতি
লেখকের নাম: আহমেদ ওয়াহিদ মাসুদ
মোট লেখা:৯৮
লেখা সম্পর্কিত
পাবলিশ:
২০১৫ - ফেব্রুয়ারী
তথ্যসূত্র:
কমপিউটার জগৎ
লেখার ধরণ:
‘সি’
তথ্যসূত্র:
প্রোগ্রামিং
ভাষা:
বাংলা
স্বত্ত্ব:
কমপিউটার জগৎ
সহজ ভাষায় প্রোগ্রামিং সি/সি++
বর্তমান বিশ্বে প্রোগ্রামিংয়ের ফিল্ডে সবচেয়ে জনপ্রিয় কনসেপ্ট হলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programing ev OOP)। এটি একটি স্ট্রাকচার বিশেষ, যা ফলো করে কোন ল্যাঙ্গুয়েজ কাজ করে। সি থেকে আপগ্রেড করে সি++ করা হয়েছে। এই আপগ্রেডের মাধ্যমে অনেক নতুন ফিচার অ্যাড করা হয়েছে, যা আগেও বলা হয়েছে। যেমন- নতুন কিওয়ার্ড, লাইব্রেরি ফাংশন ইত্যাদি। কিন্তু মূল যে কারণে নতুন একটি ল্যাঙ্গুয়েজ তৈরি করা হয়েছে, তা হলো এই ডাবল ওপি কনসেপ্ট। সি-এর সাথে সি++ এর মূল পার্থক্যই হলো সি++ ল্যাঙ্গুয়েজ ডাবল ওপি কনসেপ্টের ওপর তৈরি। তাই সি++ ল্যাঙ্গুয়েজ নিয়ে আলোচনা করার আগে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং নিয়ে আলোচনা করা হলো।
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং : একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামের মূল লক্ষ্য কোডের ভেতর অবজেক্ট তৈরি করা, যার কিছু নির্দিষ্ট বৈশিষ্ট্য এবং মেথড থাকবে। উল্লেখ্য, সি-তে যাকে ফাংশন বলা হয়, সি++ ও জাভাতে তাকে মেথড বলা হয়। সি++ এ যখন মডিউল ডিজাইন করা হয়, তখন সমগ্র প্রোগ্রামের ক্ষেত্রকে বিভিন্ন অবজেক্টের কালেকশন হিসেবে বিবেচনা করা হয়। উদাহরণস্বরূপ, একটি গাড়িকে একটি অবজেক্ট বলা যায়, যেখানে গাড়িটির কালার, দরজার সংখ্যা ইত্যাদি হলো এর বৈশিষ্ট্য এবং গাড়িটির এক্সেলারেশন, ব্রেক ইত্যাদি হলো এর মেথড।
অবজেক্ট ওরিয়েন্ডেট প্রোগ্রামিংয়ের কিছু মূল বৈশিষ্ট্য আছে। যেমন :
অবজেক্ট : অবজেক্ট হলো ডাবল ওপি প্রোগ্রামিংয়ের গঠনগত একক। এটি একইসাথে ডাটা এবং মেথড, যা কিছু নির্দিষ্ট ডাটার ওপর অপারেশন চালাতে পারে।
ক্লাস : ক্লাস হলো একটি অবজেক্টের স্ট্রাকচার অথবা বস্নু প্রিন্ট। এটি মূলত কোনো ডাটার ওপর সরাসরি কাজ করে না। এটি শুধু ডিফাইন করে একটি অবজেক্ট কীভাবে কাজ করবে। তবে এটি ক্লাসের নাম, বৈশিষ্ট্য ইত্যাদি ডিফাইন করে। সহজ কথায়, প্রথমে একটি ক্লাস ডিফাইন করতে হয়, এরপর সেই ক্লাসের একটি অবজেক্ট ডিফাইন করে বিভিন্ন ডাটার ওপর কাজ করা যায়। আর তাই একটি অবজেক্টের কাজ করার ক্ষমতা এর ক্লাসের ক্ষমতার সমান হয়, এরচেয়ে বেশি কখনও হয় না।
অ্যাবস্ট্রাকশন : একটি ক্লাসের অ্যাবস্ট্রাকশন শুধু ওই ক্লাসের বেসিক ইনফরমেশনগুলো ডিফাইন করে। ডিটেইলস ইনফরমেশন পরে ক্লাসের মাঝে ডিফাইন করা হয়। অর্থাৎ যতটুকু ইনফরমেশন হলে ক্লাসটি কাজ করবে, অ্যাবস্ট্রাকশন শুধু ততটুকু ইনফরমেশন ডিফাইন করে। উদাহরণস্বরূপ, একটি ডাটাবেজ সিস্টেম শুধু ডিফাইন করে কী ধরনের ডাটা নিয়ে কাজ করা হবে এবং তার লিমিট কতটুকু হতে পারে। এটি অ্যাবস্ট্রাকশনের কাজ। তবে কীভাবে ডাটাগুলো নিয়ে কাজ করা হবে, সেটি ক্লাসের ডেফিনিশনের মাঝে পরে। আর বস্নু প্রিন্ট অনুযায়ী কাজ করার দায়িত্ব হলো অবজেক্টের।
এনক্যাপসুলেশন : ধরা যাক, প্রোগ্রামে কিছু নির্দিষ্ট ডাটা আছে যেগুলো নিয়ে কিছু নির্দিষ্ট মেথড কাজ করবে। বাকিগুলো কাজ করবে অন্যান্য ডাটা নিয়ে। এই নির্দিষ্ট ডাটা এবং মেথডকে এক জায়গায় রাখা হলো এনক্যাপসুলেশনের কাজ। তাই সি-এর মতো প্রসিডিউরাল ল্যাঙ্গুয়েজের ক্ষেত্রে কোন ফাংশন কোন ডাটা নিয়ে কাজ করবে তা বলা সম্ভব নয়। কিন্তু সি++ এর মতো ডাবল ওপি ল্যাঙ্গুয়েজে এনক্যাপসুলেশনের মাধ্যমে বলা যায় কোন ফাংশন কোন ডাটা নিয়ে কাজ করার ক্ষমতা রাখে। এর ফলে প্রোগ্রামের সিকিউরিটি অনেক মজবুত হয়। যেমন- হ্যাকিংয়ের মূল পদ্ধতি হলো বাইরে থেকে একজন কিছু ডাটা প্রোগ্রামে প্রবেশ করিয়ে গুরুত্বপূর্ণ কিছু ডাটা বের করে আনবে। কিন্তু এনক্যাপসুলেশনের জন্য একটি ফাংশন শুধু তার জন্য বরাদ্দ করা নির্দিষ্ট ডাটা নিয়েই কাজ করতে পারবে। বাইরে থেকে কেউ অন্য কোনো ডাটা প্রবেশ করালে ওই ফাংশন সেটা অ্যাক্সেসই করতে পারবে না।
ইনহেরিট্যান্স : অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের আরেকটি অন্যতম ফিচার হলো ইনহেরিট্যান্স বা কোডের পুনর্ব্যবহার। ফিচারের নাম দেখলেই বোঝা যায়, এর মাধ্যমে একটি ক্লাসের অবজেক্ট অন্য ক্লাসের ফিচার ব্যবহার করতে পারবে। সে ক্ষেত্রে দ্বিতীয় ক্লাসের জন্য ওই ফিচারগুলো আলাদাভাবে ডিফাইন করার দরকার নেই। শুধু একটি ক্লাস আরেকটিকে ইনহেরিট করলেই হবে।
পলিমরফিজম : এটি ডাবল ওপি ফিচারের আরেকটি অন্যতম ফিচার। এর মাধ্যমে একজনের কোডারের কষ্ট অনেকাংশেই কমে যায়। একই অপারেটর বা ফাংশনকে বিভিন্ন উপায়ে ব্যবহারের সুবিধাকে বলা হয় পলিমরফিজম। পলি শব্দের অর্থ হলো অনেক। আর তাই প্রোগ্রাম শুধু একটি ফাংশনকে ডিফাইন করে তাকে ভিন্ন ভিন্নভাবে কল করতে পারেন। উদাহরণস্বরূপ, ধরা যাক কোডার তার প্রোগ্রামে একটি ফাংশন লিখল, যার আর্গুমেন্ট হিসেবে আছে নাম, রোল, বয়স, মোবাইল নম্বর। অর্থাৎ ফাংশনটিকে কল করার মাধ্যমে একজন ছাত্রের উক্ত ইনফরমেশনগুলো পাওয়া যায়। কিন্তু একজন ছাত্রের যদি মোবাইল না থাকে, সে ক্ষেত্রে এই ফাংশনকে ব্যবহার করা যাবে না, কারণ ফাংশনের আর্গুমেন্ট যদি পূর্ণ না হয় সে ক্ষেত্রে প্রোগ্রাম এরর দেখাবে। এ ক্ষেত্রে পলিমরফিজমের মাধ্যমে প্রোগ্রামার একই ফাংশনকে শুধু প্রথম তিনটি আর্গুমেন্ট সহকারে কল করতে পারেন, অর্থাৎ মোবাইল নম্বর সে ক্ষেত্রে থাকবেই না। তাই বলে এ ক্ষেত্রে মূল ফাংশনের কোনো পরিবর্তন হবে না।
ওভারলোডিং : ওভারলোডিং আসলে পলিমরফিজমেরই একটি অংশ। যখন কোনো ফাংশন অথবা অপারেটর তার নিজের জন্য ডিফাইন করা ডাটা ছাড়া অন্য কোনো ডাটা টাইপের ওপর কাজ করার সুযোগ পায়, তখন তাকে মেথড ওভারলোডিং বলে।
এবার সি++ এর কিছু ফিচার নিয়ে আলোচনা করা যাক :
সি++ : সি++ মূলত একটি স্ট্যাটিক টাইপ, কম্পাইল করা, জেনারেল পারপাস, কেস সেনসিটিভ, ফ্রি ফর্ম প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটি প্রসিডিউরাল প্রোগ্রামিং, অবজেক্ট ওরিয়েন্টেশন এবং জেনেরিক প্রোগ্রামিং সাপোর্ট করে। উল্লেখ্য, একটি প্রোগ্রামিং ল্যাঙ্গুয়েজকে স্ট্যাটিক টাইপ বলা হয়, যখন তার কম্পাইল টাইমে টাইপ চেকিং করা হয় এবং রান টাইমে তা বাদ দেয়া হয়।
সি++ কে সাধারণত মিড-লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজ বলা হয়। কারণ, এটি একইসাথে হাই লেভেল এবং লো লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজের বৈশিষ্ট্য বজায় রাখে।
সি++ আসলে সি ল্যাঙ্গুয়েজের একটি সুপার সেট। অর্থাৎ সি-এর সব কিছু সি++ এ পাওয়া যাবে, কিন্তু সি++ এর অনেক কিছু সি-তে নেই। আর তাই ভার্চুয়ালি একটি সি প্রোগ্রামকে একটি সি++ প্রোগ্রাম বলা যায়।
স্ট্যান্ডার্ড লাইব্রেরি : স্ট্যান্ডার্ড সি++ এর মূলত তিনটি গুরুত্বপূর্ণ অংশ রয়েছে। যেমন : ০১. মূল ল্যাঙ্গুয়েজ- যেখানে সব গঠনগত একক, যেমন ভেরিয়েবল, ডাটা টাইপ, লিটারাল ইত্যাদি রয়েছে। ০২. সি++ স্ট্যান্ডার্ড লাইব্রেরি- যেখানে প্রচুর গুরুত্বপূর্ণ এবং সহজে ব্যবহারযোগ্য ফাংশন ডিফাইন করা আছে, যার মাধ্যমে ফাইল, স্ট্রিং, লোকেশন ইত্যাদি নিয়ে কাজ করা যায়। ০৩. স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি- যেখানে অনেক গুরুত্বপূর্ণ মেথড ডিক্লেয়ার করা আছে, যার মাধ্যমে ডাটা স্ট্রাকচার নিয়ে কাজ করা যায়।
অ্যান্সি স্ট্যান্ডার্ড : অ্যান্সি স্ট্যান্ডার্ডের মাধ্যমে নিশ্চিত করা হয় যে সি++ এর পোর্টেবিলিটি বজায় রাখে। যেমন- সি++ দিয়ে যে কোড লেখা হয় তা মাইক্রোসফটের কম্পাইলারও যেমন আউটপুট দেয়, আবার ম্যাক, উইনিক্স, লিনআক্স বা আলফা এগুলোর কম্পাইলারও একইরকম আউটপুট দেয়।
সি++ এর ব্যবহার : সি++ দিয়ে অসংখ্য প্রোগ্রাম বানানো হয়। সাধারণত সব অ্যাপ্লিকেশন ডোমেইনেই সি++ এর ব্যবহার দেখা যায়। এ ছাড়া উইন্ডোজের বিভিন্ন ডেস্কটপ অ্যাপ্লিকেশনও সি++, সি শার্প, ভিজ্যুয়াল বেসিক ইত্যাদি দিয়ে বানানো হয়।
সি++ দিয়ে সাধারণত ড্রাইভার সফটওয়্যার অথবা সেসব সফটওয়্যার লেখা হয়, যেগুলো সরাসরি হার্ডওয়্যার নিয়ে কাজ করে। যেমন- একটি প্রিন্টারের সফটওয়্যার অথবা একটি গ্রাফিক্স কার্ডের ড্রাইভার বা কার্ডের ম্যানেজার সফটওয়্যার।
যে অ্যাপলের ম্যাকিন্টোশ অথবা উইন্ডোজ চালিয়েছেন, তিনি পরোক্ষভাবে সি++ ব্যবহার করেছেন। কারণ, এসব সিস্টেমের মূল ইউজার ইন্টারফেস সি++ এ লেখা।
সি++ এখন সবচেয়ে আধুনিক এবং ব্যবহৃত ল্যাঙ্গুয়েজের একটিতে পরিণত হয়েছে। এর মাধ্যমে আধুনিক অপারেটিং সিস্টেম, সফটওয়্যার ইত্যাদির বিভিন্ন ফিচার তৈরি করা হয়
ফিডব্যাক : Wahid_cseaust@yahoo.com


পত্রিকায় লেখাটির পাতাগুলো
লেখাটি পিডিএফ ফর্মেটে ডাউনলোড করুন
লেখাটির সহায়ক ভিডিও
২০১৫ - ফেব্রুয়ারী সংখ্যার হাইলাইটস
চলতি সংখ্যার হাইলাইটস