软件场景分析之停车场

LanPst 2014-03-27 02:08:42
这个例子描述了多个类嵌套.在编写类库时,不允许嵌套,因此需要修改,场景如下:

停车场:有多个车位
车位:可停放一辆车
人:拥有一辆车
车:可停放在一个车位,有一个拥有者.

 class Park
{
Position[] positionArray;
public Park(int positionNum)
{
positionArray = new Position[positionNum];
for (int i = 0; i < positionArray.Length; i++)
{
//车位初始化,赋值编号
positionArray[i] = new Position(i + 1);
}
}
}

class Position
{
//停在该位置的车
public Car car;
//车位号
int number;
//车位是否空闲标记
bool free;
public Position(int number)
{
this.number = number;
this.free = true;
}

//把车某个车停到这个车位
public void ParkCar(Car car)
{
this.free = false;
this.car = car;
}
}

class Car
{
//所有人
public Person owner;

//车牌号
public int carNum;

public Car(Person owner, int carNum)
{
this.owner = owner;
this.carNum = carNum;
}
}

class Person
{
public Person(Car car)
{
this.car = car;
}
//拥有的车
Car car;
}



要实现:
1. 通过某个人找到某个车及车位
2. 通过某个车位找到停放在这个车位的车及拥有者
3. 某个车位没有停车,他其中的Car为空.如何排除这种隐患.
4. 人和车,车位和车存在互相嵌套.如何排除这种互相嵌套的关系.

请问如何改进?
...全文
391 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LanPst 2014-04-04
  • 打赏
  • 举报
回复
依赖注入,写一个Base,其中提供这两个类的接口,让他们继承base.之后都通过子类实现方法取值.
LanPst 2014-03-27
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
都是组合关系
请问如何设计,才能使分离类库时,避免循环依赖呢?
LanPst 2014-03-27
  • 打赏
  • 举报
回复
引用 2 楼 chz415767975 的回复:
本人愚见:根据你上面的逻辑完全没有嵌套关系,是一一对应的关系. 停车场 车位1 车1 --人1 车位2 车2 --人2 车位3 人:拥有一辆车 车:可停放在一个车位,有一个拥有者. 你这个只能是一一对应,你现在只要考虑空位补缺的问题
抱歉.是循环以来项.不是嵌套. 我的问题是(只看车和车位).我建立了两个类库分别保存车和车位 class car { Position position ... } class Position { Car car; ... } 建立类库又互相依赖.那么必须引用另外一个库.但实际上.当Position类引用Car类后,反过来Car类不允许再引用Position了. 这个是我的问题.互相依赖实现功能.却在分离成类库的时候出现问题.求解答. 另外,空位补缺暂时不在这个需求内.因为没有安排车辆位置的需求.
LanPst 2014-03-27
  • 打赏
  • 举报
回复
引用 1 楼 liuchaolin 的回复:
人{身份证明(ID),姓名...} 车{车牌(ID),所有者ID,...} 车位(编号(ID),所有者ID或汽车ID) 知道人,就当然知道他的ID,根据ID去找车,然后找车位
可以采用数据库的方式处理这个问题.查表就需要第3张表保存关系. 但在类设计的时候也要设计第3个类保存这两个类的信息. 1. 通过车位找车是找不到的.你只有id没有一个对象集合.没有遍历的地方. 2. 就算把车的集合也保存下来.这样很麻烦.这些数据不需要存到数据库.却要这样设计 还有其他方法吗?
bdmh 2014-03-27
  • 打赏
  • 举报
回复
都是组合关系
霜寒月冷 2014-03-27
  • 打赏
  • 举报
回复
本人愚见:根据你上面的逻辑完全没有嵌套关系,是一一对应的关系. 停车场 车位1 车1 --人1 车位2 车2 --人2 车位3 人:拥有一辆车 车:可停放在一个车位,有一个拥有者. 你这个只能是一一对应,你现在只要考虑空位补缺的问题
md5e 2014-03-27
  • 打赏
  • 举报
回复
人{身份证明(ID),姓名...} 车{车牌(ID),所有者ID,...} 车位(编号(ID),所有者ID或汽车ID) 知道人,就当然知道他的ID,根据ID去找车,然后找车位

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧