অবজেক্ট-ওরিয়েন্টেড অ্যানালাইসিস এবং ডিজাইন [বন্ধ] ব্যবহার করে একটি লিফট মডেলিং করা


134

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

সমস্যাটি নিম্নরূপ: লিফট ব্যাংক অনুকরণ করার জন্য অবজেক্ট / পদ্ধতিগুলির একটি মৌলিক সেট ডিজাইন করুন। বস্তু এবং তাদের বৈশিষ্ট্য / পদ্ধতি কি?

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

কোনও অবজেক্ট-ওরিয়েন্টেড মডেলটিতে এটি মডেল করার সঠিক উপায় কী হবে?


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

হ্যাঁ, এটি একটি সত্যিই দুর্দান্ত মুক্ত প্রশ্ন এটি কখনই জিজ্ঞাসা করা হয়নি, দুর্ভাগ্যক্রমে :(
উরি

উত্তর:


165

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

তারপরে একটি ব্যাংক আছে। এটি লিফট ধারণ করে এবং মেঝে থেকে অনুরোধ গ্রহণ করে। এগুলি সমস্ত সক্রিয় লিফ্টের জন্য নির্ধারিত হয়েছে (রক্ষণাবেক্ষণে নয়)।

শিডিউলিংয়ের মতো হবে:

  • যদি পাওয়া যায় তবে এই মেঝেটির জন্য একটি স্থায়ী লিফট চয়ন করুন।
  • অন্যথায় এই তলায় চলে একটি লিফট চয়ন করুন।
  • অন্য কোন তলায় একটি স্থায়ী লিফট চয়ন করুন।
  • অন্যথায় সর্বনিম্ন লোড সহ লিফটটি বেছে নিন।

প্রতিটি লিফ্টের রাজ্যের একটি সেট রয়েছে।

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

অতিরিক্ত সংকেত রয়েছে:

  • বিপদাশঙ্কা। লিফট থামল। এবং যদি এটি মেঝেতে থাকে, দরজাগুলি খোলা হয়, অনুরোধের তালিকাটি সাফ হয়ে যায়, অনুরোধগুলি আবার ব্যাঙ্কে চলে যায়।
  • খোলা দরজা. লিফট মেঝেতে থাকলে এবং চলমান না থাকলে দরজা খোলে।
  • দরজা বন্ধ। দরজা খোলা থাকলে বন্ধ করে দিন।

সম্পাদনা: কিছু লিফট নীচে / first_floor esp এ শুরু হয় না। আকাশচুম্বী ক্ষেত্রে।

লিফ্টের জন্য min_floor এবং max_floor দুটি অতিরিক্ত বৈশিষ্ট্য।


16
লিফ্ট সিমুলেশন play.elevatorsaga.com
সমার পান্ডা

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

গ্রহণের অনুরোধ এবং সময়সূচি সিঙ্ক্রোনাস বা অ্যাসিনক্রোনাস হতে পারে? যদি অ্যাসিঙ্ক হয় তবে আমরা কীভাবে এটি অর্জন করব?
রোহিতাশ্বা নিগম

18

ডোনাল্ড নুথের আর্ট অফ কম্পিউটার প্রোগ্রামিং ভোল 1-এ লিফট এবং ডেটা-স্ট্রাকচারের প্রদর্শন রয়েছে। নথ একটি খুব পুঙ্খানুপুঙ্খ আলোচনা এবং প্রোগ্রাম উপস্থাপন করে।

নথ (1997) "তথ্য কাঠামো", আর্ট অফ কম্পিউটার প্রোগ্রামিং ভলিউম। 1 পিপি 3030-308


9
উপরের গুগল বইগুলির সাথে লিঙ্কযুক্ত।
দ্রাক্ষালতা

2
বইয়ের এই বিভাগটি লিফট সিমুলেশনটি কীভাবে চালাতে হয় তার বিবরণ (বিশদ বিবরণে) বর্ণনা করে। এটি কীভাবে এটি মডেল করবেন তা বর্ণনা করে না (একটি ওওপিতে)। তবে হ্যাঁ..গ্রেট বই!
ব্যবহারকারী 7

17

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

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

  1. কেন্দ্রীয় নিয়ামকের প্রতিনিধিত্ব (অনুমান করে একটি রয়েছে)।

  2. লিফটের প্রতিনিধিত্ব

  3. লিফটের ইন্টারফেস ইউনিটগুলির প্রতিনিধিত্ব (এগুলি লিফট থেকে লিফটে আলাদা হতে পারে)। স্পষ্টতই প্রতিটি তলায় ইত্যাদি বোতামগুলিও কল করুন etc.

  4. প্রতিটি তলায় তীর বা সূচকগুলির প্রতিনিধিত্ব (লিফট মডেলের প্রায় একটি "দৃশ্য")।

  5. একটি মানব এবং কার্গো প্রতিনিধিত্ব (সর্বাধিক লোড ফ্যাক্টরিং জন্য গুরুত্বপূর্ণ হতে পারে)

  6. বিল্ডিংয়ের প্রতিনিধিত্ব (কিছু ক্ষেত্রে, নির্দিষ্ট তলগুলি মাঝে মাঝে ব্লক করা হতে পারে ইত্যাদি))




2

লিফট সিস্টেম ডিজাইনের সময় বিষয়টি বিবেচনা করা উচিত ,

Elevator
Floor/Location Identifier
Number of steps
Rotation speed
Daterange
InstallationDate
MaintainenceDate
Department Identifier
AllowedWeight
Detail / Description
Poison Ratio (Statistics)
Start
Stop
SetDirection
SetRotationSpeed
EmergencyStop = Stop + Alert
EmergencyAccidentSenser Handler

প্রতিটি বাটন টিপুন একটি লিফট অনুরোধের ফলাফল যা পরিবেশন করা হবে। এই অনুরোধগুলির প্রত্যেকটি একটি গ্লোবাল জায়গায় ট্র্যাক করা হয়

বিল্ডিংয়ের লিফটের সংখ্যা ব্যবহারকারী নির্ধারণ করবেন। বিল্ডিংটিতে একটি নির্দিষ্ট সংখ্যক ফ্লোর থাকবে। লিফটে ফিট করতে পারে এমন যাত্রীর সংখ্যা নির্দিষ্ট করা হবে। যাত্রীরা তাদের গন্তব্য তলায় লিফট ছেড়ে যাওয়ার কারণে গণনা করা হবে। গন্তব্য মেঝেটি "এলোমেলো" পোইসন অন্তর ব্যবহার করে নির্ধারিত হবে। লিফ্টের সমস্ত যাত্রী যখন তাদের গন্তব্য মেঝেতে পৌঁছে যায়, লিফটে আরও যাত্রী বাছতে লবিতে ফিরে আসবে


2

চিন্তার বিষয় হ'ল আপনি কীভাবে লিফটকে জানান যে এটি উপরে বা নীচে চলে যেতে হবে। এবং যদি আপনার এই আচরণটি নিয়ন্ত্রণ করতে একটি কেন্দ্রীভূত শ্রেণি থাকে এবং আপনি কীভাবে নিয়ন্ত্রণটি বিতরণ করতে পারেন।

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

যেকোনো পরামর্শ?

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