OO Unit4 Summary

刘发源-19373612 2025-06-10 07:47:27

一、正向建模与开发

正向建模是指从需求或功能规格开始,逐步推进设计、开发、测试等阶段的软件开发过程。

本单元通过图书馆管理系统实现了完整的正向建模与开发流程:基于图书借阅、预约、逾期管理等核心需求,抽象出BookAppointmentStudents等关键实体类,每个类聚焦单一职责(如Appointment专管预约逻辑)。在抽象出类之后,我为每个类分配了明确的职责。以Library类为例,它作为整个图书馆管理系统的核心,负责协调各个子系统的工作。Students类则专注于管理学生的借阅信息、信用积分等。

正向建模并不是一次性完成的,而是一个迭代的过程。在开发过程中,每次作业我都根据实际情况对模型进行了多次调整和优化。在开发过程中,我们遵循了面向对象的设计原则,如单一职责原则(每个类负责一个明确的部分)、开闭原则(通过组合和扩展,而不是修改已有代码)等。

二、架构设计

系统的核心是Library类,它整合了所有子模块:

- BookShelf`和HotBookShelf`:分别管理普通图书和热门图书。

- Appointment:处理预约逻辑,记录预约信息,并在预约过期时进行清理。

- BorrowReturn:临时存储归还的图书,等待每天开馆整理。

- ReadingRoom:管理当天在阅览室阅读的图书。

- Students:管理学生的状态,包括借阅的图书、预约信息、信用积分等。

本作业的架构设计采用了分层架构的思想,将系统分为多个层次,每个层次负责不同的功能。主要层次包括:

  • 数据层:负责数据的存储和管理,如BookShelfHotBookShelf类负责图书的存储,Students类负责学生信息的管理。
  • 业务逻辑层:处理具体的业务逻辑,如Library类负责图书馆的整体管理,BorrowReturnAppointment类负责借阅和预约业务的处理。
  • 控制层:负责接收用户的输入,调用业务逻辑层的方法进行处理,如Main类负责读取用户的命令,调用Library类的相应方法。

在开发过程中,我先根据需求绘制了 UML 模型图,明确了类的结构和关系,然而,在实际开发过程中,由于一些细节的调整和优化,也会进行修改。最后的UML类图如下所示:

 

三、大模型辅助

1、场景拆解与渐进式引导

就像在实验中所练习的那样,我们需要拆解问题,逐步引导大模型。对于复杂的架构设计任务,不要期望大模型一次性给出完整的解决方案。可以将问题分解为多个小问题,逐步引导大模型进行思考。例如,先让大模型设计系统的整体架构,然后再让它设计各个模块的具体实现。

  • 错误示范:
    “设计一个图书馆系统” → 模型生成泛化代码

  • 正确做法:
    分步提示
    (1) “如何实现预约超时自动取消?” → 得到Appointment类框架
    (2) “信用分如何关联预约行为?” → 补充Students.updateCredit()

2、prompt设计

借用一些JML的思想,让大模型设计单独的方法,自己设计整体架构,效果会更好,如:

设计方法:boolean ordered(String studentId, LibraryBookIsbn isbn)
前置条件:学生信用分≥100 且 无重复预约
后置条件:更新热门书队列(hbs.addOrderMessage())

模型据此生成高匹配度代码,避免过度设计。

3、整体流程

需求分解:将复杂的图书馆管理系统分解为多个子需求,如借书、还书、预约、取书、阅读、整理等,并针对每个子需求进行详细描述。

模块化设计:引导大模型为每个子需求设计独立的模块(类),并明确模块的职责和接口。

类关系设计:明确类之间的关联关系(如Library聚合多个子模块),并让大模型生成类图草稿。

关键算法逻辑:对于复杂的业务流程(如开馆整理arrange方法),逐步描述流程步骤,让大模型生成伪代码,再转化为具体实现。

迭代优化:根据测试反馈和设计原则,对大模型生成的代码进行优化调整。例如,我们发现初始的预约管理逻辑需要处理过期预约,于是引导大模型在Appointment类中增加了removeOutDateBook方法。

四、架构设计思维的演进

1、第一单元:聚焦于多项式化简,这是我接触面向对象编程思想的起点。最初,对 Java 语法和面向对象思维的陌生,让我不自觉地依赖面向过程的方式解决问题。但随着学习的深入,通过递归下降法实现语法解析,我逐渐领悟到层次化设计的精妙之处。从项 — 因子 — 表达式,单项式 — 多项式的结构设计,结合递归调用,能够巧妙处理复杂的表达式,这种思想不仅适用于编译前端语法解析,更为后续解决同类型问题提供了思路。同时,我也认识到将功能不同的类单独提出,能够增强代码的可拓展性,为新功能的添加奠定良好基础。​

2、第二单元:多线程学习堪称 “噩梦” 与成长并存。作为四个单元中最难的部分,其内核的复杂性让人望而生畏。在保证线程安全的前提下提升并发效率,需要对多线程机制有深刻理解。采用生产者消费者模型设计电梯作业时,尽管对多线程部分有一定掌握,但类间过高的耦合度成为后续迭代和调试的巨大阻碍,这让我深刻记住了高内聚低耦合原则的重要性。不过,也正是在不断的摸索和请教中,我构建起自己的逻辑,学会了多线程之间的协调调度,形成了 “一个调度器类,多个被调度的执行类” 的基本架构,这一架构在后续学习中持续发挥作用。​

3、第三单元:围绕 JML 展开,相对而言,其思维难度较低,只需依据 JML 架构进行代码编写。但部分方法对时间复杂度的高要求,使得算法成为主要难点。并查集算法路径压缩与按秩合并的实现,让我在算法学习上更进一步。同时,我也掌握了如何依据 JML 规格要求编写代码,这种 “按图索骥” 的方式,培养了我精准解读需求并转化为代码的能力。​

4、第四单元:以 UML 图绘制和正向建模为核心,标志着我在编程思维上的重大转变。我真正实现了先设计再编码,通过 UML 图清晰呈现架构设计。在这一过程中,虽然初期为类的构建和容器的选择绞尽脑汁,且容器在后续作业中多次更改,但稳定的架构为功能实现提供了保障。测试方面回归功能验证,简洁高效地确保代码正确性。

5、测试思维演进:首先根据作业提供的样例进行基础测试,再直接提交,根据公开的样例检查代码,在公开样例基础上,自己构造一些更极端的样例进行测试。

五、课程收获

OO重修第二次终于通过了,原先觉得复杂的大规模代码任务能够自己完成了。最大的收获是能够顺利毕业。

...全文
42 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
Summary Entity Framework Core in Action teaches you how to access and update relational data from .NET applications. Following the crystal-clear explanations, real-world examples, and around 100 diagrams, you'll discover time-saving patterns and best practices for security, performance tuning, and unit testing. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology There's a mismatch in the way OO programs and relational databases represent data. Entity Framework is an object-relational mapper (ORM) that bridges this gap, making it radically easier to query and write to databases from a .NET application. EF creates a data model that matches the structure of your OO code so you can query and write to your database using standard LINQ commands. It will even automatically generate the model from your database schema. About the Book Using crystal-clear explanations, real-world examples, and around 100 diagrams, Entity Framework Core in Action teaches you how to access and update relational data from .NET applications. You'l start with a clear breakdown of Entity Framework, long with the mental model behind ORM. Then you'll discover time-saving patterns and best practices for security, performance tuning, and even unit testing. As you go, you'll address common data access challenges and learn how to handle them with Entity Framework. What's Inside Querying a relational database with LINQ Using EF Core in business logic Integrating EF with existing C# applications Applying domain-driven design to EF Core Getting the best performance out of EF Core Covers EF Core 2.0 and 2.1
Summary Entity Framework Core in Action teaches you how to access and update relational data from .NET applications. Following the crystal-clear explanations, real-world examples, and around 100 diagrams, you'll discover time-saving patterns and best practices for security, performance tuning, and unit testing. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology There's a mismatch in the way OO programs and relational databases represent data. Enti ty Framework is an object-relational mapper (ORM) that bridges this gap, making it radically easier to query and write to databases from a .NET application. EF creates a data model that matches the structure of your OO code so you can query and write to your database using standard LINQ commands. It will even automatically generate the model from your database schema. About the Book Using crystal-clear explanations, real-world examples, and around 100 diagrams, Entity Framework Core in Action teaches you how to access and update relational data from .NET applications. You'l start with a clear breakdown of Entity Framework, long with the mental model behind ORM. Then you'll discover time-saving patterns and best practices for security, performance tuning, and even unit testing. As you go, you'll address common data access challenges and learn how to handle them with Entity Framework. What's Inside Querying a relational database with LINQ Using EF Core in business logic Integrating EF with existing C# applications Applying domain-driven design to EF Core Getting the best performance out of EF Core Covers EF Core 2.0 and 2.1

302

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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