অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সহ ডেটা ওরিয়েন্টেড ডিজাইন কীভাবে প্রয়োগ করবেন? [বন্ধ]


17

আমি ডেটা ওরিয়েন্টেড ডিজাইন (ডিওডি) সম্পর্কে প্রচুর নিবন্ধ পড়েছি এবং আমি এটি বুঝতে পারি তবে আমি ডিওডির কথা মাথায় রেখে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) সিস্টেমটি ডিজাইন করতে পারি না, আমি মনে করি আমার ওওপি শিক্ষা আমাকে অবরুদ্ধ করছে। কীভাবে দুজনকে মেশাতে ভাবব? উদ্দেশ্যটি হ'ল পর্দার পিছনে ডিওডি ব্যবহার করার সময় একটি দুর্দান্ত ওওপি ইন্টারফেস থাকে।

আমি এটিও দেখেছি কিন্তু খুব একটা সাহায্য করি নি: /programming/3872354/how-to-apply-dop-and-keep-a-nice-user-interface


3
আপনি কিছু আরো অনেক কিছু নির্দিষ্ট (এবং খেলা-সম্পর্কিত) এই প্রশ্ন হল পোষ্ট করতে প্রয়োজন পর্যন্ত খুব সাধারণ।
ডেড এমএমজি

আপনি ঠিক বলেছেন, তবে গেম প্রোগ্রামিংয়ের পাশাপাশি অন্যান্য ক্ষেত্রেও এটি আলোচিত হতে দেখিনি।
পম্পাল 21

4
@ ডেড এমএমজি: গেম বিকাশের উদ্ভবের অনুশীলনের উল্লেখ না করে গেম ডেভেলপমেন্টের বাইরের ডেটা-ওরিয়েন্টেড ডিজাইন শব্দটি আমি কখনও দেখিনি except আপনি যদি ডেটা-চালিত ডিজাইনের কথা ভাবছেন, তবে এটি একই জিনিস নয়।

উত্তর:


16

আমি বলতে চাই যে নোয়েল লোলোপিসের ব্লগটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং ডেটা-ওরিয়েন্টেড ডিজাইনের সংমিশ্রনের জন্য সম্ভবত সেরা নির্দেশ। তিনি ডিওডি পদটির প্রবর্তকদের একজন, একজন শক্তিশালী সি ++ প্রোগ্রামার, এবং তাঁর স্টাইল এবং তিনি সি ++ এর ওও বৈশিষ্ট্যগুলি কীভাবে গ্রহণ করেন সে সম্পর্কে একটি ভাল বিষয় লিখেছেন।

আমি অনুমান করি যে নোলের মতে আমি যদি তাদের সংমিশ্রনের মূল উপাদানগুলি কল করতে পারি:

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

এখনই ডিওডি প্রচারের অন্য বড় নাম হ'ল ইনসোনিয়াকের মাইক অ্যাক্টন, তবে তিনি যা লিখেছেন তা পড়লে আমি বলব যে তিনি সত্যিকার অর্থেই (ওও বিরোধী-ওও নয়, যতক্ষণ না এটি এখনও ডেটা-ভিত্তিক)।


উত্তরের জন্য আপনাকে ধন্যবাদ তবে আপনি যা বলছেন তা হ'ল ডিওডি ব্যবহার করার জন্য আমার কী করা উচিত, আমি কীভাবে এটির সাথে ওও ব্যবহার করতে পারি তা নয়। আমি নোলের ব্লগ, মাইক অ্যাক্টনের গ্রন্থ (: ডি), অন্যের মধ্যে ডাইসের প্রকাশনা পড়েছি এবং আমি ওও মিশ্রিত না হয়ে ডিওডি কীভাবে ব্যবহার করতে পারি তা বুঝতে পেরেছি
পম্পাল

2
আপনি ওও কি মনে করেন? আমি নোলের বেশিরভাগ কোড ওওকে কল করব, উদাহরণস্বরূপ - এখনও ক্লাস এবং উদাহরণ রয়েছে, এখনও টাইপ-ভিত্তিক প্রেরণ রয়েছে, এখনও উত্তরাধিকার থাকতে পারে (সি ++ 0x এর POD এর সংজ্ঞা এটির জন্য পরিবর্তন করা হয়েছিল)। এখনও একটি মডেল সমস্যায় অপারেশন না করে ডেটা দিয়ে শুরু করে।

উদাহরণস্বরূপ পলিমারফিজম ওওপির একটি গুরুত্বপূর্ণ অংশ, যেমন বস্তুর রাজ্যের মতো। ডেটা ওরিয়েন্টেড ডিজাইনটি হ'ল গেম সত্ত্বাকে অ্যানিমেটেবল সক্ষম, ইন্টারেক্টিভ সক্ষম, সরাতে সক্ষম, ... উত্তরাধিকার ব্যবহারের মতো বৈশিষ্ট্য দেওয়া উচিত। এটি সমস্ত একটি চৌকস ডেটা ম্যানেজারের উপর নির্ভর করে যা প্রতিটি উপাদান যেমন পদার্থবিদ্যা বা অ্যানিমেশনের জন্য কেবল প্রয়োজনীয় সত্তা সরবরাহ করে।
দানিজার

@ শরথিস: যদি আমি আপনার আপত্তি বুঝতে পারি তবে এটি যে সাব টাইপ পলিমারফিজম ওওর একটি প্রধান বৈশিষ্ট্য। আমি কোনও ভাষাটিকে সমর্থন না করে ওও বলে দাবি করার পক্ষে একমত পোষণ করি এটি আশ্চর্যজনক হবে তবে এর অর্থ এই নয় যে কোনও প্রোগ্রামিং গেমগুলির মধ্যে যে ধরণের সমস্যার মুখোমুখি হয় তার জন্য এটি প্রথম অবলম্বনের একটি সরঞ্জাম, এমনকি গেমটি ওও স্টাইলে প্রোগ্রাম করা হলেও । আমি আরও যুক্তি দিয়ে বলব যে ডিওডি হ'ল নির্দিষ্ট ধরণের পলিমারফিজম (নামমাত্র সাব টাইপিং) এড়ানো সম্পর্কে অন্যদের উত্সাহ দেওয়া (সি ++ এ, অ্যাডএল সহ অ্যাডহক পলিমারফিজম বা মান উপস্থাপনের গ্যারান্টি দিয়ে স্ট্রাকচারাল পলিমারফিজম)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.