লেখকের কথা
এই বইয়ের মূল উদ্দেশ্য হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং কোড করার সময় এর বাস্তব প্রয়োগ হাতে-কলমে শেখানো। Object Oriented Programming-এর প্রতিটি শব্দের আদ্যক্ষর নিয়ে সংক্ষেপে একে OOP বলে, যাকে আমরা বাংলায় লিখব ওওপি। বইয়ের কোডগুলো সি শার্প (C#)-এ লেখা। আপনি যেহেতু প্রোগ্রামিংয়ের বেসিক জানেন, তাই আমরা বেসিক প্রোগ্রামিং নিয়ে তেমন আলোচনা করব না। তবে সি শার্পের সিনট্যাক্স (Syntax) নিয়ে কিছুটা আলোচনা থাকবে। আর বাকি সব আলোচনা হবে ওওপির ওপর।
কোড লেখার জন্য আমরা ভিজুয়াল স্টুডিও 2019 ব্যবহার করেছি। তবে আপনি ভিজুয়াল স্টুডিওর অন্য কোনো ভার্শন কিংবা অন্য কোনো আইডিই (IDE) ব্যবহার করতে পারেন।
কাদের জন্য এই বই
প্রোগ্রামার হিসেবে কাজ করতে হলে আপনাকে প্রায় প্রতিদিন কোড লিখতে হবে এবং এসব কোড হতে হবে মানসম্মত। আর মানসম্মত মানে অনেক কিছু – কোড নির্ভুল কাজ করতে হবে, যতটুকু সময়ের মধ্যে প্রোগ্রামটি চলার কথা সেই সময়ের মধ্যে চলতে হবে, কোডের ডিজাইন এমন হতে হবে, যাতে অন্য প্রোগ্রামাররা সহজেই সেটি পরিবর্তন করতে পারে। প্রোগ্রামারদের ক্যারিয়ারের একটি বড়ো সময় কাটে কোড পড়া, বোঝা ও প্রয়োজনমতো পরিবর্তন করার পেছনে এবং কাজটি বেশ জটিল। এসব ব্যাপার সামাল দিতে শুধু বেসিক প্রোগ্রামিংয়ের জ্ঞান আর অভিজ্ঞতা দিয়ে প্রফেশনাল কাজ করা প্রায় অসম্ভব।
কাজেই প্রোগ্রামিংয়ের যুক্তি এবং ডেটা স্ট্রাকচার ও অ্যালগরিদমে পারদর্শী হওয়ার সঙ্গে সঙ্গে যদি আপনার ওওপি নিয়ে ভালো ধারণা থাকে, তাহলে আপনি ভালো কোড লিখতে পারবেন, অন্যের প্রফেশনাল লেভেলের কোড বা ডিজাইন সহজে এবং কম সময়ে বুঝতে পারবেন।
দীর্ঘদিন ওওপি নিয়ে প্রফেশনাল প্রোগ্রামার এবং শিক্ষার্থীদের জন্য অসংখ্য প্রশিক্ষণ ও কর্মশালার রূপরেখা প্রণয়ন এবং পরিচালনা করার অভিজ্ঞতার পরিপ্রেক্ষিতে এই বইটি লেখা হয়েছে। আপনি যদি নিচের যেকোনো একটি দলের মধ্যে নিজেকে ফেলতে পারেন, তাহলে বইটি আপনার উপকারে আসবে বলে আমার বিশ্বাস –
- কম্পিউটার-বিজ্ঞানের শিক্ষার্থী, যারা এবার ওওপি কোর্সটি নিয়েছেন।
- সফটওয়্যার ডেভেলপমেন্টে যারা চাকরি খুঁজছেন তাঁদের জন্য ইন্টারভিউতে ওওপি অংশে সঠিক উত্তর দেওয়ার ক্ষেত্রে বইটির কোড ও ডিজাইন-ভিত্তিক আলোচনা খুব কাজে লাগবে এবং চাকরিতে যোগদানের পর আপনি মানসম্মত কোড লিখতে পারবেন।
- বর্তমানে যারা সফটওয়্যার ইঞ্জিনিয়ার বা ডেভেলপার হিসেবে কাজ করছেন কিন্তু ওওপি বুঝতে বা ডিজাইন করতে সমস্যার সম্মুখীন হচ্ছেন, যে ভাষা বা ফ্রেমওয়ার্কে কাজ করছেন সেটা বুঝতে কেমন যেন ঝামেলা হচ্ছে, তাঁদের জন্য এই বইয়ের আলোচনাগুলো বেশ কাজে দেবে।
এই বই পড়তে কী কী জানা থাকতে হবে
এই বইয়ের আলোচনা ও কোড বোঝার জন্য প্রোগ্রামিংয়ের মৌলিক বিষয়গুলো সম্পর্কে ভালো ধারণা থাকতে হবে। তবে কোনো নির্দিষ্ট ভাষায় দখল থাকার প্রয়োজন নেই, যেকোনো একটি ভাষায় (জাভা, সি, সি শার্প, পিএইচপি, পাইথন ইত্যাদি) প্রোগ্রামিংয়ের অভিজ্ঞতা থাকলেই চলবে। যেহেতু বইটিতে বিভিন্ন বিষয় আলোচনার জন্য সি শার্প ব্যবহার করেছি, তাই প্রথম অধ্যায়ে সি শার্পের সিনট্যাক্স দিয়ে প্রোগ্রামিং নিয়ে কিছুটা ধারণা দেওয়ার চেষ্টা করেছি। এতে করে ওওপি অংশের আলোচনায় কোড নিয়ে আপনার তেমন কোনো সমস্যা হবে না।
কোডগুলো অনুশীলন করার জন্য কী কী সফটওয়্যার লাগবে
এই বইয়ের সব কোড ভিজুয়াল স্টুডিও 2019-এ লেখা। আপনারা চাইলে মাইক্রোসফটের ওয়েবসাইট (https://visualstudio.microsoft.com/vs/community) থেকে ভিজুয়াল স্টুডিও 2019 ডাউনলোড করে আপনার কম্পিউটারে ইনস্টল করে নিতে পারেন। তবে আপনি চাইলে ভিজুয়াল স্টুডিওর যেকোনো ভার্শন ব্যবহার করতে পারেন।
সোর্স কোডগুলো কোথায় পাবেন?
এই বইয়ের পাতায় পাতায় কোডের ছড়াছড়ি। কিন্তু আইডিইতে কোড দেখা, কিছু পরিবর্তন করা, কোড রান কিংবা ডিবাগ করার অনুভূতি কখনই বইয়ের পাতায় পাওয়া যায় না। এজন্য এই বইয়ে আলোচিত প্রায় সকল কোড (উদাহরণ এবং অনুশীলনী) https://github.com/tiemoon/sourcecode-oopusingcsharp-এ রাখা আছে।
বইটি যেভাবে পড়বেন
এই বইটি শুধু পড়লে আপনার তেমন কোনো উপকারে আসবে না। বইটি পড়ার সঙ্গে সঙ্গে প্রতিটি উদাহরণ এবং অনুশীলনীর কোড আপনাকে নিজে টাইপ করতে হবে, ডিবাগ করে দেখতে হবে কীভাবে কাজ হয়, আর একটু চিন্তা করতে হবে। আর এসব করলে আপনি অনেক ভুল করবেন, আপনার কোড রান হবে না, হাজারো সমস্যায় পড়বেন। এভাবেই আপনি ওওপি শিখবেন, এভাবে সমস্যায় পড়ে শেখা ছাড়া প্রোগ্রামিং শেখার আর কোনো বিকল্প উপায় আমার জানা নেই।
বইটিতে বিভিন্ন রকম ডিজাইন নিয়ে অনেক আলোচনা আছে, এসব নিয়ে আপনার সহকর্মী কিংবা সহপাঠীদের সঙ্গে আরো আলোচনা করলে আপনারই উপকার হবে। ইন্টারনেটেও অনেক অনেক আলোচনা আছে এসবের ওপর, সেগুলোও দেখতে পারেন।
সূচিপত্র
- লেখক পরিচিতি
- লেখকের কথা
- অধ্যায় ১ – সি শার্পের প্রাথমিক ধারণা
- হ্যালো ওয়ার্ল্ড প্রোগ্রাম
- উইন্ডোজ ফরম অ্যাপ্লিকেশন
- ভ্যারিয়েবল ও ডেটা টাইপ
- ডিবাগিং (Debugging)
- কন্ডিশন (If-then-else)
- লুপ
- মেথড (Method)
- উইন্ডোজ ফরমের কয়েকটি ইউআই (UI) কনট্রোল
- অ্যারে (Array)
- এক্সেপশন (Exception)
- ডেটা স্ট্রাকচার : লিস্ট, হ্যাশ-সেট, ডিকশনারি
- অধ্যায় ২ – ইউজার-ডিফাইন্ড টাইপ
- ইউজার-ডিফাইন্ড টাইপ তৈরি এবং ব্যবহার
- মেথড লিখুন ইউজার-ডিফাইন্ড টাইপের ভেতর
- অবজেক্ট মেমোরিতে কীভাবে থাকে?
- ভ্যালু টাইপ বনাম রেফারেন্স টাইপ
- ভ্যালু টাইপের রেফারেন্স কীভাবে পাঠাতে হয়
- অধ্যায় ৩ – অবজেক্ট-ওরিয়েন্টেড চিন্তা ও কোড
- ওওপি চিন্তার উপায়
- ক্লাস কী?
- অবজেক্ট কী?
- ফিল্ড কী?
- মেথড কী?
- ভ্যারিয়েবল কী?
- ক্লাস ডায়াগ্রাম
- অধ্যায় ৪ – ওওপির কিছু ধারণা
- ভালো ডিজাইন বনাম দুর্বল ডিজাইন
- ডেটা হাইডিং, প্রপার্টি এবং অটো প্রপার্টি
- মেথড ওভারলোডিং (Method overloading)
- কনস্ট্রাক্টর (Constructor)
- কনস্ট্রাক্টর ওভারলোড (Constructor Overload)
- একটি ক্লাসের একাধিক অবজেক্ট নিয়ে কাজ
- স্ট্যাটিক (Static) মেথড ও ক্লাস
- অধ্যায় ৫ – অ্যাসোসিয়েশন রিলেশনশিপ
- ইউজার-ডিফাইন্ড টাইপ কোথায় কোথায় রাখা যায়?
- অ্যাসোসিয়েশন রিলেশনশিপ কী?
- ওয়ান-টু-ম্যানি অ্যাসোসিয়েশন রিলেশনশিপ
- কার্ডিনালিটি যখন ম্যানি-টু-ম্যানি
- ইউজেস রিলেশনশিপ (Uses Relationship)
- অধ্যায় ৬ – ইনহেরিটেন্স রিলেশনশিপ
- ইনহেরিটেন্স রিলেশনশিপ (Inheritance Relationship) কী?
- ইনহেরিটেন্স রিলেশনশিপ কখন করব?
- আপকাস্টিং ও ডাউনকাস্টিং (Upcasting and Downcasting)
- মেথড ওভাররাইডিং (Method Overriding)
- পলিমরফিজম (Polymorphism)
- জেনেরিকস (Generics)
- অ্যাবস্ট্র্যাক্ট (Abstract) ক্লাস ও মেথড
- ইনহেরিটেন্সের ভুল প্রয়োগ
- অধ্যায় ৭ – ইন্টারফেস
- ইন্টারফেস দেখতে কেমন ও কীভাবে ব্যবহার করে
- বিল্ট-ইন ইন্টারফেস IComparable-এর ইমপ্লিমেন্টেশন
- নিজেদের ইন্টারফেসের মাধ্যমে একটি ডিজাইন সমস্যার সমাধান
- অধ্যায় ৮ – ওওপি ডিজাইনের কিছু ভালো তরিকা
- অধ্যায় ৯ – একটি ছোটো প্রজেক্ট
Reviews
There are no reviews yet.