软件工程学习日志2025.10.10

news/2025/10/11 19:21:56/文章来源:https://www.cnblogs.com/dynastyeast/p/19135817

今天花了整整一天的时间,潜心研究了《软件设计》课程的实验一。这个实验内容非常扎实,涵盖了UML类图的复习和两个重要的面向对象设计原则。从“知道”到“理解”,再到亲手“实现”,这个过程让我对软件设计的精髓有了更深的认识。

上午:重温UML类图——程序世界的“地图”

实验的第一个任务是复习UML。如果把软件系统比作一座复杂的城市,那么UML类图就是这座城市的“地图”,它清晰地展示了各个“建筑”(类)之间的关系。

我重新梳理了类与类之间的五种核心关系,并画了简单的示意图来加深记忆:

  1. 继承(泛化):Dog is an Animal。是一种“is-a”关系,表示子类是父类的一种特化。

  2. 实现:Bird implements Flyable。类实现接口,承诺提供接口中定义的所有能力。

  3. 关联:Teacher 和 Course。一种长期的、结构上的关系,比如老师教授课程。

  4. 依赖:Driver 和 Car。一种临时的、使用上的关系,司机只是暂时使用汽车。

  5. 聚合/组合:这两者都是特殊的关联关系,强调整体与部分。
    ◦ 聚合:School 和 Student。部分可以脱离整体而存在,学校解散了,学生依然存在。

    ◦ 组合:House 和 Room。部分与整体同生共死,房子拆了,房间也就不复存在了。

这部分复习为我后续理解设计原则打下了坚实的基础。

下午:实践单一职责原则(SRP)——让每个类“专一”起来

实验二是关于单一职责原则(SRP) 的。这个原则的核心思想是:一个类应该只有一个引起它变化的原因。换句话说,一个类只负责一项职责。

我实现了一个登录模块,这个设计完美体现了SRP:

• User类:只负责封装用户数据(用户名、密码)。

• UserRepository类:只负责与数据库交互,执行SQL查询。

• LoginService类:只负责处理业务逻辑(验证用户名和密码是否匹配)。

• LoginController类:只负责处理用户输入和输出。

这样做的好处太明显了!如果未来要改变数据库(比如从MySQL换到Oracle),我只需要修改UserRepository,而LoginService和LoginController完全不用动。同样,如果要改变登录方式(比如增加验证码),也只需要修改LoginService。代码的维护性和可扩展性大大提高!

在编码过程中,我还练习了Java数据库连接(JDBC),成功连接并查询了实验提供的user表。当看到控制台输出“登录成功!”时,成就感满满!

晚上:领悟依赖倒转与合成复用原则——拥抱“抽象”

实验三是最有挑战性但也最有趣的部分。它要求我们使用依赖倒转原则(DIP) 和合成复用原则(CARP) 来重构一个画笔设计。

  1. 问题所在:
    最初的设计为每一种画笔和颜色的组合都创建一个类(如SmallRedPen, LargeBluePen),这会导致“类爆炸”,难以维护。

  2. 重构秘诀:
    • 合成复用原则:优先使用组合(has-a),而不是继承(is-a)。我们将Color(颜色)作为Pen(画笔)的一个属性,通过组合的方式使用它。

• 依赖倒转原则:依赖于抽象(接口或抽象类),而不是具体实现。我们引入了Color接口,让Pen依赖于这个抽象的接口,而不是具体的RedColor或BlueColor类。

重构后的核心代码思想:
// 抽象:定义颜色行为
public interface Color {
void applyColor();
}

// 具体实现:红色和蓝色
public class RedColor implements Color { ... }
public class BlueColor implements Color { ... }

// 画笔类:通过组合使用颜色,并依赖于Color接口
public abstract class Pen {
protected Color color; // 这里是关键!依赖抽象
public Pen(Color color) { this.color = color; }
public abstract void draw();
}

现在,如果我需要添加一种新的颜色(比如绿色),我只需要创建一个新的GreenColor类实现Color接口即可,完全不需要修改任何Pen相关的代码!同样,添加新画笔类型也很容易。这种设计的灵活性让我真正体会到了面向对象设计的强大威力。

今日总结与感悟

• UML是沟通的桥梁:清晰的UML图是团队协作和软件设计的基石。

• SRP是设计的起点:让代码保持简洁、高内聚的第一道防线。

• DIP和CARP是扩展的利器:通过面向接口编程和组合,可以构建出极其灵活、可扩展的系统。

今天的实验虽然只是模仿,但亲手敲下这些代码,并看到它们按照设计原则优雅地运行,比单纯看书理解深刻得多。路漫漫其修远兮,继续加油!

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

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

相关文章

2025智能照明系统直销厂家推荐:八渡科技,智慧生活首选!

2025智能照明系统直销厂家推荐:八渡科技,智慧生活首选!随着科技的不断进步和智能家居市场的快速发展,智能照明系统已经成为现代家庭和商业场所不可或缺的一部分。然而,尽管智能照明系统的应用越来越广泛,但在实际…

2025磁力泵厂家最新推荐榜:高效稳定与优质服务的首选指南

2025磁力泵厂家最新推荐榜:高效稳定与优质服务的首选指南随着工业技术的不断进步,磁力泵在化工、制药、环保等领域的应用越来越广泛。选择一款高效稳定且具备优质服务的磁力泵品牌,对于企业的生产运营至关重要。本文…

最小乘积模型与快速凸包构造学习笔记

最小乘积模型用于分析+证明凸包,快速凸包构造用于求解凸包 将一种方案看作点 \((a,b)\),那么取到最小值的方案一定在左下凸包上。 现在考虑如何快速求解凸包.如图每次找到使三角形面积最大的,迭代即可。 复杂度证明…

记录---图文并茂讲解nginx中http升级https(部署SSL证书)知识点总结

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 为何网站要升级为https 原因有以下几点: 1. 避免浏览器的不安全的警告浏览器对于http的网站会在地址栏明确标记【不安全】字样 这样直接降低用户对网站的信任度…

2025网络营销推广TOP5榜单:精准引流与高效转化的营销专

2025网络营销推广TOP5榜单:精准引流与高效转化的营销专家随着互联网技术的飞速发展,网络营销已成为企业获取客户、提升品牌影响力的重要手段。在众多网络营销推广公司中,如何选择一家真正能够帮助企业实现精准引流和…

控制自然语言生成中的模型幻觉技术

本文探讨了自然语言生成中模型幻觉的控制方法,包括数据增强技术、输入线性化策略和语义一致性保证。重点分析了如何通过自训练方法和编码器-解码器架构提升生成文本的准确性,解决实体和关系层面的幻觉问题。自然语言…

基于 Scala 的英文数字验证码识别系统设计与实现

一、研究背景 更多内容访问ttocr.com或联系1436423940 验证码(CAPTCHA)是一种有效的安全防护机制,通过生成包含干扰噪声的图像文字,用以区分人类与自动化程序。 随着人工智能与计算机视觉技术的发展,利用OCR(光学…

2025智能防爆灯厂家最新推荐榜:安全高效与技术创新典范

2025智能防爆灯厂家最新推荐榜:安全高效与技术创新典范随着工业4.0的推进,智能防爆灯在石油、化工、矿山等高危行业中的应用越来越广泛。选择一款性能卓越、安全可靠的智能防爆灯对于保障生产安全和提高工作效率至关…

CSP-S模拟29

前言: 如果这场比赛的目的是让我罚坐的话,那它很成功了。半成品... T1:一个赢家(card) 思路: 显然,最大值的取值范围为\([2n+1,4n-1]\),我们设最大值为\(x\),则对于每种\(x\),有\(⌈\frac{4n-x}{2}⌉\)种构成…

2025新型液压阀块定制厂家推荐,美泰克精密机械匠心打造!

2025新型液压阀块定制厂家推荐,美泰克精密机械匠心打造!当前液压阀块领域技术挑战在现代工业中,液压系统因其高效、可靠和灵活的特点而被广泛应用。然而,随着技术的不断进步和市场需求的多样化,液压阀块领域面临着…

commitlint Lint 提交消息格式控制

https://commitlint.js.org/ https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines复制请注明出处,在世界中挣扎的灰太狼

2025氢氧化镁供应厂家推荐:辽宁润辉新材料科技优质厂家首选

2025氢氧化镁供应厂家推荐:辽宁润辉新材料科技优质厂家首选随着环保意识的不断增强和工业技术的持续进步,氢氧化镁作为一种重要的无机化工原料,在多个领域中的应用越来越广泛。然而,氢氧化镁行业也面临着诸多技术挑…

2025年离心曝气机源头工厂哪家强?离心曝气机知名厂家哪家好?

离心曝气机源头工厂推荐:兰江品牌发展战略之路,需要你们! 在污水处理领域,离心曝气机作为关键设备,其性能与质量直接影响着污水处理的效果与效率。今天,就为大家推荐一家离心曝气机的源头工厂——​​南京兰江泵…

实用指南:【Android View】窗口机制

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025整平机厂家最新推荐榜:高效精准与耐用品质的行业首选!

2025整平机厂家最新推荐榜:高效精准与耐用品质的行业首选!随着制造业的快速发展,整平机作为关键设备之一,在提升生产效率和产品质量方面发挥着重要作用。为了帮助筛选整平机品牌,特此发布权威推荐榜单,为采购决策…

2025黄金回收品牌最新推荐榜:高信誉与专业服务的首选厂家!

2025黄金回收品牌最新推荐榜:高信誉与专业服务的首选厂家!随着黄金市场的不断升温,黄金回收行业也迎来了新的发展机遇。为了帮助企业和个人在众多黄金回收品牌中筛选出最值得信赖的品牌,本文将发布一份权威推荐榜单…

「Java EE制作指南」用MyEclipse创建的EJB开发工具(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025复合钢丝网优质厂家推荐,昆山佳冠光电科技实力见证!

2025复合钢丝网优质厂家推荐,昆山佳冠光电科技实力见证!当前复合钢丝网领域技术挑战随着工业技术的不断进步,复合钢丝网在多个领域的应用越来越广泛。然而,这一行业仍然面临着诸多技术挑战。首先,材料的选择和处理…

射流曝气机推荐厂家/优质厂家排名/哪个品牌好?

射流曝气机推荐厂家——南京兰江泵业有限公司 在污水处理领域,曝气机作为关键设备之一,其性能与效率直接关系到整个处理系统的运行效果。射流曝气机以其独特的优势,在众多曝气设备中脱颖而出,成为污水处理工程师们…

第七章 验收手写数字识别

# ================================================================================== # 10_11验收手写数字识别 # ==========# 在解耦和验收测试集图片和标签处理上仍有较大优化空间# 导入相关库 import numpy as…