停车场,OOP设计-定制设计

停车场,OOP设计-定制设计,oop,system-design,Oop,System Design,我正在研究停车场示例,在设计时做了一些假设 在为项目/对象分配属性方面,我有几个问题 1) 如果系统未分配停车空间,即用户刚进入停车场,则找到合适的位置(汽车/自行车/卡车/残疾人)并停车 我想我不需要ParkingSpace对象,但相反,我可以为每个类别的ParkingSpace保留无空闲位置的计数 由于停车位很大,我们只保留三个变量 没有免费的车 没有免费的自行车 没有空闲槽的卡车 没有免费的位子残疾人 当车辆进入时,我们只需减少上述值中的一个(这意味着,在可用的X个位置中,用户选择一个

我正在研究停车场示例,在设计时做了一些假设

在为项目/对象分配属性方面,我有几个问题

1) 如果系统未分配停车空间,即用户刚进入停车场,则找到合适的位置(汽车/自行车/卡车/残疾人)并停车

我想我不需要ParkingSpace对象,但相反,我可以为每个类别的ParkingSpace保留无空闲位置的计数

由于停车位很大,我们只保留三个变量

  • 没有免费的车
  • 没有免费的自行车
  • 没有空闲槽的卡车
  • 没有免费的位子残疾人
当车辆进入时,我们只需减少上述值中的一个(这意味着,在可用的X个位置中,用户选择一个并在那里停车),当车辆离开时,我们增加相应的值。 (简而言之,停车场不是由任何人指定的,车辆只需前往其中一个符合条件的地点和停车场)

2) 假设我们有一个全球停车收费表
-->开始时间/结束时间应该是车辆的一个属性吗?

-->车辆id、开始时间、结束时间应为停车计时器的一部分

3) 假设需要parkingSpace对象,那么4_wheeler、2_wheeler、残疾人应该是枚举类型还是单独的类
如果它是enum,我们可以使用findEmptySlot(parkingSpace_type)
如果它们是完全独立的类,并且ParkingLot有一个findEmptySlot()方法
我们怎样才能找到合适的位置?

停车计时器将负责设置车辆的开始、结束时间是否正确

如果有多个金额,1小时-20美元,2小时-30美元,3小时-40美元,5小时-50美元
停车收费表类中的这些部分好吗,或者,将它们包含在单独的“停车价格”类中好的

  • 我并不真正理解这个问题,但我确实会使用数组
    ParkingSpace
    对象来描述公园中的空间
  • 由于时间为每辆车,因此应在车辆上设置时间
  • 我会为每个类使用不同的类,每个类都应该扩展抽象类
    Vehicle
    。它允许灵活使用每种车辆类型的通用和唯一属性(所有车辆的序列号,但仅4轮车具有车门)。至于如何查找空停车位,每个
    ParkingSpace
    对象都将有一个
    $takenBy
    属性,该属性将保存一个车辆对象的实例。它应该默认为
    null
    ,然后,您只需遍历
    ParkingLot
    类中的空格数组,找到
    $space->takenBy==null
    的一个

  • 我对问题进行了编辑,为第一部分添加了更多信息。第二个和第三个可以。请看第一部分。所以你们在问,你们是应该创建一个空格类还是仅仅减少变量。我建议保留一个空格数组(或者为每个空格类型保留一个数组)。它可以灵活地检测哪辆车在哪辆车里,甚至可以参考实际占用空间的车(根据我的第三个答案)。谢谢。。我在原始帖子的末尾添加了额外的帖子,你能看看吗?问题是,每个停车位都有停车收费表吗?或者每个停车场?假设一个停车场有一个全局/单个停车收费表,假设安装成本。