我正在研究停车场的例子,并且在设计时做了一些假设。
在为项目/对象分配属性时,我有几个问题。
1)如果系统没有分配parkingSpace,即用户只是进入Lot,找到一个合适的地方(汽车/自行车/卡车/残障人士)并停放他的车。
我认为我不需要ParkingSpace对象,相反,我可以为每个category_of_parking_space保留no_of_free_places的数量。
由于停车位很大,我们只保留三个变量。
当车辆进入时,我们只减少上述值中的一个(这意味着可用的X位置,用户选择一个并在那里停车),&当车辆熄火时,我们增加相应的值。 (简而言之,停车场不是由任何人分配的,车辆只能到达其中一个符合条件的地方和公园)
2)假设我们有一个全球停车计时器。
- > start_time / end_time应该是Vehicle的属性吗?
或
- > vehicle_id,start_time,end_time是ParkingMeter的一部分。
3)假设需要parkingSpace对象,4_wheeler,2_wheeler,disapped应该是枚举类型,还是单独的类。
如果它的枚举,我们可以使用findEmptySlot(parkingSpace_type);
如果它们是完全独立的类,并且ParkingLot有一个方法findEmptySlot();
我们怎样才能得到合适的Slot?
ParkingMeter将负责设置车辆的开始,结束时间对吗?
如果有多个金额,1小时 - 20美元,2小时 - 30美元,3小时 - 40美元,5小时 - 50美元 拥有ParkingMeter类的这些部分是好还是将它们包含在一个单独的类“ParkingPrice”
中答案 0 :(得分:2)
好,
ParkingSpace
对象来描述公园里的空间。Vehicle
。它允许灵活地使用每种车辆类型的共同和独特属性(所有车辆的序列号,但是例如只有4_轮车具有门)。至于如何找到空的停车位,每个ParkingSpace
对象将具有$takenBy
属性,该属性将保持车辆对象的实例占据它。它应默认为null
,然后,您只需遍历ParkingLot
类中的空格数组,找到$space->takenBy == null
的空格数组。