Skill

Document/View আর্কিটেকচার (Document/View Architecture)

এমএফসি (MFC) - Microsoft Technologies

371

MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশন তৈরি করতে Document/View Architecture একটি গুরুত্বপূর্ণ ডিজাইন প্যাটার্ন। এটি অ্যাপ্লিকেশনটির ডাটা (ডকুমেন্ট) এবং ব্যবহারকারীর ইন্টারফেস (ভিউ) আলাদা করে, ফলে অ্যাপ্লিকেশনটি বেশি মডুলার এবং রিয়াসেবল হয়। MFC তে Document/View Architecture ডেটা এবং ভিউ এর মধ্যে সংযোগ স্থাপন করার জন্য ব্যবহৃত হয়, যাতে ডাটা মডেল পরিবর্তন করলে ভিউ (ইউজার ইন্টারফেস) স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।


Document/View আর্কিটেকচারের মূল উপাদান

Document/View Architecture দুটি প্রধান উপাদানে বিভক্ত:

  1. Document:
    • Document হল ডেটার মূল অংশ, যা অ্যাপ্লিকেশনটির কাজের জন্য প্রয়োজনীয় সব তথ্য ধারণ করে। এটি ডাটা ম্যানেজমেন্টের জন্য দায়িত্বশীল। উদাহরণস্বরূপ, একটি ডকুমেন্টে যে সব তথ্য সঞ্চিত থাকে তা হতে পারে টেক্সট, ছবি, বা অন্যান্য ডেটা।
    • Document সাধারণত CDocument ক্লাসের একটি অবজেক্ট হিসেবে অ্যাপ্লিকেশনে তৈরি হয়। এই ক্লাসটি ডেটার স্টোরেজ, রিটার্ভাল এবং ফাইল সঞ্চালনের কাজ করে।
  2. View:
    • View হল ডাটা প্রদর্শনের উপাদান। এটি ডকুমেন্টের ডেটা ব্যবহারকারীকে প্রদর্শন করে এবং ডেটার উপস্থাপনাকে কাস্টমাইজ করতে ব্যবহৃত হয়। View মডেল বা ডেটাকে সরাসরি অ্যাক্সেস করে না, বরং ডকুমেন্ট ক্লাসের মাধ্যমে ডেটার সঙ্গে যোগাযোগ করে।
    • View সাধারণত CView বা এর সাবক্লাস ব্যবহার করে তৈরি হয়। CView ক্লাস অ্যাপ্লিকেশনের ইন্টারফেসের দায়িত্ব পালন করে, যেমন গ্রাফিক্যাল উপস্থাপনা, টেক্সট প্রদর্শন ইত্যাদি।

Document/View আর্কিটেকচারের প্রধান বৈশিষ্ট্য

  • স্রষ্টা এবং ভিউয়ের আলাদা করণ: ডেটা এবং ভিউ একে অপরের থেকে আলাদা থাকে, যার ফলে ডেটার পরিবর্তন ভিউকে প্রভাবিত করে এবং ভিউর পরিবর্তন ডেটাকে প্রভাবিত করতে পারে। তবে এটি ডেটা ম্যানিপুলেশন ও প্রদর্শনকে পৃথকভাবে পরিচালনা করতে সহায়তা করে।
  • মাল্টিপল ভিউ সাপোর্ট: একটি ডকুমেন্টের জন্য একাধিক ভিউ থাকতে পারে। উদাহরণস্বরূপ, একটি ডকুমেন্টে একাধিক ভিউ ব্যবহারকারীকে বিভিন্ন দৃষ্টিকোণ থেকে একই ডেটা দেখানোর সুযোগ দেয়। যেমন একটি গ্রাফিক্যাল ভিউ এবং একটি টেক্সট ভিউ একই ডেটা দেখাতে পারে।
  • ডেটা অটো-আপডেটিং: ডকুমেন্টে কোনো পরিবর্তন হলে, সংশ্লিষ্ট ভিউ গুলি অটোমেটিক্যালি আপডেট হয়ে যায়। এটি Observer Pattern এর মতো কাজ করে, যেখানে ডকুমেন্ট ভিউ কে জানায় যে ডেটাতে কোনো পরিবর্তন হয়েছে।

Document/View আর্কিটেকচারের কাজের প্রক্রিয়া

  1. ডকুমেন্ট তৈরি: প্রথমে ডকুমেন্ট তৈরি করা হয়, যেখানে সব ডেটা সংরক্ষিত থাকে। উদাহরণস্বরূপ, একটি ডকুমেন্ট ক্লাস তৈরি করে, যেখানে টেক্সট বা ইমেজ ডেটা সংরক্ষণ করা হবে।
  2. ভিউ তৈরি: ভিউ তৈরি করা হয় যেটি ডকুমেন্টের ডেটা প্রদর্শন করে। এই ভিউটি ডকুমেন্টের ডেটা অ্যাক্সেস করতে ডকুমেন্ট ক্লাসের একটি অবজেক্ট ব্যবহার করে।
  3. অফজারভার প্যাটার্ন: যখন ডকুমেন্টের ডেটা পরিবর্তিত হয়, তখন সংশ্লিষ্ট ভিউগুলি এই পরিবর্তন জানায় এবং নিজেকে আপডেট করে।

Document/View আর্কিটেকচারে ব্যবহৃত গুরুত্বপূর্ণ ক্লাস

  1. CDocument:

    • CDocument ক্লাস অ্যাপ্লিকেশনটির ডেটার প্রতিনিধিত্ব করে। এটি ডাটা সংরক্ষণ, ফাইল রিড/রাইট এবং অন্যান্য ডেটা ম্যানিপুলেশন কাজ পরিচালনা করে।

    Code Example:

    class CMyDocument : public CDocument
    {
        // ডকুমেন্টের ডেটা এবং কার্যকলাপ পরিচালনার কোড
    };
    
  2. CView:

    • CView ক্লাস অ্যাপ্লিকেশনটির ভিউ বা ইউজার ইন্টারফেস প্রতিনিধিত্ব করে। এটি ডকুমেন্টের ডেটাকে ইউজারকে প্রদর্শন করে এবং ইউজারের ইনপুট গ্রহণ করে।

    Code Example:

    class CMyView : public CView
    {
    public:
        void OnDraw(CDC* pDC) override;
    };
    
  3. CFrameWnd:

    • CFrameWnd হল মেনু, টুলবার এবং উইন্ডো ফ্রেমের জন্য ব্যবহৃত কন্ট্রোলার। এটি অ্যাপ্লিকেশনের প্রধান উইন্ডো ধারণ করে এবং ডকুমেন্ট ও ভিউ এর মধ্যে সম্পর্ক স্থাপন করে।

    Code Example:

    class CMyFrameWnd : public CFrameWnd
    {
    public:
        CMyFrameWnd();
    };
    

Document/View আর্কিটেকচারের সুবিধা

  • মডুলারিটি: ডেটা এবং ইউজার ইন্টারফেসের পৃথকীকরণ, ডেভেলপারদের কোড সংগঠিত রাখতে সাহায্য করে। ডেটার সঙ্গে কাজ করতে এবং ভিউ পরিবর্তন করতে আলাদা আলাদা কোড ব্যবহার করা সম্ভব হয়।
  • রিয়াসেবিলিটি: একটি ডকুমেন্ট ক্লাস একাধিক ভিউ দ্বারা ব্যবহৃত হতে পারে, ফলে এক ডেটা ফাইল একাধিকভাবে প্রদর্শিত হতে পারে।
  • সহজ ডিবাগিং: ডেটা এবং ভিউ আলাদা থাকলে, ডেটার সমস্যা এবং ভিউয়ের সমস্যা পৃথকভাবে ডিবাগ করা সহজ হয়।

সারাংশ

Document/View Architecture MFC এর একটি শক্তিশালী আর্কিটেকচারাল প্যাটার্ন, যা ডেটা এবং ইউজার ইন্টারফেসের (ভিউ) মধ্যে পরিষ্কারভাবে বিভাজন তৈরি করে। এতে ডেটার পরিবর্তন ভিউতে প্রভাব ফেলবে এবং ব্যবহারকারী ভিউ থেকে ডেটাতে পরিবর্তন করতে পারবে। এই আর্কিটেকচার ডেভেলপারদের জন্য অ্যাপ্লিকেশন ডিজাইন করা সহজ করে তোলে, যেহেতু এটি মডুলার কোডিং এবং রিয়াসেবিলিটি নিশ্চিত করে।

Content added By

MFC এর Document/View প্যাটার্ন কী

323

MFC (Microsoft Foundation Classes) এর Document/View Architecture একটি ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশন ডেটার কাঠামো এবং তার দৃশ্য (UI) আলাদা করে। এই প্যাটার্নটি MFC অ্যাপ্লিকেশনে ডেটা ম্যানেজমেন্ট এবং ইউজার ইন্টারফেস (UI) কন্ট্রোলিংকে পৃথক করে, যার ফলে অ্যাপ্লিকেশনটির রক্ষণাবেক্ষণ এবং স্কেলিং সহজ হয়।

Document/View প্যাটার্নের মূল উপাদানগুলি


ডকুমেন্ট (Document)

Document হল অ্যাপ্লিকেশনের ডেটা বা কন্টেন্ট ধারণকারী অংশ। ডকুমেন্ট ক্লাস সাধারণত সমস্ত ডেটা স্টোর এবং ম্যানিপুলেট করে। এটি অ্যাপ্লিকেশনের সমস্ত ডেটার একটি "মডেল" হিসেবে কাজ করে এবং এর মাধ্যমে ডেটা পরিবর্তন বা আপডেট করা হয়।

ডকুমেন্ট ক্লাসটি MFC এর CDocument ক্লাস থেকে উত্তরাধিকার সূত্রে পাওয়া যায় এবং ডেটা সঞ্চয় ও পরিচালনার জন্য বিভিন্ন সদস্য ফাংশন থাকে।

  • ডকুমেন্টের কাজ:
    • অ্যাপ্লিকেশনের ডেটা ধারণ করা।
    • ডেটা ম্যানিপুলেশন, যেমন সংরক্ষণ, লোডিং, এবং প্রক্রিয়া।
    • ডেটার স্টেট পরিবর্তন হওয়ার সময় View ক্লাসগুলোকে অবহিত (notify) করা।

Code Example:

class CMyDocument : public CDocument
{
protected: 
    CMyDocument(); 
    DECLARE_DYNCREATE(CMyDocument)
public:
    // ডেটা ম্যানিপুলেশন ফাংশন
    void SetData(int newData);
    int GetData() const;
};

ভিউ (View)

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

  • ভিউয়ের কাজ:
    • ডকুমেন্টের ডেটা প্রদর্শন করা।
    • ইউজারের ইন্টারঅ্যাকশন থেকে ইনপুট গ্রহণ করা।
    • ডকুমেন্টে পরিবর্তন হলে UI আপডেট করা (নতুন ডেটা প্রদর্শন করা)।

Code Example:

class CMyView : public CView
{
protected: 
    CMyView(); 
    DECLARE_DYNCREATE(CMyView)
public:
    // ডকুমেন্টের ডেটা ডিসপ্লে করার জন্য
    void OnDraw(CDC* pDC);
};

Document/View প্যাটার্নের কাজের প্রক্রিয়া

  1. ডেটা ম্যানিপুলেশন: যখন ইউজার ডেটাতে কোনো পরিবর্তন করেন (যেমন টেক্সট এডিট করেন বা কোনো তথ্য আপডেট করেন), সেই পরিবর্তন ডকুমেন্টে সঞ্চিত হয়।
  2. ভিউ আপডেট: ডকুমেন্টের কোনো পরিবর্তন ঘটলে, ভিউ ক্লাস এই পরিবর্তন জানতে পারে এবং ডকুমেন্টের নতুন ডেটা প্রদর্শন করে।
  3. Multiple Views: একাধিক ভিউ একই ডকুমেন্টের ওপর কাজ করতে পারে, অর্থাৎ একাধিক উইন্ডোতে একই ডেটা প্রদর্শিত হতে পারে।

Document/View প্যাটার্নের সুবিধা

  • Separation of Concerns: ডেটা এবং UI আলাদা রাখা হয়, যার ফলে কোডের রক্ষণাবেক্ষণ ও ডিবাগিং সহজ হয়।
  • Multiple Views: একাধিক ভিউ একযোগে একটি ডকুমেন্টের ওপর কাজ করতে পারে, যা ব্যবহারকারীকে একাধিক উপায়ে একই ডেটা দেখতে দেয়।
  • Flexibility and Scalability: অ্যাপ্লিকেশনকে স্কেল করার জন্য এটি অত্যন্ত উপযোগী, কারণ ডেটা এবং UI আলাদা রাখার কারণে নতুন ভিউ বা ডকুমেন্ট ইন্টিগ্রেশন সহজ হয়।

সারাংশ

MFC এর Document/View Architecture একটি শক্তিশালী ডিজাইন প্যাটার্ন যা ডেটা এবং ইউজার ইন্টারফেসের আলাদা প্রাথমিক ধারণা তৈরি করে। এটি ডেটা ম্যানিপুলেশন এবং UI আপডেটিংয়ের মধ্যে একটি পরিষ্কার সীমারেখা রাখে, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ এবং স্কেলিং সহজ করে। ডকুমেন্ট ক্লাস ডেটা ধারণ করে এবং ভিউ ক্লাস সেই ডেটা ব্যবহারকারীর কাছে উপস্থাপন করে, এবং যখন ডেটায় পরিবর্তন ঘটে, ভিউ সেই পরিবর্তন বাস্তবায়ন করে।

Content added By

Document এবং View এর মধ্যে সম্পর্ক

361

MFC (Microsoft Foundation Classes) এর অ্যাপ্লিকেশন ডিজাইনে Document এবং View দুটি প্রধান কম্পোনেন্ট, যেগুলি অ্যাপ্লিকেশন ডেটা এবং ব্যবহারকারীর ইন্টারফেসের মধ্যে যোগাযোগ স্থাপন করে। MFC এর Document/View Architecture একটি খুবই শক্তিশালী ডিজাইন প্যাটার্ন, যা ডেটা মডেল এবং ইউজার ইন্টারফেসকে আলাদা রাখে, ফলে অ্যাপ্লিকেশনের স্কেলেবিলিটি এবং রক্ষণাবেক্ষণ সহজ হয়।


ডকুমেন্ট (Document)

Document হল অ্যাপ্লিকেশনের ডেটা বা কনটেন্ট স্টোর করার জায়গা। এটি ব্যবহারকারীর ইন্টারঅ্যাকশন বা ডেটা এন্ট্রি থেকে আলাদা থাকে। ডকুমেন্ট ক্লাসটি সাধারণত অ্যাপ্লিকেশনের মূল ডেটা এবং কনটেন্ট সঞ্চয় করে এবং এটি MFC Document Class এর মাধ্যমে পরিচালিত হয়। ডকুমেন্টের মধ্যে থাকা ডেটা পরবর্তীতে ব্যবহারকারীকে View এর মাধ্যমে প্রদর্শন করা হয়।

ডকুমেন্টের মধ্যে সাধারণত নিম্নলিখিত ধরনের ডেটা থাকে:

  • ফাইলের কনটেন্ট (টেক্সট, চিত্র, সংখ্যা ইত্যাদি)
  • অ্যাপ্লিকেশনের দ্বারা পরিচালিত মডেল ডেটা
  • ডেটাবেস সংযোগ ও ফলাফল

Code Example:

class CMyDocument : public CDocument
{
protected:
    CMyDocument();
    DECLARE_DYNCREATE(CMyDocument)
public:
    virtual BOOL OnNewDocument();
    virtual void Serialize(CArchive& ar);
};

এখানে, CMyDocument একটি ডকুমেন্ট ক্লাস, যা Serialize ফাংশনের মাধ্যমে ডেটা সঞ্চয় এবং লোড করে।


ভিউ (View)

View হল অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের অংশ, যেখানে ডকুমেন্টের ডেটা প্রদর্শিত হয়। এটি মূলত ডকুমেন্টের ডেটা ব্যবহারকারীর সামনে একটি উপস্থাপনা হিসেবে কাজ করে। ভিউ ডেটা উপস্থাপন করার পাশাপাশি ব্যবহারকারীর ইনপুটও গ্রহণ করে এবং সেই অনুযায়ী ডকুমেন্টের ডেটাকে আপডেট করতে পারে।

MFC তে একটি অ্যাপ্লিকেশন সাধারণত Multiple Views এবং Single View সমর্থন করে, যার মাধ্যমে একটি ডকুমেন্ট একাধিক ভিউতে প্রদর্শিত হতে পারে।

Code Example:

class CMyView : public CView
{
protected:
    CMyView();
    DECLARE_DYNCREATE(CMyView)
public:
    virtual void OnDraw(CDC* pDC);
};

এখানে, CMyView হল একটি ভিউ ক্লাস যা OnDraw ফাংশনের মাধ্যমে ডকুমেন্টের ডেটা গ্রাফিকালি অথবা টেক্সট ফরম্যাটে প্রদর্শন করে।


ডকুমেন্ট এবং ভিউ এর মধ্যে সম্পর্ক

Document এবং View এর মধ্যে একটি শক্তিশালী সম্পর্ক আছে। ডকুমেন্টের ডেটা পরিবর্তন হলে, সেই পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে ভিউতে প্রদর্শিত হয়। MFC তে Document এবং View এর মধ্যে সম্পর্ক Observer Pattern এর মতো কাজ করে, যেখানে View ডকুমেন্টের পরিবর্তনগুলো "observe" (অবজার্ভ) করে এবং ডকুমেন্ট আপডেট হলে ভিউ তা রিফ্রেশ করে।

  1. ডকুমেন্ট থেকে ভিউতে ডেটা ট্রান্সফার:
    ডকুমেন্টের ডেটা একটি OnDraw ফাংশনের মাধ্যমে ভিউতে পাঠানো হয়। ভিউটি তখন ডেটা রেন্ডার বা প্রদর্শন করার জন্য পদ্ধতি ব্যবহার করে।
  2. ভিউ থেকে ডকুমেন্টে ডেটা আপডেট:
    যখন ব্যবহারকারী কোনো ভিউতে কোনো পরিবর্তন করেন, সেই পরিবর্তনটি ডকুমেন্টে আপডেট হয়। উদাহরণস্বরূপ, ব্যবহারকারী কোনো টেক্সট বা মান এডিট করলে সেটি ডকুমেন্টের ডেটা পরিবর্তন করে।
  3. ডকুমেন্টের পরিবর্তন ভিউতে রিফ্লেক্ট হয়:
    যখন ডকুমেন্টের ডেটা পরিবর্তন হয়, তখন ভিউ সেটি অবহিত হয়ে Invalidate বা Update মেথড দিয়ে ভিউটি রিফ্রেশ করে, যাতে নতুন ডেটা প্রদর্শিত হয়।

সারাংশ

Document এবং View এর মধ্যে সম্পর্ক হল, ডকুমেন্টে থাকা ডেটা ভিউর মাধ্যমে প্রদর্শিত হয় এবং ভিউতে কোনো পরিবর্তন হলে তা ডকুমেন্টে সঞ্চয় করা হয়। Document/View Architecture একটি ডিসপ্লে লেয়ারের আলাদা থাকাটা নিশ্চিত করে, যার ফলে অ্যাপ্লিকেশনের লজিক এবং ইউজার ইন্টারফেসের মধ্যে স্পষ্ট আলাদা থাকে। এর ফলে অ্যাপ্লিকেশনটি আরও স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে।

Content added By

CDocument এবং CView ক্লাসের ব্যবহার

333

MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশন তৈরি করার সময় CDocument এবং CView ক্লাস দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি Document/View Architecture-এর অংশ, যা MFC এর ডেটা ম্যানিপুলেশন এবং ইউজার ইন্টারফেসের মধ্যে পরিষ্কার বিভাজন তৈরি করে। এই আর্কিটেকচারটি অ্যাপ্লিকেশনটির ডেটা এবং ইউজার ইন্টারফেসের মধ্যে সম্পর্ককে সহজভাবে মডেল করতে সাহায্য করে।


CDocument ক্লাস

CDocument ক্লাস MFC অ্যাপ্লিকেশনটির ডেটা ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি অ্যাপ্লিকেশনটির ডেটা ধারণ করে এবং সেই ডেটার সাথে সম্পর্কিত সমস্ত লজিক পরিচালনা করে। সাধারণত, এটি ডেটার খোঁজা, আপডেট, সংরক্ষণ এবং লোড করার কাজ করে। CDocument ক্লাসের ব্যবহার অ্যাপ্লিকেশনটির ডেটা মডেলের প্রতিনিধিত্ব হিসেবে কাজ করে।

CDocument ক্লাসের কিছু গুরুত্বপূর্ণ ফাংশন:

  • OnNewDocument(): নতুন ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।
  • OnOpenDocument(): ডকুমেন্ট খুলতে ব্যবহৃত হয়।
  • OnSaveDocument(): ডকুমেন্ট সেভ করার জন্য ব্যবহৃত হয়।
  • Serialize(): ডেটা সেভ বা লোড করার জন্য ব্যবহৃত হয়। এটি ডকুমেন্টের ডেটাকে সঞ্চয় করতে বা পুনরুদ্ধার করতে সাহায্য করে।

Code Example:

BOOL CMyDocument::OnNewDocument()
{
    if (!CDocument::OnNewDocument())
        return FALSE;
    
    // নতুন ডকুমেন্ট তৈরি করার লজিক
    return TRUE;
}

এখানে, OnNewDocument() ফাংশনটি একটি নতুন ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।


CView ক্লাস

CView ক্লাস হল অ্যাপ্লিকেশনটির ভিউ অংশ, যা ব্যবহারকারীর জন্য ডেটা প্রদর্শন করে। এটি ডেটার ইউজার ইন্টারফেস (UI) রেন্ডারিং এবং ইউজারের ইনপুট (যেমন, মাউস ক্লিক বা কীবোর্ড টাইপ) পরিচালনা করে। CView ক্লাস সাধারণত ডকুমেন্ট থেকে ডেটা অ্যাক্সেস করে এবং সেটি ব্যবহারকারীকে প্রদর্শন করে।

CView ক্লাসের সাথে যুক্ত কিছু গুরুত্বপূর্ণ ফাংশন:

  • OnDraw(): ভিউ রেন্ডার করার জন্য ব্যবহৃত হয়। এই ফাংশনটি ভিউতে ডেটা প্রদর্শন করার কাজ করে।
  • OnInitialUpdate(): ভিউ প্রথমবারের মতো আপডেট হওয়ার সময় কল হয়। এটি ভিউতে প্রাথমিক সেটআপ করতে ব্যবহৃত হয়।
  • OnUpdate(): ডকুমেন্টের পরিবর্তন হলে এটি কল হয় এবং ভিউকে রিফ্রেশ করে।

Code Example:

void CMyView::OnDraw(CDC* pDC)
{
    CMyDocument* pDoc = GetDocument();
    // ডকুমেন্ট থেকে ডেটা নিয়ে এটি প্রদর্শন করবে
    pDC->TextOut(100, 100, _T("Hello, MFC!"));
}

এখানে, OnDraw() ফাংশনটি ব্যবহার করে ভিউতে ডেটা রেন্ডার করা হয়েছে, যেখানে pDC->TextOut() ব্যবহার করে কিছু টেক্সট ডিসপ্লে করা হয়েছে।


CDocument এবং CView এর মধ্যে সম্পর্ক

  • CDocument ক্লাস অ্যাপ্লিকেশনের ডেটা পরিচালনা করে, কিন্তু এটি নিজে কোন ভিউ বা ইউজার ইন্টারফেস প্রদর্শন করে না।
  • CView ক্লাস অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস (UI) প্রতিনিধিত্ব করে এবং ডেটা প্রদর্শন করে।
  • Document/View Architecture অনুসরণ করে, ডেটা এবং ভিউ আলাদা থাকে, কিন্তু তারা একে অপরের সাথে যুক্ত থাকে। ডেটার পরিবর্তন হলে CView ক্লাসটি সেই পরিবর্তন আপডেট করে এবং CDocument ক্লাসে প্রযোজ্য পরিবর্তন কার্যকর করে।

সারাংশ

CDocument এবং CView ক্লাস MFC অ্যাপ্লিকেশনগুলিতে ডেটা ম্যানেজমেন্ট এবং ইউজার ইন্টারফেসের মধ্যে একটি স্পষ্ট বিভাজন তৈরি করে। CDocument ক্লাস অ্যাপ্লিকেশনের ডেটা ধারণ এবং পরিচালনা করে, যেমন ডেটা লোড, সেভ এবং আপডেট করা। অন্যদিকে, CView ক্লাস ডেটা প্রদর্শন এবং ইউজারের ইনপুট পরিচালনা করে। এই আর্কিটেকচারটি অ্যাপ্লিকেশনটির ডেটা এবং ইউজার ইন্টারফেসের মধ্যে সম্পর্ক সুনির্দিষ্টভাবে ব্যাখ্যা করে এবং সফটওয়্যার ডিজাইনে স্বচ্ছতা ও লচিলতা আনে।

Content added By

Data Serialization এবং File Management

391

MFC (Microsoft Foundation Classes) এ Data Serialization এবং File Management ব্যবহারকারীর ডেটা সংরক্ষণ, পঠন এবং লেখার জন্য গুরুত্বপূর্ণ উপাদান। Serialization এর মাধ্যমে ডেটা অবজেক্টকে একটি স্টোরেবল বা ট্রান্সফারযোগ্য ফর্মে রূপান্তর করা হয় এবং File Management এর মাধ্যমে সেই ডেটা ফাইল হিসেবে স্টোর করা বা রিড করা হয়।

এখানে Data Serialization এবং File Management এর ব্যবহার এবং তাদের মধ্যে পারস্পরিক সম্পর্ক বিস্তারিতভাবে আলোচনা করা হলো।


ডেটা সিরিয়ালাইজেশন (Data Serialization)

Serialization হল একটি প্রক্রিয়া যার মাধ্যমে একটি অবজেক্টের বর্তমান অবস্থা ফাইল বা স্টোরেজ মিডিয়াতে সংরক্ষণ করা যায় অথবা নেটওয়ার্কের মাধ্যমে পাঠানো যায়। মেমরি অবজেক্টগুলি সিরিয়ালাইজ করে বাইনারি বা টেক্সট ফরম্যাটে স্টোর করা যেতে পারে, যাতে এগুলি সহজে পুনরুদ্ধার বা স্থানান্তর করা যায়। MFC তে ডেটা সিরিয়ালাইজেশন করতে CArchive ক্লাস ব্যবহৃত হয়।

সিরিয়ালাইজেশন পদ্ধতি

  1. CObject ক্লাসের অবজেক্ট সিরিয়ালাইজেশন: MFC তে সব ক্লাসে সিরিয়ালাইজেশন যোগ করার জন্য, ক্লাসটি CObject থেকে ইনহেরিট করতে হয় এবং তারপরে Serialize ফাংশন ওভাররাইড করতে হয়।
  2. CArchive ক্লাস ব্যবহার: CArchive একটি স্পেশাল ক্লাস যা ডেটা রিড এবং রাইট করতে সাহায্য করে। এটি রিড/রাইট অপারেশন করতে গিয়ে ফাইল বা স্ট্রিমের সাথে কাজ করে।

কোড উদাহরণ

class CPerson : public CObject {
public:
    CString m_name;
    int m_age;

    DECLARE_SERIAL(CPerson)

    // সিরিয়ালাইজেশন ফাংশন
    void Serialize(CArchive& ar) {
        if (ar.IsStoring()) {
            ar << m_name;
            ar << m_age;
        } else {
            ar >> m_name;
            ar >> m_age;
        }
    }
};

// সিরিয়ালাইজেশন রিড এবং রাইট উদাহরণ
void SaveData() {
    CFile file(_T("person.dat"), CFile::modeCreate | CFile::modeWrite);
    CArchive ar(&file, CArchive::store);

    CPerson person;
    person.m_name = _T("John Doe");
    person.m_age = 30;
    person.Serialize(ar);

    ar.Close();
    file.Close();
}

void LoadData() {
    CFile file(_T("person.dat"), CFile::modeRead);
    CArchive ar(&file, CArchive::load);

    CPerson person;
    person.Serialize(ar);

    ar.Close();
    file.Close();
}

এখানে CPerson ক্লাসটি CObject থেকে ইনহেরিট করছে এবং Serialize ফাংশনটি তার নাম ও বয়স ডেটা স্টোর করার জন্য ব্যবহার হচ্ছে। SaveData এবং LoadData ফাংশনগুলি যথাক্রমে ডেটা ফাইল রাইট এবং রিড করতে ব্যবহৃত হচ্ছে।


ফাইল ম্যানেজমেন্ট (File Management)

ফাইল ম্যানেজমেন্টের মাধ্যমে অ্যাপ্লিকেশন ডেটা ফাইল তৈরি, পড়া, লেখার কাজ করে। MFC এ CFile ক্লাস এবং বিভিন্ন স্ট্রিম ক্লাসের মাধ্যমে ফাইল পরিচালনা করা হয়।

ফাইল লেখা (File Writing)

CFile ক্লাস ব্যবহার করে ফাইল লেখার জন্য, আপনি ফাইলের মোড নির্ধারণ করতে পারেন যেমন CFile::modeCreate (ফাইল তৈরি করতে), CFile::modeWrite (ফাইল লিখতে) ইত্যাদি।

void WriteToFile() {
    CFile file;
    if (file.Open(_T("data.txt"), CFile::modeCreate | CFile::modeWrite)) {
        CString text = _T("Hello, MFC!");
        file.Write(text, text.GetLength() * sizeof(TCHAR));
        file.Close();
    }
}

এখানে CFile::Write মেথড ব্যবহার করে data.txt ফাইলে টেক্সট লেখার উদাহরণ দেওয়া হয়েছে।

ফাইল পড়া (File Reading)

ফাইল পড়তে CFile::Read মেথড ব্যবহার করা হয়। এখানে একটি ফাইল থেকে টেক্সট রিড করার উদাহরণ দেওয়া হলো:

void ReadFromFile() {
    CFile file;
    if (file.Open(_T("data.txt"), CFile::modeRead)) {
        CString text;
        DWORD dwFileSize = file.GetLength();
        char* buffer = new char[dwFileSize + 1];
        file.Read(buffer, dwFileSize);
        buffer[dwFileSize] = '\0';
        text = buffer;
        delete[] buffer;
        file.Close();
    }
}

এখানে CFile::Read ব্যবহার করে data.txt ফাইল থেকে ডেটা পড়া হয়েছে এবং পরে সেটি CString এ স্টোর করা হয়েছে।


স্ট্রিম ক্লাস ব্যবহার (Using Stream Classes)

MFC তে ফাইল এবং ডেটা সিরিয়ালাইজেশন পরিচালনা করার জন্য CArchive ছাড়া স্ট্রিম ক্লাসও ব্যবহৃত হয়। CFile এবং CStdioFile এর মাধ্যমে সাধারণ ফাইল ম্যানেজমেন্ট করা যায়, যেখানে CStdioFile স্ট্যান্ডার্ড ইনপুট/আউটপুট স্ট্রিমের মতো কাজ করে।

CStdioFile উদাহরণ

void WriteTextFile() {
    CStdioFile file;
    if (file.Open(_T("example.txt"), CFile::modeCreate | CFile::modeWrite)) {
        file.WriteString(_T("This is a test.\n"));
        file.Close();
    }
}

void ReadTextFile() {
    CStdioFile file;
    if (file.Open(_T("example.txt"), CFile::modeRead)) {
        CString str;
        while (file.ReadString(str)) {
            AfxMessageBox(str);  // Show each line
        }
        file.Close();
    }
}

এখানে CStdioFile ব্যবহার করে example.txt ফাইলে লেখা ও পড়া হচ্ছে।


সারাংশ

Data Serialization এবং File Management MFC অ্যাপ্লিকেশনে ডেটা সংরক্ষণ ও স্থানান্তরের জন্য গুরুত্বপূর্ণ কৌশল। CObject এবং CArchive ক্লাস ব্যবহার করে ডেটা সিরিয়ালাইজ করা হয়, যা মেমরি অবজেক্টকে ফাইল ফরম্যাটে রূপান্তর করে। CFile এবং CStdioFile এর মাধ্যমে ফাইল পড়া, লেখা এবং ম্যানিপুলেশন করা হয়। এই প্রযুক্তিগুলি ব্যবহার করে MFC অ্যাপ্লিকেশনে ডেটা সঞ্চয়, রিকভারির পাশাপাশি ফাইল সিস্টেমের সঙ্গে ইন্টারঅ্যাকশন করা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...