《面向对象系统分析与设计》三级项目

文章目录

  • 一、项目总体要求
    • <设计模式应用>
    • 第一次文档要求
    • 第二次文档要求
  • 二、示例
    • 第一次文档 - 设计原则应用
      • 1、题目描述
      • 2、设计:
        • (1)优化理由陈述
        • (2)类图
        • (3)实现代码
    • 第二次文档 - 设计模式应用
      • 1、题目描述
      • 2、设计:
        • (1) 优化理由陈述
        • (2)类图
        • (3)实现代码
  • 三、源码获取:


在这里插入图片描述

一、项目总体要求

分为两次完成。第一次为基本原则的应用,第二次为设计模式的应用。

第一次为文档撰写和代码实现,针对一个问题应用3种以上(包括3种)的面向对象设计基本原则进行优化。

1、优化项目业务介绍
目前手中待优化项目主要解决哪方面的业务问题。将实现的功能做以简单介绍。

2、初始方案
(1)、原有方案类的设计(类图)
(2)、初始代码

3、优化方案
(1)优化理由陈述
请说明原有程序存在的问题,根据什么原则对此问题进行的改进。此处可以借助类图进行说明

(2)类图
将程序优化后的类图粘贴到此处,最好能够在图中标明使用设计原则的部分及名称

(3)优化后的代码
可以将代码拷贝到这里,并对优化后部分的代码进行加粗显示。

<设计模式应用>

第二次为文档撰写和代码实现,题目自拟,针对一个问题应用2种以上(包括2种)的面向对象设计模式进行优化。

  1. 优化案例业务介绍
    目前手中待优化程序主要解决哪方面的业务问题。将实现的功能做以简单介绍。

  2. 初始方案
    (1)、原有方案类的设计(类图)
    (2)、初始代码
    可以将代码拷贝到这里,也可以将代码文件进行编号,在这里进行引用。

  3. 优化方案
    (1)优化理由陈述
    请说明原有程序存在的问题,根据什么模式对此问题进行的改进。此处可以借助类图进行说明。

(2)类图
将程序优化后的类图粘贴到此处,最好能够在图中标明使用设计模式的部分及名称。

(3)化后的代码
可以将代码拷贝到这里,并对优化后部分的代码进行加粗显示。

第一次文档要求

1、题目描述

2、设计:

(1)优化理由陈述,说明原有程序存在的问题,根据什么原则对此问题进行的改进。

(2)类图(针对一个项目运用多个原则画在一个类图上)

(3)实现代码

3、评分标准如下

(1)原则选择的合理性
是否能够指出代码中存在的不合理性,并能够选择合理的设计原则进行优化。

(2)代码实现的合理性
代码对设计原则的切实实施,将设计原则真正落实到代码上。

第二次文档要求

1、题目描述

2、设计

(1) 优化理由陈述,分别介绍在哪里应用了哪些设计模式,并说明理由。

(2)类图(针对一个项目运用多个模式画在一个类图上)

(3)实现代码

3、评分标准如下

(1)2个以上模式

设计模式应用个数应在2——6之间,鼓励多运用设计模式。

(2)模式合理性

模式应用的合理性指的是确实运用得很巧妙地解决问题为非常优秀,解决了实际问题为很好,模式得到应用为合格,如果用得太牵强则需要改进。

(3)类图的合理性
类图的正确性是指在当前业务背景下,类图是否准确地表达了设计模式的意图。

(4)代码实现规范
代码的规范性是指源代码的编写是否遵守了编码规范。

二、示例

下面会提供一个示例性的框架来指导的文档撰写和代码实现

这里仅提供一个概念性的描述以及伪代码示例。

第一次文档 - 设计原则应用

1、题目描述

假设我们要开发一个订单处理系统,该系统用于处理来自客户的订单请求,包括创建订单、支付订单以及取消订单等功能。

2、设计:

(1)优化理由陈述

原有系统的问题在于:

  • 类职责过于集中,单一类承担了过多的责任,违反了单一职责原则(SRP)。
  • 类之间耦合度高,修改一处可能影响其他多处,违反了开闭原则(OCP)。
  • 难以扩展新功能,如增加新的支付方式,这体现了里氏替换原则(LSP)没有得到良好遵循。
(2)类图

【这里应该插入一个类图,展示原始设计以及优化后的设计。原始设计中可能会有一个Order类负责所有操作,而优化后的设计中会有多个类,如Order, OrderService, PaymentService等,每个类负责一部分功能。】

(3)实现代码

原始代码:

public class Order {public void createOrder() { ... }public void payOrder() { ... }public void cancelOrder() { ... }
}

优化后的代码:

// Order类专注于订单数据
public class Order {private String orderId;// 其他属性...
}// OrderService类处理订单逻辑
public class OrderService {public void createOrder(Order order) { ... }public void cancelOrder(Order order) { ... }
}// PaymentService类处理支付逻辑
public class PaymentService {public void payOrder(Order order) { ... }
}

第二次文档 - 设计模式应用

1、题目描述

继续上面的订单处理系统,我们希望进一步优化代码结构,使得系统更加灵活和易于维护。

2、设计:

(1) 优化理由陈述

现有系统的问题在于:

  • 当添加新的支付方式时,需要修改PaymentService类,违反了开闭原则(OCP)。
  • 创建订单时需要一系列复杂的初始化步骤,这使得createOrder方法变得庞大且难以管理。

我们考虑引入工厂模式(Factory Pattern)来创建不同类型的Order实例,以及策略模式(Strategy Pattern)来处理不同的支付策略。

(2)类图

【这里应该插入一个类图,展示优化后的设计。例如OrderFactory类用于创建Order实例,PaymentStrategy接口定义支付策略,ConcretePaymentStrategy类实现具体的支付策略】

(3)实现代码
// OrderFactory类
public class OrderFactory {public Order createOrder(OrderType type) { ... }
}// PaymentStrategy接口
public interface PaymentStrategy {void pay(Order order);
}// ConcretePaymentStrategy类
public class CreditCardPayment implements PaymentStrategy {public void pay(Order order) { ... }
}public class PayPalPayment implements PaymentStrategy {public void pay(Order order) { ... }
}// OrderService类使用策略模式
public class OrderService {private PaymentStrategy paymentStrategy;public void setPaymentStrategy(PaymentStrategy strategy) {this.paymentStrategy = strategy;}public void processOrder(Order order) {// 使用策略模式处理支付paymentStrategy.pay(order);}
}

可以根据上述指导来完成具体实现,并确保遵循标准中的各项要求。也可以点击下方链接获取更多

三、源码获取:

主页私信:面向对象、三级项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【虚幻引擎UE】UE5 音频共振特效制作

UE5 音频共振特效制作 一、基础准备1.插件准备2.音源准备 二、创建共感NRT解析器和设置1.解析器选择依据2. 创建解析器3. 创建解析器设置&#xff08;和2匹配&#xff09;4.共感NRT解析器设置参数调整5.为共感NRT解析器关联要解析的音频和相应设置 三、蓝图控制1.创建Actor及静…

短剧AI突围战,百度跑偏了

“ 百度短剧的Agent对话功能并不属于颠覆性创新&#xff0c;只是新插件&#xff0c;对短剧行业市场格局影响不大&#xff0c;最多只能算用户痒点。 ” 转载&#xff1a;科技新知 原创 作者丨晓伊 编辑丨蕨影 你是否有过这样的体验&#xff1f; 刷短剧时&#xff0c;因剧情曲…

解决运行jar错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

报错 众所周知jdk8以上都没有Javafx java -jar target/myyscan-1.0-SNAPSHOT.jar 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序解决 https://gluonhq.com/products/javafx/ 去下载/javafx/到本地&#xff0c;选择自己的型号 然后记得指定路径 java --m…

TPLCM柔性屏自动化贴合应用

在当前的显示屏制造领域&#xff0c;TP&LCM贴合技术是推动产品升级和满足市场需求的关键环节。随着技术的不断进步&#xff0c;全贴合技术因其卓越的显示效果和用户体验&#xff0c;逐渐成为中高端产品的标配。然而&#xff0c;这一技术的高精度要求和复杂工艺也带来了诸多…

【C++ 算法进阶】算法提升七

目录 正数数组中那两个数&结果最大 &#xff08;贪心&#xff09;题目题目分析代码详解 最小相机覆盖问题 &#xff08;二叉树递归套路&#xff09;题目题目分析代码详解 拼接字符串 &#xff08;动态规划 前缀树&#xff09;题目题目分析代码详解 正数数组中那两个数&…

SpringBoot实现 License 认证(只校验有效期)

文章目录 一、License介绍二、授权者生成密钥对三、授权者生成license.lic证书3.1、 配置pom.xml3.2 、License生成类3.3 、License生成类需要的参数类3.4、自定义KeyStoreParam3.5、main方法生成license.lic注意事项 四、使用者配置4.1、配置pom.xml4.2、License校验类4.3、Li…

室内地图制作-电子地图管理系统源代码公开-室内地图 开源-SDK调用指南(二)

一、室内外电子地图可视化制图项目需求 室内外地图开发需满足开发者可以在Android、iOs、web应用中加入地图相关的功能&#xff0c;包括&#xff1a;地图展示、地图交互、在地图上绘制路线、POI点、搜索、AR导航、蓝牙点位、离线地图等功能。 在开源室内地图编辑-电子地图管理…

Docker安装Mysql5.7,解决无法访问DockerHub问题

Docker安装Mysql5.7&#xff0c;解决无法访问DockerHub问题 简介 Docker Hub 无法访问&#xff0c;应用安装失败&#xff0c;镜像拉取超时的解决方案。 摘要 &#xff1a; 当 Docker Hub 无法访问时&#xff0c;可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的…

Apple Vision Pro市场表现分析:IDC最新数据揭示的真相

随着AR/VR技术逐渐成熟并被更多消费者接受,2024年第二季度(Q2)成为这一领域的一个重要转折点。根据国际数据公司(IDC)发布的最新报告,整个AR/VR市场在本季度经历了显著的增长。接下来,我们将深入探讨Apple Vision Pro在这股增长浪潮中的具体表现。 市场背景 2024年Q2,…

第五届光学与图像处理国际学术会议(ICOIP 2025)征稿中版面有限!

第五届光学与图像处理国际学术会议&#xff08;ICOIP 2025&#xff09; 2025 5th International Conference on Optics and Image Processing (ICOIP 2025&#xff09; 重要信息 时间地点&#xff1a;2025年4月25-27日丨中国西安 截稿日期&#xff1a;2024年12月16日23:59 …

maven本地打jar包依赖

本地工程的pom文件中引入了mysql依赖&#xff0c;但是在maven库中没有拉下来&#xff0c;可以到mysql官网下载jar包&#xff0c;使用maven手动打包到本地仓库中&#xff1a; 官网地址&#xff1a;MySQL :: Download MySQL Connector/J (Archived Versions) 在jar包所在位置的路…

揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器

目录 &#x1f680;0.前言 &#x1f688;1.string 构造函数 &#x1f69d;1.1string构造函数 &#x1f69d;1.2string拷贝构造函数 &#x1f688;2.string类的使用 &#x1f69d;2.1.查询元素个数或空间 返回字符串中有效字符的个数&#xff1a;size lenth 返回字符串目…

AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面&#xff0c;成为Science、Nature论文的…

通过ssh端口反向通道建立并实现linux系统的xrdp以及web访问

Content 1 问题描述2 原因分析3 解决办法3.1 安装x11以及gnome桌面环境查看是否安装x11否则使用下面指令安装x11组件查看是否安装gnome否则使用下面指令安装gnome桌面环境 3.2 安装xrdp使用下面指令安装xrdp&#xff08;如果安装了则跳过&#xff09;启动xrdp服务 3.3 远程服务…

混个1024勋章

一眨眼毕业工作已经一年了&#xff0c;偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候&#xff0c;本来以为自己这一年没学到多少东西&#xff0c;但是看看自己的博客其实也有在进步&#xff0c;虽然比不上博客里的众多大佬&#xff0c;但是回头看也算是自己的…

如果自建 ChatGPT,我会如何从 Model、Inference runtime 构建整个系统

ChatGPT 是一个基于 LLM 的对话系统。本文将介绍如何构建一个类似 ChatGPT 的系统&#xff0c;包括从模型、推理引擎到整体架构的构建过程。 系统概览 让我们关注最核心的对话部分。 如上图所示&#xff0c;web 负责与用户进行交互&#xff0c;server 接受用户的对话请求&…

算法的学习笔记—数组中只出现一次的数字(牛客JZ56)

&#x1f600;前言 在数组中寻找只出现一次的两个数字是一道经典的问题&#xff0c;通常可以通过位运算来有效解决。本文将详细介绍这一问题的解法&#xff0c;深入解析其背后的思路。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1f970;数组中只出现一次的数字…

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计&#xff08;一&#xff09;实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖&#xff0c;并打开viewBinding &#xff08;1&#xff09;在app/build.gradle中添加…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件&#xff0c;由服务器发送给浏览器。当用户再次访问同一网站时&#xff0c;浏览器会把Cookie信息发送回服务器。例如&#xff0c;网站可以利用Cookie记住用…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量&#xff1a;定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸&#xff1a;创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中&#xff0c;每次亏…