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

news2024/11/25 1:06:56

文章目录

  • 一、项目总体要求
    • <设计模式应用>
    • 第一次文档要求
    • 第二次文档要求
  • 二、示例
    • 第一次文档 - 设计原则应用
      • 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.coloradmin.cn/o/2223684.html

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

相关文章

PostGis空间(下):空间连接与空间索引

目录 1、简介2、空间连接3、空间索引3.1 索引操作3.2 空间索引的工作原理3.2.1 R-Tree 3.3 空间索引函数3.4 仅索引查询3.5 ANALYZE3.6 VACUUMing3.7 函数列表 PS 1024到啦&#xff01;&#xff01;&#xff01; 先祝各位程序员或者想成为程序员正在奋斗中的伙伴1024程序员节快…

pdf免费压缩软件 pdf文件压缩免费软件 软件工具方法

pdf文件压缩免费软件&#xff1f;对于提升日常工作效率至关重要。在繁忙的工作流程中&#xff0c;寻找一种既高效又合适的压缩策略显得尤为重要。那么&#xff0c;我们该如何优化工作流程呢&#xff1f;在职场中&#xff0c;良好的开端是制定一套清晰的工作方案。只有明确了目标…

Konva 组,层级

代码&#xff1a; <template><div class"rect"><div class"header"> <!-- <el-button type"primary" click"show">展示</el-button>--> <!-- <el-button type"success&quo…

算法设计与分析——动态规划

1.动态规划基础 1.1动态规划的基本思想 动态规划建立在最优原则的基础上&#xff0c;在每一步决策上列出可能的局部解&#xff0c;按某些条件舍弃不能得到最优解的局部解&#xff0c;通过逐层筛选减少计算量。每一步都经过筛选&#xff0c;以每一步的最优性来保证全局的最优性…

UniHttp 框架,请求http接口

项目案例下载地址: https://download.csdn.net/download/jinhuding/89902024 1.快速开始 2.1引入依赖 <dependency><groupId>io.github.burukeyou</groupId><artifactId>uniapi-http

react18中使用redux管理公共数据仓库实现数据immutable更新

Immutable.js出自Facebook&#xff0c;是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构&#xff0c;使用结构共享。所有的更新操作都会返回新的值&#xff0c;但是在内部结构是共享的&#xff0c;来减少内存占用。Immutablejs官网 在上一篇介绍redux的文章&…

Docker 部署 JDK11 图文并茂简单易懂

部署 JDK11 ( Docker ) [Step 1] : 下载JDK11 - JDK 11 | Oracle 甲骨文官网 [Step 2] : jdk11上传服务器/root/jdk11 可自行创建文件夹 进入目录 /root/jdk11 解压文件 tar -zxvf jdk-11.0.22_linux-x64_bin.tar.gz解压后 进入 /root/jdk11/jdk-11.0.22 创建 jre 文件 ./bi…

基于RK3588/算能BM1684 AI盒子:综合视频智能AI分析系统建设方案(三)安全帽、睡岗检测、电瓶车、吸烟场景

安全帽反光衣检测算法 功能说明 安全帽反光衣检测是指在监控场景中预先设定监测区域&#xff0c;在区域内人员没有穿戴安全帽反光衣的现象&#xff0c;及时触发告警。检测目标在1080p图像中的分辨率大小不小于30*30像素。 推荐场景 场景要求&#xff1a;可室内外使用&#x…

VS无法安装Win10SDK_10.0.2200,快捷方法

Visual Studio无法安装Win10SDK_10.0.2200&#xff0c;我在安装VS2019、2022提示&#xff0c;软件就不能编译。 因为之前安装过VS软件&#xff0c;重新安装软件提示“无法安装”。 原因 之前安装在D盘&#xff0c;现在没有D盘了 说明 因为电脑第一次安装VS&#xff0c;会自动安…

安全见闻---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 安全见闻1 泷哥语录&#xff1a;安全领域什么都有&#xff0c;不要被表象所迷惑&#xff0c;无论技术也好还是其他方面…

Python爬虫教程:从入门到精通

Python爬虫教程&#xff1a;从入门到精通 前言 在信息爆炸的时代&#xff0c;数据是最宝贵的资源之一。Python作为一种简洁而强大的编程语言&#xff0c;因其丰富的库和框架&#xff0c;成为了数据爬取的首选工具。本文将带您深入了解Python爬虫的基本概念、实用技巧以及应用…

若依RuoYi-Vue 定时任务 速学

1.若依定时任务模块&#xff08;ruoyi-quartz&#xff09; 那么从一个简单的入门示例开始&#xff0c;掌握定时任务的使用吧&#xff01; 2. 入门示例&#xff08;学会制作一个简单定时任务&#xff09; 首先打开定时任务模块中的task包&#xff0c;这里已经有一个已经写好的R…

51单片机——OLED显示图片

取模软件&#xff1a;链接:https://pan.baidu.com/s/1UcrbS7nU4bsawNxsaaULfQ 提取码:gclc 1、如果图片大小和格式不合适&#xff0c;可以先用Img2Lcd软件进行调整图片大小&#xff0c;一般取模软件使用的是.bmp图片&#xff0c;可以进行输出.bmp格式。软件界面如下&#xff1…

【Javaee】网络原理—TCP协议的核心机制

前言 TCP/IP五层协议是互联网中的主流模型&#xff0c;为网络通信提供了一个稳固的框架。 主要包含了应用层&#xff0c;传输层&#xff0c;网络层&#xff0c;数据链路层&#xff0c;物理层。 本篇主要介绍传输层的TCP协议的核心机制 一. 确认应答&#xff08;ack&#xf…

ESP32-S3学习笔记:常用的ESP-IDF命令总结

参考资料&#xff1a;1.esptool.py工具 2.idf.py工具 后续文章的讲解需要用到IDF命令行工具&#xff0c;当前文章简单介绍一下。 目录 打开命令行的小技巧 一、读flash信息 二、擦除flash 三、读flash数据 四、写flash数据 打开命令行的小技巧 大家安装完IDF开发包后…

关于小程序审核需要提交订单列表页面path的修改办法

小程序又又又又又搞事情啦&#xff5e;&#xff5e;&#xff5e; 从12月31号起&#xff0c;所有有订单生成逻辑的小程序在审核过程中&#xff0c;必须要填写订单列表页面的path才可以进行审核 在代码层面上会有一些小的改动&#xff0c;下面就告诉大家怎么去修改吧。 第一步…

算法笔记day07

目录 1.最长回文子串 2.买卖股票的最好时机(一) 3.过河卒 1.最长回文子串 最长回文子串_牛客题霸_牛客网 算法思路&#xff1a; 使用中心扩散算法&#xff0c;枚举所有的中点&#xff0c;向两边扩散&#xff0c;一个中点需要枚举两次&#xff0c;一次当回文串是奇数另一次回…

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…

论文速读:YOLO-G,用于跨域目标检测的改进YOLO(Plos One 2023)

原文标题&#xff1a;YOLO-G: Improved YOLO for cross-domain object detection 中文标题&#xff1a;YOLO-G&#xff1a;用于跨域目标检测的改进YOLO 论文地址&#xff1a; 百度网盘 请输入提取码 提取码&#xff1a;z8h7 代码地址&#xff1a; GitHub - airy975924806/yolo…

ArkUI自定义TabBar组件

在ArkUI中的Tabs&#xff0c;通过页签进行内容视图切换的容器组件&#xff0c;每个页签对应一个内容视图。其中内容是图TabContent作为Tabs的自组件&#xff0c;通过给TabContent设置tabBar属性来自定义导航栏样式。现在我们就根据UI设计的效果图来实现下图效果&#xff1a; 根…