首页 > 其他分享 >【排课小工具】面向对象分析探索领域模型

【排课小工具】面向对象分析探索领域模型

时间:2024-05-01 13:11:07浏览次数:16  
标签:教师 班级 探索 排课 节点 课表 课程 面向对象分析 属性

用户向系统中输入课表模板、课程信息以及教师责任信息,系统以某种格式输出每个班级的课表。该用例中的主要参与者包括用户以及系统,除了上述两个主要参与者外,我们从该用例中抽取出可能有价值的名词:课表模板、课程、教师职责、班级以及课表。现在我们只知道下面图示的关系:

用例图_1

上一篇的界面需求描述部分,我们已经确定了用户输入数据的媒介以及格式,课表模板描述了一个班级的课表中那些位置是固定不变的,那些是可以被分配的,不妨留意一下这里的位置这一名词,位置是由两个信息决定的,本别是星期以及节次,可以观察到,这样一个个位置是课表的基本组成元素,为了方便接下来的表述,我将这样一个个位置称作节点,每个节点都包含两个属性:星期和节次。联系现实生活,如果每个节点仅仅包含星期和节次这两个属性,该节点在某个具体的班级课表中将拥有唯一的位置,而当将该节点放在整个年级的课表中看,该节点就不再具有唯一性,其余的每个班级都会出现于此节点属性相同的节点,所以,如果我们要确定一个唯一的节点,就需要给每个节点添加一个班级属性。节点本身包含了时空两个维度的信息,在时间上包括星期和节次,在空间上是指班级。到此为止,我们发掘出一个可能具有极大价值的对象——节点。

用户输入的课程信息表包括课程名、周次(该课程每周的上课次数)以及优先级(该课程的排课优先级)这三个重要的信息,这样我们就可以初步确定了课程这一对象以及其属性。另外还有一些隐含信息。在课程集合里,所有课程对象的周次属性的值的累加和与前面提到的课表模板中可分配的节点的总数存在关系,即每个班级中可分配的节点的总数等于所有课程周次属性值的累加和。每个课程对象都包含优先级属性,这意味着这个课表集合可以根据某种方式变成有序集合,这与前文的分级填充功能需求息息相关。

接下来我们再看用户输入的第三张表——教师职责信息表。该表描述了每个教师应该在哪个班级中承担哪一个学科的教师身份,上过公立小学的都知道,几乎每个小学教师都承担着多重角色,比如教师A的主要教学科目是数学,但他同时也是这个班级的科学老师,甚至是体育老师。通过这张表我们可以抽离出教师这一对象,该对象拥有的属性包括两个集合,分别是班级集合以及科目集合,这代表每个教师教授多门科目同时在多个班级授课,这种结构不太讨人喜欢。

通过上面的分析,我们发掘出三个可能具有极大价值的对象:

除此以外还有一些不太被关注的名词,包括班级、课表、职责……另外在上文中并没有谈及对象之间的交互动作,自然也就无法形成用例图。当用户将以上数据输入系统后,用户就完全失去了系统的控制权,接下来的一切动作都是系统内的动作,具体是什么动作取决于排课的算法以及领域分析过程中确定的具有行为的对象。

为了发掘更多具有潜在价值的对象,我们将视角转向功能需求上。需求一(无时间冲突)描述了在某一时刻(同一天的同一节次)一个教师不能被分配到两个或两个以上不同的班级。该需求涉及到的对象包括节点和教师。这句话的含义是一个节点只能容纳一个教师,而不是容纳一个教师集合。我们可以把教师作为节点的其中一个属性。需求二(分级填充)主要强调课程的优先级这一属性在排课过程中的实际意义。需求三(完整性检测)强调课程的周次这一属性的实际意义。需求四(非连续性分配)强调同一天内、同一个班级中同一个课程的分配情况。需求五(均匀分配)强调同一周内、同一个班级中同一个课程的分配情况,这一需求似乎应该和上一个需求合并在一起。从以上需求中似乎没有发现什么有价值的对象。

分析到现在,我甚至有些怀疑采用面向对象的方式处理这个问题是否合适?到目前为止我都没有将上述对象有效的关联在一起,他们之间的关系依旧是模糊的。或许在接下来的设计阶段会发掘出更有价值的结构吧,到这里,我要结束这篇随笔了。

标签:教师,班级,探索,排课,节点,课表,课程,面向对象分析,属性
From: https://www.cnblogs.com/gaotianchi/p/18164321/explore-domain-models

相关文章

  • 探索计算机的微观世界
    微机结构,顾名思义,是指计算机系统中的微型结构。它包括了处理器、内存、输入输出设备等各个部件,以及它们之间的连接方式。微机结构的设计和优化对于提高计算机性能、降低能耗具有重要意义。我们来看看处理器。处理器是计算机的核心部件,负责执行程序中的指令。现代处理器通常采用半......
  • GPT3-探索指南(三)
    GPT3探索指南(三)原文:zh.annas-archive.org/md5/e19ec4b9c1d08c12abd2983dace7ff20译者:飞龙协议:CCBY-NC-SA4.0第九章:构建一个由GPT-3提供动力的问答app到目前为止,我们已经查看了(并编写了)很多代码。但我们实际上还没有创建一个完全可用的app。那就是我们将要做的事情。......
  • Python多线程编程深度探索:从入门到实战
    title:Python多线程编程深度探索:从入门到实战date:2024/4/2818:57:17updated:2024/4/2818:57:17categories:后端开发tags:多线程并发编程线程安全Python异步IO性能优化实战项目第1章:Python基础知识与多线程概念Python简介:Python是一种高级、通用、解释......
  • 探索项目管理系统:解析五大功能,洞悉项目成功的关键
    项目管理新手往往喜欢埋头苦干,殊不知优秀的项目经理已经熟练运用项目管理系统,让项目规划条理清晰。项目管理系统具备的功能,好用的项目管理系统都有这5大功能。分别是项目WBS分解、项目图表和报表、工时管理、团队协作、任务流程自动化。一、项目WBS分解1.什么是项目WBS分解?从......
  • 企业架构管控的探索与实践
    当前,传统的组织结构和信息系统已经难以满足企业的发展需求,众多企业面临着数字化转型战略落地难、信息孤岛、系统集成度低和互操作性低等问题,导致业务流程不畅、资源浪费和效率低下。为此,企业需要一种能够全面描述和分析现状,并能对企业做出合理诊断和规划的方法。企业架构正是方法......
  • 【排课小工具】项目需求的搜集与整合
    计划写一系列随笔,记录一个工具软件的开发过程,这是第一篇随笔,写本篇随笔的初衷是帮助我整理一下当前的需求详情,同时复习最近所需的软件工程相关知识,如果能对读者有所帮助,那算是这篇文章产生的额外价值了。需要注意的是,这不是一篇遵循标准规格的需求文档,因为其中可能夹杂着知识注解......
  • 【排课小工具】项目需求的搜集与整合
    计划写一系列随笔,记录一个工具软件的开发过程,这是第一篇随笔,写本篇随笔的初衷是帮助我整理一下当前的需求详情,同时复习最近所需的软件工程相关知识,如果能对读者有所帮助,那算是这篇文章产生的额外价值了。需要注意的是,这不是一篇遵循标准规格的需求文档,因为其中可能夹杂着知识注解......
  • 探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
    DTD是文档类型定义(DocumentTypeDefinition)的缩写。DTD定义了XML文档的结构以及合法的元素和属性。为什么使用DTD通过使用DTD,独立的团体可以就数据交换的标准DTD达成一致。应用程序可以使用DTD来验证XML数据的有效性。内部DTD声明如果DTD在XML文件内声......
  • 实战干货|Spark 在袋鼠云数栈的深度探索与实践
    Spark是一个快速、通用、可扩展的大数据计算引擎,具有高性能、易用、容错、可以与Hadoop生态无缝集成、社区活跃度高等优点。在实际使用中,具有广泛的应用场景:·数据清洗和预处理:在大数据分析场景下,数据通常需要进行清洗和预处理操作以确保数据质量和一致性,Spark提供了丰富的......
  • 探索飞行奥秘:3D模型带你走进飞机涡轮发动机的世界
    在浩瀚的蓝天下,飞机如同矫健的雄鹰,展翅翱翔。而支撑起这雄鹰的力量之源,便是其心脏——涡轮发动机。今天,我们将通过山海鲸可视化搭建的逼真的飞机涡轮3D模型,揭开航空工业的神秘面纱。  飞机涡轮发动机3D模型不仅是对真实发动机的精准复制,更是科技与艺术的完美结合。每一个细......