basic DS and basic thinking OOP in C++ [ part 1 ]

basic DS and basic thinking OOP in C++ [ part 1 ]

overview of DS

C++ is a object-oriented programming language. c++ ডাটার security নিশ্চিত করতে পারে access modifier এঁর মাধ্যমে । আমরা effectively কোণ ডেটাকে ব্যাবহার করার জন্য অনেক গুলো ডেটাকে যেখানে সাজিয়ে রাখা হয় তখন ওই জায়গাটাকে তাকে data sctacture বলে ।

উদাহরণঃ ধর তোমার অনেকগুলো কাপড় আছে । যেটা একটা বালতিতে রাখা তুমি একদিন চাইলে কোণ একটা কাপড় খুঁজে বের করতে । তখন তুমি হুট করে খুঁজে পাইতেও পাড়ও আবার অনেক সময় লাগতে পারে । আবার কখন তুমি খুঁজেই পাবে না । কিন্তু যদি তুমি তোমার wordrope এ সুন্দর করে তাকে তাকে তুমি তোমার কাপড় গুলো রাখ তাহলে কিন্তু এত ঝামেলা আর তোমাকে করতে হবে না ।

তাহলে আমরা বলতে পারি তুমি যদি তোমার ডেটা গুলোকে organizer ভাবে সাজায়ে রাখ তাহলে সেগুলোর মাঝে operation চালানো পরবর্তীতে অনেক সহজ হয়ে যাবে । এতে কম্পিউটার কাজ করতে অনেক কম সময় লাগবে ।

DS এঁর আসলে কাজ আসলে এটাই । এখন আর একটা উদাহরণ দেই । ধর তোমার বাসার পাশের দোকানের কে কত টাকা খরচ করছে তার ডাটা বের করতে হবে। কিন্তু এঁর উদ্দেশ্য হল কে বেশি টাকা খরচ করেছে তার নামটা অথবা তার যেকোনো প্রপার্টি সম্পর্কে জানা । তাহলে তুমি কি করবে । তুমি যদি একটু C programmming এঁ deep drive কর তাহলে তুমি দেখবে struct নামে একটা জিনিস তুমি যাণ । এখানে যদি তুমি প্রতিটা ক্রেতাকে একটা বক্স চিন্তা কর তাহলে তুমি সেই বক্স এঁর মাঝে তার নাম, খরচ এটা রাখতে পারবে । এই বক্স গুলোকে একটা একক জায়গায় রাখলে তখন সেটা হবে structure or array . its like array of object.

ধর তোমাকে একটা map মেনে এক স্থান থেকে অন্য স্থানে যেতে হবে । তখন তুমি অবশ্যয় দেখবে কোন রাস্তা দিয়ে গেলে কম রাস্তা অতিক্রম করতে হবে । তুমি সেঁতাই বেছে নিবে । এই যে ম্যাপ বিষয়টা এটা বানানো হয় graph data structure এঁর সাহায্যে । এঁর কিছু বিশিষ্ট আছে সেগুলো জেনে নাও ।

  1. node ---> এখানে A,B,C,D,E node বাঁ বিন্দু

  2. grapg adge --> A,B,C,D,E node এঁর সংযোগ রেখা

  3. graph adge weight --> সংযোগ রেখার দূরত্ব

এই যে এক node থেকে অন্য এক node এ যাওয়ার সোজা উপায় এক জার্মানি বিজ্ঞানী একতটা এলগরিদম বানিয়ে রেখে গেছে যেটার dijkstra algorithm নামে পরিচিত ।

এই যে একতা দোকানের এবং ম্যাপ এঁর জন্য array, graph data structure এঁর ব্যাবহার দেখলাম এরকম অনেক ডাটা স্ত্রাকচার আছে । সেগুলো সম্পর্কেও আমরা জানব ।

high level programming languge

ইংলিশ ল্যাঙ্গুয়েজ এঁর কাছাকাছি যে কোড গুলো । যেমন c language .

একদম প্রথমে যখন হাই লেভেল প্রোগ্রামিং শুরু হয় তখন তখন এঁর ভেতরে function বা structure বলে কিছু ছিল না । তখন ছিল জাম্প ইন্সট্রাকশন, GOTO instruction . এই টাইপ এঁর ল্যাঙ্গুয়েজ গুলো হচ্ছে

১। COBOL ২। FORTRAN ৩।Basic

তারপর আসল structural programming language যেখানে ছিল modular way তে কোড ভাগ ভাগ করে কাজ করার সুবধা । যেমনঃ c programming langauge

c programming language ভালোই চলছিল । কিন্তু সমস্যা হচ্ছে রিয়েল ওয়ার্ল্ড এঁর সাথে। আমরা রিয়েল ওয়ার্ল্ড এ সব কিছুই object object আকারে চিন্তা করি । যেমন একজন মানুষের নাম , তার বাসা , তার পেশা ইত্যাদি ।

এই কারণেই আমরা strucred বা procudural prograaming থেকে আমরা শিফট করি OOP language এ. এরকমই একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ হচ্ছে C++, Java, C#

Concepts of OOP or pillars or OOP (মাস্টবি শিখতেই হবে)

  1. class and object

    car নামে একটা ক্লাস আছে যার প্রপার্টি বা arguments হচ্ছে name, color, model ।

    এটা দিয়ে অনেক গুলো অবজেক্ট বানানো সম্ভব ।

    আমরা আগে struct সম্পর্কে জেনেছি । তাহলে struct এবং class এঁর মধ্যে পার্থক্য কি ?

struct:

class:

structmethod রাখা যায় না শুধু ডাটা রাখা যায় ডাটা টাইপের উপর ভিত্তি কবে

objectmethod রাখা যায় এবং ডাটা রাখা যায় ডাটা টাইপের উপর ভিত্তি করে ডাটা রাখা যায়

declare করার সময় মেমরিতে জাইগা দখল করে নেয় ।

declare করার সময় মেমরিতে জাইগা দখল করে নেয় না তবে ব্যাবহারের সময় যতটুকই প্রয়োজন ততটুকু জায়গা দখল করে ।

  1. Inheritance

    Inheritance এঁর বাংলা হচ্ছে উত্তরাধিকারী । এক জনের বা একটা ক্লাসের প্রপার্টি অন্য একটা

    ক্লাস এ নিয়ে যাওয়া । যখন একটা ক্লাস আর একটা ক্লাস এ Inherit করা হয় তখন প্যারেন্ট ক্লাস এঁর privet প্রপার্টি অ্যাক্সেস করতে পারে না । public and protected প্রপার্টি অ্যাক্সেস করতে পারে ।

  2. Encapsulation

    এই টার্মটা আসছে ক্যাপসুল থেকে । একটা ক্লাস ক্যাপসুলের মত করে তার variable

    methods গুলো একটা জাইগায় বা singlr unit এ রাখতে পারে তাই একে Encapsulation

    বলে ।

    Encapsulation এই ডাটা বা মেথড গুলোকে access modifier এ মাধ্যমে প্রটেক্ট

    করতে পারেন । এমন ৩ ধরণের access modifier আছে

    1. public: বাহির থেকে অ্যাক্সেস করা যাবে

    2. protected: accessible to derived class. এঁর মানে যে Inherit করবে সে শুধু অ্যাক্সেস করতে পারবে ।

    3. privet: ক্লাস এঁর বাহির থেকে অ্যাক্সেস করা যাবে না ।

  3. Polymorphism

    একটা মানুষের কথা চিন্তা কর । যে যখন বাসে চলাচল করে সে একজন passenger, আবার যখন সে বাজারে যান তখন যে একজন ক্রেতা । আবার যে যখন কাওকে কিছু শেখান তখন সে একজন শিক্ষক । এখানে তুমি খেয়াল করলে বুঝতে পারবে এখানে মানুষ কিন্তু চেঞ্জ হচ্ছে না হচ্ছে না আচার আচরণ । বিভিন্ন সময় বিভিন্ন কাজ করছে একেই Polymorphism বলা হয় ।

  4. Abstraction

    2 প্রকারঃ

    1. control Abstraction

    2. data Abstraction

Did you find this article valuable?

Support Rashedul Islam by becoming a sponsor. Any amount is appreciated!