যিনি কেবল ফোর্টরান in 77 এ কোড করেছেন, তাকে আমি কীভাবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ব্যাখ্যা করব?


11

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

আমি কি তাকে বোঝানোর কোন সহজ উপায় যা তাকে বুঝতে সাহায্য করবে?


2
আপনি ছুতার না হয়ে পাখির ঘর তৈরি করতে পারেন। সম্ভবত তিনি প্রকল্পটি তার / পদ্ধতিগত পদ্ধতিতে শুরু করতে পারেন এবং আপনি কীভাবে ওওপি পদ্ধতিতে রিফ্যাক্টর করবেন তা আপনি তাকে দেখিয়ে দিতে পারেন। কখনও কখনও এটি "আমি ওওপি পাই না" তবে "আপনি কেন এই সমস্ত সমস্যায়
জেফো

4
তাকে কি নিজেকে বস্তু-ভিত্তিক প্রোগ্রাম করার দরকার আছে, বা প্রথাগত পদ্ধতিতে ওপেনফ্যাম ব্যবহার করা কি যথেষ্ট?
তারাবল ব্লু

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

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

উত্তর:


18

সংক্ষিপ্ত উত্তর: না।

দীর্ঘ উত্তর: কোনও "সহজ উপায়" নেই কারণ ওওপি সহজ থেকে অনেক দূরে। পদ্ধতিগত প্রোগ্রামিং সমস্ত "ভেরিয়েবল" এবং "যদি তবে গোটো" সম্পর্কে হয়। বাকী সমস্ত কিছুই সিনট্যাকটিক চিনি, তবে এই চারটি বিষয়গুলি হল প্রসেসরিয়াল প্রোগ্রামিং সম্পর্কে। একবার এগুলি পেয়ে গেলে কিছুই আপনাকে থামাতে পারে না।

ওওপি ভেরিয়েবল এবং কোডের টুকরোগুলি সংগঠিত করার একটি উপায়। ওওপি সংজ্ঞায়িত করার জন্য কতগুলি নিদর্শন রয়েছে? 25? 30? এমনকি যে সমস্ত শিক্ষক বিভিন্ন ভাষা ও ব্যাকগ্রাউন্ড থেকে ওওপি শিখেছেন তারাও তার নিজস্ব সংজ্ঞায় একমত নন, সুতরাং ... কীভাবে এটি সহজ হতে পারে?

আপনি কীভাবে এসেছেন তা আমি জানি না, তবে যেহেতু আপনার মায়ের আমার সাথে একই অভিজ্ঞতা রয়েছে, আমি আপনাকে বলতে পারি যে আমি কীভাবে এলাম।

আমি একটি খুব বড় প্রকল্পে সি তে প্রোগ্রামিং করছিলাম। এটি ছিল 1988 Many অনেক প্রোগ্রামার মডিউল এবং গ্রন্থাগারগুলি সংগঠিত করে অন্যান্য চাকরিতে হস্তক্ষেপ এড়াতে এবং দায়িত্বের আলাদা আলাদা রাখার অসুবিধা সহ।

আমরা একটি "সমাধান" এ এসেছি যা হ'ল সমস্ত আন্তঃসম্পর্কিত গ্লোবাল ডেটা স্ট্রাক্টগুলিতে স্থাপন করা, সেই স্ট্রাক্টগুলিতে এমন কিছু ফাংশন পয়েন্টার স্থাপন যেখানে কলব্যাকগুলি প্রয়োজন ছিল। আমরা যাকে বলি সেভাবে সাধারণকরণ করেছি io_mask(পাঠ্য মোডের ডায়ালগ বাক্সগুলির ধরণ) এবং graphic_managerইত্যাদি etc.

১৯৯ 1996 সালে এটি আবিষ্কার করা খুব সহজ ছিল যে এই স্ট্রাক্টগুলির নাম দেওয়া হয়েছিল "শ্রেণি" এবং সেই ফাংশন পয়েন্টারগুলির পরিবর্তে সদস্য ফাংশন এবং ভার্চুয়াল ফাংশন দ্বারা প্রতিস্থাপন করা হয়েছে, বা অন্যান্য প্রোগ্রামারগুলির দ্বারা লিঙ্কযুক্ত (আচরণ হিসাবে পরিচিত) যারা সেই পুরানো প্রকল্পটি পুনর্নবীকরণ করেছিলেন।

যখন আমি এর প্রয়োজনীয়তা অনুভব করতে শুরু করি তখন আমি ওওপি বুঝতে শুরু করি: বিভাজন, বহুবিজ্ঞান এবং রানটাইম সংজ্ঞায়িত আচরণগুলি।

আজ আমি ওওপি-র সাথে কাজ করছি, তবে আমি এটিকে পরিবেশন করার মতবাদ হিসাবে ভাবি না: কেবলমাত্র একটি "প্রচলিত প্রতিমা" (সেট ...) যা আমাদের দীর্ঘ সময় ধরে ব্যাখ্যা এবং বিবরণ সরবরাহ না করে এক সাথে কথা বলতে দেয় । আসলে, অন্য কিছুর চেয়ে "কনভেনশন"। সর্বোপরি, সমস্ত ওওপি হ'ল "চালু হয়" যদি হয় তবে: এটি কেবল "মাল্টিলেয়ার্ড" করে। অতএব বিমূর্ততা এবং মূর্খতা প্রতিমা।

তাদের উপেক্ষা কর. যতক্ষণ না সে তাদের প্রয়োজনীয়তা অনুভব করে ততক্ষণ পর্যন্ত ব্যাখ্যা করার চেষ্টাও করবেন না: তিনি এগুলিকে সাধারণ জিনিসগুলি করার জটিল উপায় হিসাবে অনুভব করবেন। এবং তিনি ঠিক বলেছেন ... যতক্ষণ না তিনি যা করেন - সত্য-সরল।

শীর্ষে মাত্র চারটি জিনিস থাকলে কেউ "ডেস্ক সংগঠিত" করার কথা ভাববে না। শীর্ষস্থানীয় জিনিসগুলি একে অপরকে হস্তক্ষেপ করা শুরু করার সময় তা বোঝা যায়। ওওপি-র আসার সময় এটি।

সি ++ এর সাথে কাজ করার জন্য আপনার ওওপি দরকার নেই। পুরো সি ++ স্ট্যান্ডার্ড গ্রন্থাগারটি ওওপির শর্তে ডিজাইন করা হয়নি (যদিও এটি এর সাথে সহযোগিতা করতে পারে), এবং সি ++ জাভা নয়।

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

আমি যারা সি ++: এক্সিলারেটেড সি ++ এর কাছে যেতে চাই তাদের জন্য একটি ভাল বইয়ের পরামর্শ দেই : এটি পূর্বনির্ধারিত মতবাদ অনুসরণ করার ভান করেই আপনাকে সি ++ আইডিয়ামগুলিতে নিয়ে আসবে।


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

@ জোনাডাবোন, ক্লাস, ভার্চুয়াল পদ্ধতি ইত্যাদির একটি অপারেশনাল শব্দার্থক শব্দগুলি বোঝার (এবং ব্যাখ্যা করার জন্য) এটি বেশ সহজ (ঠিক এই উত্তরটি যেমনটি বোঝায়)। এটি রকেট বিজ্ঞান নয়। কেবল অকেজো এবং অপ্রাসঙ্গিক OOP "বিমূর্ততা" থেকে দূরে থাকুন।
এসকে-যুক্তি

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

7

একজন প্রবীণ বন্ধু দাবি করেছিলেন যে ওও প্রোগ্রামিং সম্পর্কে আমার সবচেয়ে সংক্ষিপ্ত সংজ্ঞা ছিল এবং আমি পেয়েছি যে এটি কিছু লোকের জন্য কাজ করে (এবং অন্যদের জন্য নয়):

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং হ'ল একটি মতামত সহ ডেটা। আপনি চেয়ারটি সরান না, আপনি চেয়ারটিকে নিজেই সরিয়ে নিতে বলুন। আপনি তালিকাটি বাছাই করেন না, আপনি নিজেকে বাছাই করতে বলছেন (সম্ভবত কোনও ইঙ্গিত সহ)। প্রভৃতি

ধারণাটি হ'ল ব্যক্তিটি কীভাবে তাদের প্রোগ্রামের মধ্যে জিনিসগুলি সম্পন্ন হয় সে সম্পর্কে আলাদাভাবে চিন্তাভাবনা করে ।


+1 এটি "জিজ্ঞাসা করুন, বলুন না" দ্বারাও যায়।
ব্যবহারকারী949300

আপনার অর্থ "বলুন, জিজ্ঞাসা করবেন না"। :)
রামন লিওন

3

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

কোনও বস্তু নিন, উদাহরণস্বরূপ লন মাওয়ার, এটির একটি নির্দিষ্ট বৈশিষ্ট্য রয়েছে এবং এটি একটি নির্দিষ্ট কাজ করতে পারে। (অবজেক্ট এবং ক্লাস)

তারপরে তাকে আরও ভাল লন মাওয়ার সম্পর্কে বলুন যা আপনার কাছে ইতিমধ্যে থাকা লন মওয়ারের একটি বর্ধন। তাকে আরও ভাল বলুন তবে এখনও একই পদ্ধতিতে (উত্তরাধিকার) তৈরি করে।

তারপরে তাকে নিজের সম্পর্কে বলুন। তাকে বলুন আপনি কখনও কখনও লন কাঁচা বিশেষজ্ঞ হয়ে উঠতে পারেন তবে আপনি আসলে একজন প্রোগ্রামার এবং জীবিকার জন্য এটি করেন। এটি একইসাথে আপনি দুটি পৃথক সত্তা হিসাবে অভিনয় করার মতো। এটি বহুবাদিতা।

এই বিষয়টি পাওয়ার পরে, তাকে কীভাবে শিখতে হবে (সি ++) ভাষায় এই জিনিসগুলি কীভাবে প্রয়োগ করতে হবে সে সম্পর্কে তাকে বলুন।

তারপরে তাকে বলুন, কম্পিউটার জগতে যদি তাকে এই জগতের একটি অনুকরণ লিখতে হয় তবে কীভাবে এটি করতে হয় তা শিখতে হবে তাকে।

যখন সে জানে কীভাবে তার বাস্তব বিশ্বের চিন্তাভাবনাগুলি প্রোগ্রাম কোডে রূপান্তর করতে পারে। তিনি কীভাবে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে প্রোগ্রাম করতে শিখতেন।


@ জোনাডবোন কোনও সমস্যা নেই, আমি ওওপি শিখতে এক বছর সময় নিয়েছি (আমি নিজে শিখেছি), তবে আমি একই উদাহরণগুলি ব্যবহার করেছি :) এবং হঠাৎ আলোকিত অনুভূত হয়েছিল। LOL
অনিকেত ইনজ

5
না না না না না! আমার অভিজ্ঞতায় "বাস্তব বিশ্বে জিনিসগুলির সম্পর্কে চিন্তা করুন" এমন কাউকে OOP ব্যাখ্যা করার একটি ভয়ঙ্কর উপায় যা ইতিমধ্যে এটি বোঝে না। এটি উদ্ভট ভুল বোঝাবুঝি এবং OOP এর অপব্যবহারের দিকে পরিচালিত করে এবং প্রায়শই কেবল বিভ্রান্তি গভীর করে তোলে।
জেএসবি ձոգչ

পলিমারফিজমের নিয়মগুলি অপটিমাইজেশনের মতো। বিধি এ) এটি করবেন না,, বিধি বি) (কেবল বিশেষজ্ঞদের জন্য!): এটি এখনও করবেন না।
mattnz

1
জেএসবি Ag এর সাথে সম্মত হন ձոգչ এটি ওওপি ব্যাখ্যা করার পক্ষে একটি সাধারণ উপায়, তবে আমার মতে এটি সত্যই অসহনীয়। প্রোগ্রামিংয়ের অবজেক্টগুলি সত্যিকারের জীবনের বস্তুর মতো কিছুই নয়।
রোয়ান ফ্রিম্যান

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

1

আমি এসেম্বলার এবং কোবল থেকে রুবিতে গিয়েছি।

আমাকে প্রাথমিকভাবে যা সহায়তা করেছিল তা প্রকৃতপক্ষে উদাহরণ তৈরির শ্রেণীর ধারণাকে উপেক্ষা করছিল।

শুধু কোড দিয়ে শুরু করুন। একটি ক্লাস আছে তবে কেবল ক্লাস স্তর পদ্ধতি রয়েছে। পদ্ধতির মধ্যে প্রচুর স্টাফ প্যারামিটার, ভেরিয়েবল, কন্ডিশনাল, অ্যারে, স্ট্রিং, বুলিয়ান ইত্যাদি সম্পর্কে রয়েছে stuff

সুতরাং এই মুহুর্তে শ্রেণিটিকে কেবল আপনার সমস্ত সম্পর্কিত পদ্ধতি রাখার জন্য জায়গা হিসাবে উদ্দেশ্য হিসাবে পরিবেশন করা হিসাবে দেখা যেতে পারে it এটিকে একটি ধারক বা লাইব্রেরি বলুন তার সাথে আরও পরিচিত হবে।

স্পষ্টতই কোডটি ম্যানেজ করার জন্য বিভাগকে বিভক্ত করতে হবে যাতে আপনার প্রতিটি ক্ষেত্রের একটি থাকে। উদাহরণস্বরূপ, পিসিতে ইউটিলিটি প্রোগ্রামের সেট পরিচালনা করার জন্য আপনার কাছে একটি ক্যালকুলেটর শ্রেণি থাকতে পারে যেখানে আপনি ক্যালকুলেটারের জন্য সমস্ত কোড এক জায়গায় রেখে দিতে পারেন। আপনার পিসিতে যদি কেবল 1 টি ক্যালকুলেটর থাকে তবে শ্রেণি স্তর পদ্ধতিগুলি যথেষ্ট।

এটি একটি শুরু।

ঠিক আছে এখন এই বিষয়টি বিবেচনা করুন যে আপনি একাধিক ক্যালকুলেটর খুলতে চান এবং প্রতিটির চেহারাটি কীভাবে পর্দায় রয়েছে তা পরিবর্তন করতে চান। সুতরাং এখন আপনার কাছে কেবল 'স্ক্রিন_লোকেশন' এর মতো একটি ক্যালকুলেটর পদ্ধতি থাকতে পারে না কারণ আপনার কয়েকটি রয়েছে এবং প্রতিটি উদাহরণের নিজস্ব অবস্থান রয়েছে ... প্রতিটি উদাহরণ ... ঠিক আছে, তাই আমাদের উদাহরণ প্রয়োজন।

দ্রষ্টব্য: আমার পদগুলি রুবি থেকে নয় সি ++ তাই আপনাকে অনুবাদ করার প্রয়োজন হতে পারে।


0

আপনি আপনার ধারণাগুলি বিভক্ত করতে কতটা পছন্দ করেন তার উপর নির্ভর করে আমি এটি দুটি ধাপে বা চারটি ক্ষেত্রে ব্যাখ্যা করব।

পদক্ষেপ 1: কাঠামোর সাথে তার পরিচয় করিয়ে দিন। এটি ফোর্টরান ডেটা ধরণের থেকে স্ট্রাকচার পর্যন্ত মোটামুটি ছোট পদক্ষেপ। পদক্ষেপ 1 এ: নিশ্চিত করুন যে তিনি গতিশীল মেমরির বরাদ্দ এবং পয়েন্টারগুলি বুঝতে পেরেছেন।

পদক্ষেপ 2: কেবলমাত্র সেই কাঠামোর সাথে সম্পর্কিত পদ্ধতি যুক্ত করুন। পদক্ষেপ 2 এ: বৃহত্তর কাঠামো যা "ছোট ছোট কাঠামো" মোড়ানো "তার ভিত্তিতে উত্তরাধিকার যুক্ত করুন।

একজন ফোর্টরান প্রোগ্রামারের কাছে, "বাহ" ফ্যাক্টরটি হ'ল সংকলকটির উপর নজর রাখা অনেক বেশি। হা. সংকলকদের জন্য এটি কি ...


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

0

যদি তিনি এক দশক আগে তাঁর থিসিস করেন, তবে তিনি সম্ভবত ফোরটান 90 বা 95 ব্যবহার করেছেন, সেক্ষেত্রে তথ্যটি প্রাপ্ত তথ্যের সাথে সম্পর্কের ক্ষেত্রে এটি সম্পর্কে কথা বলা উচিত। যদি এটি বেশ আগেই ছিল যে তিনি ফোর্টরান used 77 ব্যবহার করেছেন, তবে তার জন্য ফোর্টরান ৯০ এ প্রাপ্ত ডেটা জাতীয় ধরণের সাথে পরিচয় করিয়ে দিন এবং তারপরে এটি সম্পর্কে কথা বলুন ...

আমি বহুবর্ষ এবং উত্তরাধিকারে যাব না, যতক্ষণ না সে এনক্যাপসুলেশন ধরেছে, কারণ এগুলি এনকেপসুলেশনের বিশেষ ক্ষেত্রে এবং এক্সটেনশন হিসাবে দেখা যেতে পারে। আমি সম্ভবত তাকে এমন ভাষায় শুরু করব যা হয় ফ্রি ফাংশন বা স্থিত শ্রেণীর অনুমতি দেয়।


0

একবার সে স্ট্রাকচারগুলি বুঝতে পারলে, আমি মনে করি যে পরবর্তী মূল বিষয়টি হ'ল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংটি এমন একটি পদ্ধতির সীমিতকরণের উপায় হিসাবে কাজ করে যা কোনও জিনিস পাস হতে পারে, সেই পদ্ধতির সেটে যা আসলে প্রয়োগ করা যেতে পারে to জিনিস।

অ-অবজেক্ট-ভিত্তিক প্রোগ্রামিং-এ, যদি কেউ একটি ট্রি এবং লিংকডলিস্টের জন্য পৃথক উপাত্ত ব্যবহার করে থাকে তবে প্রত্যেককে নোড যুক্ত করার জন্য আলাদা আলাদা পদ্ধতি ব্যবহার করতে হবে। অ অবজেক্ট ওরিয়েন্টেড ভাষায় সাধারণত কোঁ কোঁ করা যদি এক উভয় পদ্ধতি নাম করার চেষ্টা করবে AddItem, যেহেতু কোন প্রদত্ত নাম শুধুমাত্র একটি পদ্ধতি উল্লেখ করতে পারেন, এইভাবে মত পদ্ধতি নাম তৈরি করতে এক নেতৃস্থানীয় AddTreeItem, AddLinkedListItem, RemoveTreeItem, ইত্যাদি যেমন একটি পদ্ধতির কাজ, কিন্তু এটি একটি বিট কুশ্রী। ধারণাগতভাবে, পদ্ধতিগুলি AddTreeItemএবং এক সাথে সম্পর্কিত RemoveTreeItemবলে মনে হয়, তবে নামগুলি সেভাবে সাজায় না sort এক নাম পুনর্লিখন পারে TreeAddItem, TreeRemoveItem,LinkedListAddItem, ইত্যাদি। তবে এটি প্রতিটি পদ্ধতির অনুরোধের শুরুতে প্রচুর "রিলান্ড্যান্ট শোরগোল" রাখে। একটি সাধারণ প্রোগ্রামে মেথড কলগুলির বিশাল সংখ্যাটিতে তিনটি প্রয়োজনীয় টুকরো তথ্য থাকবে: (1) উত্স কোডের কোন অংশটিতে পদ্ধতি রয়েছে; (২) বিভাগে কোন পদ্ধতি ব্যবহার করা হচ্ছে; (৩) কোন টুকরো ডেটা নিয়ে কাজ করা হচ্ছে? অনেক ক্ষেত্রে, যে ধরণের ডেটা নিয়ে কাজ করা হচ্ছে তা পদ্ধতিটি কোন কোড বিভাগের অন্তর্ভুক্ত তা সনাক্ত করতে যথেষ্ট হবে, সুতরাং উপরের অংশ (1) অপ্রয়োজনীয়। বিবৃতি শুরুর সময় অন্য কোথাও উপাদানের চেয়ে দৃশ্যমানভাবে চিহ্নিত করা সহজ, সুতরাং একটি কোডিং / নামকরণের স্টাইলটি TreeAddItem(myTree, whatever)প্রাইম স্পটটিতে নূন্যতম দরকারী টুকরোগুলি রাখে।

বিপরীতে, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ব্যবহার করে, কেউ কার্যকর পদ্ধতিগুলির নামকরণ করবে Tree.AddItemইত্যাদি ইত্যাদি এবং কোনও বিবৃতি myTree.AddItem(whatever)একটি সংকলককে বলতে বাধ্য করবে যে মূলত, "হুঁ ... myTreeধরণের Tree, তাই এই কোডটি আহ্বান করা উচিত Tree.AddItem()। এটি প্রয়োজনীয় নয় সংকলক প্রকারটি জেনে রাখার পর থেকে Tree.কল করার সময় নির্দিষ্ট করে নিন Con ধারণা অনুসারে, একটি বিবৃতি সমান , এবং কিছু অবজেক্ট-ওরিয়েন্টেড ভাষাগুলি উভয় ফর্মকে সমতুল্য হিসাবে মঞ্জুরি দিতে পারে; বাস্তবে, বেশিরভাগ ভাষাগুলি ফাংশনের স্পেসিফিকেশন থেকে প্রথম প্যারামিটার বাদ দেয় এবং পরিবর্তে থাকে ক্লাসে যেমন পদ্ধতিগুলি সংজ্ঞায়িত করা হয় সেগুলি স্পষ্টভাবে টাইপের একটি প্যারামিটার নেয় এবং এটির নাম , বা , হিসাবে নির্ধারণ করে ।AddItemmyTreemyTree.AddItem(whatever)Tree.AddItem(myTree, whatever)TreeTreethisselfMe

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


0

ক্লাস-ওরিয়েন্টেড অর্থে এখানে প্রাসঙ্গিক - অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং হ'ল কোডটির সাথে ডেটা উপস্থাপনের মিশ্রণ সম্পর্কে যা এটি পরিচালনা করে। নিম্নলিখিত বিষয়গুলি বোধগম্য হলে এটি বোধগম্য হয়:

  • কাপলিং: এটিতে কাজ করা ডেটার প্রতিনিধিত্বের পাশাপাশি একটি ক্রিয়াকলাপ সংজ্ঞায়িত করা

  • দেরীতে বাইন্ডিং: রানটাইমের সময় উপাত্ত উপস্থাপনা এবং আচরণের সংমিশ্রণ বেছে নেওয়া

  • এনক্যাপসুলেশন: ডেটাটি নির্মাণের দ্বারা বৈধ কিনা এবং পরে অবৈধ হবে না তা নিশ্চিত করে

এখানেই শেষ. যে কোনও প্রযুক্তির মতো , এর অন্তরে এটি কেবল একটি সুবিধামত, যা থেকে পরে অনেকগুলি বিকাশ অনুসরণ করে। একবার আপনি বেসিকগুলি বুঝতে পারলে বাকিগুলি সময়মতো অনুসরণ করে।


0

আমি ব্লুজে ডাউনলোড করার পরামর্শ দিচ্ছি, এটি 20 মিনিটের জন্য খেলে তার সাথে তার সাথে 20 মিনিটের জন্য খেলতে হবে।

এটি ক্লাস, ইন্টারফেস এবং উত্তরাধিকারের দৃশ্যকে যেভাবে দেখায় তা এতটাই স্পষ্ট এবং স্বজ্ঞাত যে আপনি কোনও কিছু প্রয়োগ করার সাথে সাথে এটি সত্যই আপনাকে তাত্ক্ষণিক বোঝার সুযোগ দেয় anything

এমনকি এটি আপনাকে ক্লাস এবং কোনও অবজেক্টের মধ্যে সরাসরি পার্থক্য দেখায়

এটি ওও ডিজাইনের ধরণগুলিতে কোনও গভীর অন্তর্দৃষ্টি দেয় না, তবে এটি ধারণাগুলির একটি দুর্দান্ত ওভারভিউ দেবে।


0

প্রোগ্রামিং প্যারাডিম এবং প্রোগ্রামিং ভাষার মধ্যে যে পার্থক্য রয়েছে যা এই দৃষ্টান্তগুলি প্রয়োগ করে তার মধ্যে পার্থক্যের স্মারক হিসাবে আমি আমার অবদান যুক্ত করতে চাই।

সুতরাং, আমার মতে, কোনও F77 ব্যবহারকারীর কাছে সি ++ দিয়ে অবজেক্ট অরিয়েন্টেশন ব্যাখ্যা করার সর্বোত্তম উপায় হ'ল ধাপে ধাপে এগিয়ে যাওয়া:

প্রথমে ফোর্টরান 77 77 তে অবজেক্টের মতো কাঠামো কীভাবে বিকাশ করা যায় সে সম্পর্কে তাকে দেখিয়ে একটি পরিচিত সেটিংয়ে ব্যবহারকারীকে অবজেক্ট ওরিয়েন্টেশন ধারণার সাথে পরিচয় করিয়ে দিন - উদাহরণস্বরূপ, বি প্যাটন "অবজেক্ট-ওরিয়েন্টেড ফোর্টরান (77" (একজন চর্চাকারীর দেখুন) "সিগপ্ল্যান ফোর্টারান ফোরাম 12, 2 (1993), পৃষ্ঠা 23-24 এবং এর উল্লেখ।

তারপরে, সেই কাঠামো এবং সি ++ শ্রেণি এবং পদ্ধতিগুলির মধ্যে একটি চিঠিপত্র স্থাপন করুন।

অবশেষে, সিও ++ ওও প্রোগ্রামিংয়ের সুবিধার্থে সরবরাহ করতে পারে এমন অতিরিক্ত বৈশিষ্ট্যগুলি নিয়ে আলোচনা করুন।


0

আমি প্রথম যখন পাস্কালে আমার প্রাথমিক প্রশিক্ষণ থেকে কোনও অবজেক্ট ওরিয়েন্টেড ভাষায় স্থানান্তরিত হয়েছিলাম তখন '।' সমস্যাটিও আমার পক্ষে সবচেয়ে বড় বাধা ছিল। এটি পেরেতে আমার কয়েক বছর সময় লেগেছে।

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

  • মূলত পয়েন্টার এমন কিছুর অর্থ কী, যার কাছে অন্য পয়েন্টারটি নির্দেশ করে, যা পিতামাতার পয়েন্টারের চেয়ে আলাদা জিনিসকে সমাধান করে?

আমার জন্য আহা মুহূর্তটি যখন আমি বুঝতে পারি যে শীর্ষ স্তরের পয়েন্টারটি মূলত কেবল একটি নাম স্থান।

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

এই অনুশীলনটি করার মাধ্যমে তাকে প্রাথমিক "এটি কোন জাদুবিদ্যা?" হার্ডল।


-2

একটি মূল অন্তর্দৃষ্টি যা আমাকে আগে ব্যাখ্যা করতে সহায়তা করেছিল তা হ'ল আপনার ক্লাসের একাধিক উদাহরণ থাকতে পারে। "অঙ্কন" বা "ছাঁচ" এবং "অনুলিপি" এর শর্তে এটি ব্যাখ্যা করার চেষ্টা করুন এবং দেখুন এটি কোথাও পৌঁছেছে কিনা।


ডাউনভোটগুলি সত্যই বুঝতে পারবেন না। ব্যাখ্যা করার এই উপায়টি আমাকে কয়েকবার সহায়তা করেছে। এটি রূপোর বুলেট বলছেন না, তবে মনে হচ্ছে লোকেরা এতে আটকে যায়।
আলেকজান্ডার টর্সলিং 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.