শারীরিক বাস্তব-জগতের বিষয়গুলি উল্লেখ না করে কীভাবে একজন ওও শেখাতে পারে? [বন্ধ]


14

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


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

7
পাঠদানের সময় আপনি কেন পরিচিত, বোধগম্য, বাস্তব-জগতের জিনিসগুলি এড়াতে চান?
অ্যাডাম ক্রসল্যান্ড

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

3
সত্যই, আমি জিইউআই এবং ওয়েব-অ্যাপ্লিকেশনগুলির জন্য বস্তুর ব্যবহারের আরও কয়েকটি উদাহরণ দেখতে চাই (সুতরাং, ডেটা মডেল এবং মতামতের মতো) যেহেতু এগুলি সর্বোপরি উন্নয়নের মাংস এবং আলু। "রিয়েল-ওয়ার্ল্ড" অবজেক্টগুলি
হ'ল

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

উত্তর:


4

ওওর আসল ধারণাটির আজকের ওও যা আছে তার সাথে কিছুই করার নেই। (তাহলে দেখুন * অ্যালান কে আসলে "অবজেক্ট-ওরিয়েন্টেড" শব্দটি দ্বারা কী বোঝায়? )। আজকের অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং আইএস সাইকেল এবং ঘর এবং উপমা ইত্যাদির রূপকগুলির মতো বস্তু তৈরি সম্পর্কে আমি এগুলির সাথে দৃic়তার সাথে আঁকড়ে রাখার সুপারিশ করব কারণ রূপকের উদ্দেশ্য হ'ল লোকেরা তাদের ইতিমধ্যে বোঝে এমন ধারণাটি ব্যবহার করে বুঝতে সহায়তা করা। ওও সম্পর্কিত গভীর জিনিসগুলিতে ডুব দিলে পার্থক্যগুলি দেখতে তাদের পারস্পরিক সম্পর্ক দেখতে সহায়তা করুন।

সম্পাদনা: আজকের ওও সম্পূর্ণ স্বয়ংসম্পূর্ণ বস্তু তৈরি সম্পর্কে যাঁর বৈশিষ্ট্য এবং ক্ষমতাগুলি বিভিন্ন পদ্ধতি (ফাংশন) এবং বৈশিষ্ট্যগুলি (রেফারেন্স একে একে ভেরিয়েবল এবং ধ্রুবক) ব্যবহার করে সম্পূর্ণ / আংশিকভাবে বর্ণিত।


4

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

এটি "অবজেক্ট বিস্ফোরণ", অতিরিক্ত-সাধারণীকরণ এবং ভুল রূপক পছন্দ যা সমস্ত সাধারণ ভুল preven


1
সাদৃশ্যটির জবাব দেওয়ার পরিবর্তে প্রশ্নের উত্তর দেওয়ার জন্য +1 প্রয়োজন!
স্টিভেন জিউরিস

1
আমি এটিও ওও এর সারাংশ খুঁজে পাই। এটি OO- কে এর উপকারগুলি দেখতে কেমন লাগে তার পরিবর্তে কীভাবে তা বোঝায় of তালিকায় পুনঃব্যবহারযোগ্যতা যুক্ত করুন এবং আমি এই উত্তরটি আবার উঁচুতে চাই। ; পি
স্টিভেন জিউরিস

2

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

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

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


আমি যদি আলোচনার মাধ্যমে উল্লেখ করেছি তবে আপনি দেখতে পাবেন যে এটি নির্দেশিত হয়েছে যে অ্যালান কে ও ও হিসাবে উল্লেখ করেছেন আধুনিক ওওর সাথে কিছু করার নেই ... তাই আমি এটিকে উল্লেখ করেছি it
কেনেথ

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

@ মাইক সম্ভবত আপনি যা বলছেন তা এখনও আপনি ভুল বোঝাবুঝি করছেন ... আমি যে আলোচনার বিষয়টি করেছি তা উল্লেখ করে আমি উল্লেখ করেছিলাম যে তাঁর আসল ধারণাটি আজকের ওওর ক্ষেত্রে খুব বেশি প্রযোজ্য নয়। আমি অবশ্যই তাঁর ধারণাগুলি উপাসনা করি না বা তাদের অধ্যয়নও করি না।
কেনেথ

@ কেনেথ: আমি আমার "হট-বোতামগুলি" মুড়ে ফেলি, যেমন আমি যখন লোকেদের সত্য ওওপি সম্পর্কে কথা বলতে শুনি , বা একে একে আসলে কী বোঝাতে চেয়েছিল। দুঃখিত।
মাইক ডুনলাভে

@ মাইক অ্যালান কে বলেছেন যে তিনি অণুজীববিজ্ঞানের প্রশিক্ষণ থেকে প্রচুর অনুপ্রেরণা নিয়েছেন। বিশেষত, কোনও বস্তুর প্রতি তাঁর ধারণাটি ছিল (এবং আমি তার কোন কাগজপত্র / আলোচনায় সেটির উল্লেখ করি তা মনে করি না) কোষের ভিত্তিতে।
ফ্র্যাঙ্ক শায়ারার

1

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

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

না, আপনার শারীরিক বাস্তব বিশ্বের বস্তুগুলি ছাড়া এটি শেখানো উচিত নয়


1

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


1

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

গুরুত্বপূর্ণ বিষয় হ'ল লোকেরা এখনই আপনার উদাহরণগুলি বুঝতে পারে। লিফটগুলি কেবল এমন ব্যক্তিদের জন্য একটি ভাল উদাহরণ তৈরি করে যারা সমস্ত লিফ্টের সাথে পরিচিত। প্রভৃতি


1

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

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


পাশাপাশি যুক্ত করে বলবেন যে আপনার কাছে কেবলমাত্র তথ্য সংগ্রহের মতো অবজেক্ট রয়েছে কিনা তা খুঁজে বের করার এটি একটি ভাল উপায়, কারণ আপনি আক্ষরিকভাবে কিছু না করার কারও সাথে শেষ করবেন। তারপরে ভাবেন যে সেই বস্তুগুলির ডেটা কোথায় ব্যবহৃত হচ্ছে এবং সেই তথ্যটি কেবল সেইরকম বস্তুগুলিতে থাকার জন্য এটি আরও অর্থবোধ করবে?
Cormac Mulhall

0

আমি মনে করি একটি নীচের অংশ / ধাতব পদ্ধতির দরকারী হতে পারে। প্রথমে সরাসরি আদিম ব্যবহার না করে কীভাবে ডেটা স্ট্রাকচার করা যায় তা দেখানোর জন্য প্রথমে সি স্টাইলের স্ট্রাক্ট এবং পয়েন্টারগুলি ব্যাখ্যা করুন। তারপরে দেরীতে বাইন্ডিং এবং ফাংশন পয়েন্টারগুলি ব্যাখ্যা করুন। তারপরে ব্যাখ্যা করুন যে আপনি অবজেক্ট তৈরি করতে এটি ব্যবহার করতে পারেন, যা মূলত ডেটাগুলির সুনির্দিষ্টভাবে encapsulated পাইলস এবং সেই তথ্যগুলিতে অপারেটিংয়ের জন্য প্রয়োজনীয় ফাংশনগুলির দিকে নির্দেশক।

এই ব্যাখ্যাটি বাস্তবায়নের স্বতন্ত্রভাবে ধারণাটি শেখানোর প্রচলিত গণিত / কমপ সায়েন্ট পদ্ধতির বিরোধিতা করে, তবে এটি এমন দৃষ্টিভঙ্গি যা আমাকে (স্বীকারোক্তি দিয়েছিল যে ইঞ্জিনিয়ারিং সহ কোনও ব্যক্তি, কোনও কমপ বিজ্ঞান, ব্যাকগ্রাউন্ড নয়) অবশেষে ওও পেতে পারেন।

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