ساحة انتظار السيارات، تصميم OOP - تصميم مخصص [مغلق]

StackOverflow https://stackoverflow.com/questions/9454102

  •  13-11-2019
  •  | 
  •  

سؤال

أنا أعمل على مثال موقف السيارات، وقمت ببعض الافتراضات أثناء التصميم.

لدي سؤالين حول تعيين السمات للعناصر/الكائنات.

1) إذا لم يتم تعيين مكان لوقوف السيارات من خلال النظام، على سبيل المثال، المستخدم في موقف السيارات، يجد مكانًا مناسبًا (سيارة/دراجة/شاحنة/معاق) ويوقف سيارته.

أعتقد أنني لست بحاجة إلى كائن ParkingSpace، ولكن بدلاً من ذلك، يمكنني الاحتفاظ بعدد no_of_free_places لكل فئة_of_parking_space.

وبما أن مساحة وقوف السيارات كبيرة، فإننا نحافظ فقط على ثلاثة متغيرات.

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicapped

عندما تأتي مركبة، نقوم فقط بتقليل إحدى القيم المذكورة أعلاه (مما يعني أنه من بين الأماكن X المتاحة، يختار المستخدم واحدًا ويوقف هناك)، وعندما تخرج المركبات، نقوم بزيادة القيمة المقابلة.(باختصار، لا يتم تخصيص موقف للسيارات من قبل أي شخص، بل تذهب السيارة فقط إلى أحد الأماكن والمنتزهات المؤهلة هناك)

2) بافتراض أن لدينا عدادًا عالميًا واحدًا لوقوف السيارات.
--> هل يجب أن يكون وقت البدء/وقت النهاية سمة للمركبة؟
أو
--> مركبة_id، start_time، end_time تكون جزءًا من ParkingMeter.

3) بافتراض الحاجة إلى كائن parkingSpace، هل يجب أن تكون 4_wheeler أو 2_wheeler أو المعاقين من النوع التعدادي أو فئة منفصلة تمامًا.
إذا كان التعداد الخاص به، فيمكننا استخدام findEmptySlot(parkingSpace_type);
إذا كانت فئة منفصلة تمامًا، وكان ParkingLot لديه طريقة findEmptySlot();
كيف يمكننا الحصول على الفتحة المناسبة؟

سيكون ParkingMeter مسؤولاً عن ضبط أوقات بدء السيارة وانتهائها بشكل صحيح؟

إذا كان لديه مبالغ متعددة، ساعة واحدة - 20 دولارًا، ساعتين - 30 دولارًا، 3 ساعات - 40 دولارًا، 5 ساعات - 50 دولارًا
هل من الجيد أن يكون هذا الجزء من فئة ParkingMeter أو إدراجها في فئة منفصلة "ParkingPrice"

هل كانت مفيدة؟

المحلول

تمام،

  1. لم أفهم السؤال حقًا، لكني سأستخدم مصفوفة بالفعل ParkingSpace كائنات لوصف المساحات في الحديقة.
  2. وبما أن الوقت مخصص لكل مركبة، فيجب ضبط الوقت على المركبة.
  3. سأستخدم فئة مختلفة لكل منها، ويجب أن يقوم كل منها بتوسيع الفصل المجرد Vehicle.فهو يسمح بالمرونة فيما يتعلق بالسمات المشتركة والفريدة لكل نوع مركبة (الرقم التسلسلي لجميع المركبات، ولكن فقط المركبات ذات الأربع عجلات هي التي تحتوي على أبواب على سبيل المثال).أما بالنسبة لكيفية العثور على أماكن وقوف السيارات الفارغة، لكل منها ParkingSpace سيكون للكائن $takenBy الخاصية، والتي من شأنها أن تحتوي على مثيل لكائن السيارة الذي يشغلها.ينبغي أن الافتراضي ل null, ، بعد ذلك، يمكنك ببساطة التكرار عبر مجموعة المسافات الموجودة في ملفك ParkingLot فئة، والعثور على واحد مع $space->takenBy == null.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top