《软件方法(下)》8.2.5.1 类名中是否有形容词(202402更新)

2024-02-16 18:44

本文主要是介绍《软件方法(下)》8.2.5.1 类名中是否有形容词(202402更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

8.2.5.1 类名中是否有形容词

如果存在“形容词(的)名词”这样的类名,例如“待支付(的)订单”、“合适(的)会议室”,可以先把形容词从类名移除,转成类的一个状态属性。很多时候形容词和名词之间没有“的”,也要能识别出来。

图片

图8-55 移除形容词为状态属性

状态属性只是临时的建模产物。在后续的建模步骤中,状态属性中包含的知识会放到更合理的位置。

★“名词的名词”

有时候,名词前面的修饰词可能是名词。例如,“员工的部门”中的“员工”是名词。如果出现这样的类名,那不是什么状态属性,而是在识别类时没有识别出该有的“员工”和“部门”类。

有一些用语比较模糊,要注意理清楚真正的含义,并用更严谨的用语来表达。

例如,“会员订单”,看起来和“员工的部门”相似。经过进一步调研发现,其真实意思不是“某个会员所下的订单”,而是“下单者身份是会员的订单”。此时,“下单者身份是会员”就成了修饰“订单”的形容词,那么可以从类名删除“会员”,把“下单者身份是会员”作为“订单”的一个状态属性。当然,这个状态属性的计算可能也是通过“订单”和“会员”的关联来达到的。

图片

图8-56 名词前面的名词

碰到类似的含糊用语,可以用以下方法辨别:

形容词修饰名词,相当于在该名词所代表概念的实例全集中取一个子集,它应该存在一个补集,二者的并集等于此概念的实例全集。

例如,“待支付订单”相当于在在订单全集中取一个子集,同时还应该存在“非待支付(已支付)订单”——如果不存在“非待支付订单”,划分出“待支付订单”也就没有意义了。“待支付订单”和“非待支付订单”实例集的并集即为订单实例的全集。

而“员工的部门”则不同,存在补集“非员工的部门”吗?

移除形容词的限度

图8-55中,“合适会议室”缩减为“会议室”,但“会议室”也可以看作“会议的室”,是否需要再缩减为“室(房间)”?

这要看系统所关注核心域知识的范围。

如果做一个“会议室管理系统”,关注到“会议室”就可以了;如果做一个“物业管理系统”,合适的类可能是“房间(室)”,“作为会议室使用”可以暂时作为“房间”的状态属性,后续步骤在处理状态属性时,可能会添加“用途”类,“会议室”是用途的一个实例。

这篇关于《软件方法(下)》8.2.5.1 类名中是否有形容词(202402更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715370

相关文章

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

hdu 1754 I Hate It(线段树,单点更新,区间最值)

题意是求一个线段中的最大数。 线段树的模板题,试用了一下交大的模板。效率有点略低。 代码: #include <stdio.h>#include <string.h>#define TREE_SIZE (1 << (20))//const int TREE_SIZE = 200000 + 10;int max(int a, int b){return a > b ? a :

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑