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

8.2.5.1 类名中是否有形容词

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

图片

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

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

★“名词的名词”

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

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

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

图片

图8-56 名词前面的名词

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

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

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

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

移除形容词的限度

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

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

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

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

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

相关文章

Python iter函数

在Python编程中,iter()函数是一个非常重要且常用的内置函数,用于生成迭代器对象。迭代器是一种可以逐个访问数据元素的对象,可以用于遍历序列、集合以及自定义数据结构等。本文将深入探讨Python中的iter()函数,包括基本用法、可迭…

AI:129-基于深度学习的极端天气事件预警

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Java集合 List接口

List接口操作 Java的List接口是Java集合框架中的一部分&#xff0c;它表示有序的集合。List接口提供了许多常用的方法&#xff0c;以下是其中的一些例子&#xff1a; 增加元素 add(E e)&#xff1a;将指定的元素插入此列表的末尾。 List<String> list new ArrayList…

【JavaEE】spring boot快速上手

SpringBoot快速上手 文章目录 SpringBoot快速上手Maven会出现的一个官方bug创建完项目之后常用的的三个功能依赖管理Maven仓库中央仓库本地仓库国内源配置私服 springboot项目创建什么是springspring boot项目的创建Hello Worldweb服务器 SpringMVC什么是SpringWebMVC什么是MVC…

LabVIEW卫星电视接收仿真系统

LabVIEW卫星电视接收仿真系统 随着卫星电视数字化的加速&#xff0c;传统模拟信号接收系统已无法满足需求。设计一套船载数字卫星电视接收系统&#xff0c;通过LabVIEW环境进行仿真实验&#xff0c;验证系统设计的可行性与有效性&#xff0c;满足数字信号接收的高精度要求&…

RUST入门:如何用vscode调试rust程序

RUST已经流行一阵子了&#xff0c;但是比较系统的IDE介绍还是比较少&#xff0c;这里我简单介绍 一下如何用vscode实现单步调试rust程序&#xff0c;就像我们平时调试c程序一样。 学习资料网站 首先&#xff0c;介绍几个学习rust的好网站&#xff0c; Rust程序设计语言Rust语…

【FPGA开发】HDMI通信协议解析及FPGA实现

本篇文章包含的内容 一、HDMI简介1.1 HDMI引脚解析1.2 HDMI工作原理1.3 DVI编码1.4 TMDS编码 二、并串转换、单端差分转换原语2.1 原语简介2.2 IO端口组件 笔者在这里使用的开发板是正点原子的达芬奇开发板&#xff0c;FPGA型号为XC7A35TFGG484-2。参考的课程是正点原子的课程手…

【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——数据库

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 4. 数据库 1. B树相对于B树的区别及优势 B树中有重复元素&#xff0c;B树没有重复元素B树种每个节点都存储了key和data&#xff0c;B树内节点去掉了其中指向数…

macOS 安装 conda

macOS 安装 conda 安装 conda参考 Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装和管理软件包和其依赖项。 安装 conda mkdir miniconda3 cd miniconda3 bash Miniconda3-latest-MacOSX-x86_64.sh$ conda list参考 macOS 安装 conda开始使用conda

stl~string

迭代器 typedef char* iterator;typedef const char* const_iterator;iterator begin(){return _str;}iterator end(){return _str _size;}const_iterator begin() const//左值const{return _str;}const_iterator end() const{return _str _size;} for&#xff08;auto e : …

2024.2.16日总结(小程序开发8)

数据监听器 监听对象属性的变化 数据监听器支持监听对象中单个或多个属性的变化 纯数据字段 什么是纯数据字段 纯数据字段指的是哪些不用于页面渲染的data字段 应用场景:例如有些情况下&#xff0c;某些 data 中的字段既不会展示在界面上&#xff0c;也不会传递给其他组件…

[计算机提升] 备份系统:设置还原点

6.7 备份系统&#xff1a;设置还原点 在Windows系统中&#xff0c;系统还原点是指系统在特定时间存储的重要系统文件的备份。通过创建系统还原点&#xff0c;可以轻松地将系统恢复到之前创建还原点的状态。这有助于解决系统文件损坏或Windows操作系统出现问题的情况。 1、右键…