272
社区成员




正向建模与开发是指在系统工程或软件开发中,从需求出发逐步构建解决方案的方法。强调从抽象到具体的设计流程,是一种自顶向下的软件设计过程,从而对系统架构有一个整体把握。
本单元围绕图书馆管理系统,模拟借书、还书、查询、预约、取书、阅读、归还和用户积分等功能,完成图书馆所支持的相关业务。在开始写代码前,我先根据图书馆的功能划分了几个类,思考每个类内部的属性和方法,初步绘制一个简单的 UML 类图,编写代码时再进行修改和完善。
最终的 UML 类图如下:
Book
:书籍,记录书的 id、历史移动轨迹、预约日期、借阅日期以及是否为热门图书。BookShelf
:书架,存放图书馆的书,并记录用户的预约信息。AppointmentOffice
:预约处,为用户保留预约的书,处理取书请求,并将逾期未取的书放回书架。BorrowAndReturnOffice
:借还处,存放用户归还的书籍。ReadingRoom
:阅览室,存放用户阅读且未主动归还的书籍。UserTable
:用户平台,记录用户的信用积分和借阅的书籍。Library
:图书馆,统一管理各个部门,实现各部门的协作,对用户请求进行合理性检查并发送到对应的部门。Main
:主类,处理输入信息,并传给图书馆。UML 图是抽象的设计规格说明,代码是具体的实现。类图确保与代码中的类、成员变量、方法签名严格一致,状态图确保转移逻辑被准确实现,顺序图确保消息的顺序和类型在代码中得到正确体现。
为什么在复杂场景下大模型容易“翻车”?原因主要有以下几点:
因此,在复杂场景中使用大模型辅助正向架构设计,需要一套系统化、迭代式的人机协作策略,分为以下四个阶段:
将大模型应用于复杂架构设计的本质,是用其“超级联想”和“知识蒸馏”的能力扩展人类工程师的思维广度,再通过人的批判性思维和工程经验进行深度收敛,提高设计效率,但需记住:大模型只是副驾驶,我们才是掌控方向的机长。
本单元的主题是表达式展开与化简,重点是掌握递归下降的算法,同时以正则表达式作为辅助。将一个包含加、减、乘、乘方、括号、三角函数、自定义递推函数和普通函数以及求导因子的多变量表达式变形展开,自顶向下地建立一棵表达式树。经过本单元的三次迭代,我学会了层次化设计的思想,且架构要有可扩展性以满足迭代需求。
本单元的主题是多线程,我掌握了多线程的基本知识和生产者-消费者模式,理解了调度器的作用与实现方法,能够利用锁来处理并行任务和共享资源竞争,解决线程安全问题。
本单元的主题是社交网络,我学会了规格化设计,通过前置条件、后置条件和副作用范围限定,严格定义模块行为。但 JML 规格定义只是描述一个方法或属性的功能和效果,并不限制采用何种数据结构和算法;而实现则需要考虑具体算法和数据结构,不仅要保证正确性,还需考虑性能,也就是规格与设计分离。
本单元的主题是图书馆管理系统,采用正向建模与开发,从需求出发自顶向下地逐步构建解决方案,从而对系统架构有一个整体把握。先根据图书馆的功能划分出几个必要的类,思考每个类内部的属性和方法,初步绘制一个简单的 UML 类图,编写代码时再进行修改和完善。
OO 伴随了整个学期,从第一单元的表达式,到第四单元的 UML,我深刻理解并实践了面向对象构造与实际的核心思想,封装不仅仅是属性隐藏,更强调职责的边界划分;继承不仅是代码复用,更重要的是建立类型层次结构;通过父类引用或接口引用操作子类对象,增强了系统的可扩展性和可维护性;能够使用类图、顺序图和状态图清晰、规范地表达设计思路,提升了建模与设计表达能力。
OO 这门深刻而富有挑战的课程即将落下帷幕,回首这段学习历程,这门课带给我的,远不止于掌握若干设计模式或绘图技巧,它更像是一场深刻的思维革命。未来,无论是在开发实践中打磨代码,还是在架构设计上运筹帷幄,这段宝贵的经历和习得的能力都将是我坚实的基石。
感谢老师和助教团队的辛勤付出!也感谢并肩作战的同学们!