昨天讲今天公布【面向对象思考】的回答,实际开始设计以后,发现根本不是一天可以说完的量,所以就分几次来说明,还请谅解。

今天先介绍各位参与者,也就是类构成和大概的职责。当然许多流程是想象出来的,和实际情况不一定完全一致,别忘了,这只是个练习。重要的是希望大家能够明白:设计的起点是什么。


招生办公室

C++建模实战1-高考录取系统(2)_建模


它的职责主要有:

  1. 收集各所大学处的招生计划
  2. 收集考生报考志愿
  3. 收集考试成绩
  4. 录取
  5. 发送录取结果给大学

考生

C++建模实战1-高考录取系统(2)_C++_02

它的职责主要有:

  1. 考试,不过为了防止范围蔓延,将这部分除外。
  2. 填报志愿
  3. 接受录取通知书

大学

C++建模实战1-高考录取系统(2)_公众号_03

它的职责主要有:

  1. 提出招生计划
  2. 接受招生办的录取结果
  3. 分发录取通知书

以上是在招生活动中出现的主要角色,另外还有一些事物,虽然不是人或者组织,也不一定是实在的形体,但是也确实存在于录取活动之中。

招生计划

C++建模实战1-高考录取系统(2)_UML_04

实际的招生计划有很多信息,我们这里加以简化,只保留录取人数信息。

报考志愿

C++建模实战1-高考录取系统(2)_C++_05

实际的志愿分几个批次,每个批次有若干学校,每个学校又有若干专业。这里也进行简化,只指定若干学校。

录取通知书

C++建模实战1-高考录取系统(2)_UML_06

由各个学校填写,发送给考生。

如果重看一下各个类以及他们的职责,说是软件模块的说明也行,说是现实世界的说明也没有问题,这一点很重要,说它是面向对象的核心也不为过。现实世界已经运作的很好,那么我们设计的非常接近现实世界的软件系统也应该能够运行的很好。越接近越好。

似 乎与上一段文字自相矛盾,目前的类设计中,为了缩短时间,有些地方进行了简化。在实际的工作中,也会由于信息不足发生类似的情况。上游设计时,设计者所处 的往往是信息不足的环境,在这样的条件下敢于决定,善于决定从而设计出接近现实世界,甚至超越现实世界的系统,应该设计者应有的追求。

具体方法我们后面会提到,在后续说明中会具体说明,敬请关注。


公众号【面向对象思考】。欢迎分享给更多的朋友!


C++建模实战1-高考录取系统(2)_UML_07