社区
研发管理
帖子详情
如何对工程中的数值和单位建模?(另外奉送100分)
fengfeng2003
2003-07-02 07:13:11
一个最简单的例子:
理想气体状态方程PV=RT
已知PVT中的两个可求其余一个参数。若PVT可允许任何合法单位,则在设计过程中应
设计一个单位类将参数的数值部分和单位部分分开(根据:《UML和模式应用》)
具体如何设计呢?
请各位大侠帮忙!多谢!
如给出满意解释或源码说明,另外奉送100分。
...全文
70
12
打赏
收藏
如何对工程中的数值和单位建模?(另外奉送100分)
一个最简单的例子: 理想气体状态方程PV=RT 已知PVT中的两个可求其余一个参数。若PVT可允许任何合法单位,则在设计过程中应 设计一个单位类将参数的数值部分和单位部分分开(根据:《UML和模式应用》) 具体如何设计呢? 请各位大侠帮忙!多谢! 如给出满意解释或源码说明,另外奉送100分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
digital1
2003-07-06
打赏
举报
回复
有两种方法
1 都在operand中实现,使用方便但是扩展性不好,每次有新操作的时候需要在operand中加函数
2 在operand中实现getstandard(),然后:
int main()
{
Operand V=new Operand(ConcreteUnit1());
Operand T=new Operand(ConcreteUnit2());
const double R=123.4;
Operand P=T*cos(R.getStandard())/sin(V.getStandard());
}
我觉得第二种方式好些
所有程序都是伪代码,没有上机测试,可能存在问题
fengfeng2003
2003-07-06
打赏
举报
回复
To digital1(d_jt)
问题又来了,
如果是一个角度量,定义Operand时不仅有+,-,×,/还要有sin,cos...操作
这些函数要是都定义的话,就会有很多成员函数,这应该怎么办啊。
digital1
2003-07-05
打赏
举报
回复
to stonespace(stonespace)
不建议在客户端
SimpleUnit mmHg("mmHg",10130);
客户端尽量少的知道内容
to fengfeng2003()
traits是stl中实现不一致性的。
如一般的加法都一样,但long double的就不一样,可以用traits
另外,我觉得象单位这种永远不变的东西,无所谓你用多少类来实现,一个原则,客户端使用方便才是最重要的,
unit类我给出的是最简单的实现,如果你要考虑效率和资源占用问题,可以使用singleton模式来实现
如果不想麻烦,我觉得我前面给出的实现方式对本问题是最优考虑
stonespace
2003-07-05
打赏
举报
回复
很简单,就象你说的定义一个Unit基类,也不一定要用template,直接定义为类就行。原来template的参数作为构造函数的参数就行。然后还是原来的思路,用实例定义一个单位:
class SimpleUnit :public Unit
{
public:
virtual double ConvertToStandardUnit(double dbValue);
virtual string Print(double dbValue);
public:
SimpleUnit(string UnitName,double ConversionFactor);
};
SimpleUnit MPa("MPa",1e6);
SimpleUnit mmHg("mmHg",10130);
如果某各单位比如SUnit1不能用比例换算的,可以专门定义一个派生类:
class SUnit1 :public Unit
{
public:
virtual double ConvertToStandardUnit(double dbValue);
virtual string Print(double dbValue);
public:
SUnit1();
};
SUnit1 unit;
overwrite单位换算函数,但是还是用实例表示单位。
其实我认为单位只影响到I/O,所以Unit类只需要有一个把当前单位换算为标准单位的方法就行,然后再有格式化输入输出的方法。
如果要做得很灵活,这些表示单位的实例可以放在一个表中,比如vector<Unit *> vtAllUnit中,然后界面输入输出数据的时候,先在vtAllUnit选择一个单位,用选中单位实例把数据转换之后,再进一步处理。
做的好的话,Unit还应该有一个方法,取得单位适用的物理量的类别,比如是V还是P等等。
digital1
2003-07-04
打赏
举报
回复
另外
PressureUnit<"mmHg",10130> mmHg;
还需要客户知道10130等具体内容,这很不好啊
digital1
2003-07-04
打赏
举报
回复
这种方法挺好的,我也考虑过,不过,单位换算不是只有简单的比例啊,比如温度,华氏,绝对温度之间等等,你是不是还要用traits?
其实类多一点也无所谓啊,
呵呵,其实对大量的相同的简单换算可以gp,其他的就不要用gp了
stonespace
2003-07-04
打赏
举报
回复
>我初步考虑这样:为压力,温度等每一个物理量单位建立类,不知你的想法怎样?
我认为这样处理最好。在设计阶段考虑的类,应该从实现角度去考虑,设计阶段的类应该可以处于不同的状态,并且用数据成员保存状态。“单位”对人来说是一个概念,但是很明显,一个特定的单位本身是没有任何可变化的属性,如果强行设计为一个类,会发现这个类不需要有数据成员,而只有方法。通常如果方法不是很多的话,这种情况不应该设计为类,而应该当作一个“值”,即用一个实例表示,就像你设计的PressureUnit<"MPa",1e6> MPa一样。MPa这个实例表示一个单位。
fengfeng2003
2003-07-04
打赏
举报
回复
To stonespace
这只是我的初步设想,但是具体的实现应该怎样呢,能麻烦你解释一下吗?
我想应该设计一个纯虚构的Unit基类,PressureUnit,TemperatureUnit从Unit派生
得到,而后再生成PressureUnit等的各个具体单位。
还有就是,不是比例换算应如何处理呢?
fengfeng2003
2003-07-04
打赏
举报
回复
To digital1:
对啊,如果不是简单的比例怎么办啊?
你说的traits是什么意思,能给我解释一下吗?
多谢!
digital1
2003-07-03
打赏
举报
回复
说明
Operand(IUnit unit)构造函数少了一个参数,就是operand的数值
在operator*/中调用unit的getstandart方法,或者在operand类中增加getstandart方法,
fengfeng2003
2003-07-03
打赏
举报
回复
压力,温度,比容三个物理量常用的单位加起来有十多个,每一个都派生一个类的话
岂不是要有十多个类,如果在实际应用中变量再多的话,是不是造成了类的爆炸。
我初步考虑这样:为压力,温度等每一个物理量单位建立类,不知你的想法怎样?
template<string UnitName,double ConversionFactor>
class PressureUnit
{
.......
};
PressureUnit<"MPa",1e6> MPa;
PressureUnit<"mmHg",10130> mmHg;
.......
digital1
2003-07-02
打赏
举报
回复
interface IUnit
{
public double getStandard(double in);//根据输入数值计算标准单位数值
}
class ConcreteUnit:public IUnit //某个具体的单位,实现interface中的方法
class Operand//操作数
{
Operand(IUnit unit);
operator*
operator/
}
int main()
{
Operand V=new Operand(ConcreteUnit1());
Operand T=new Operand(ConcreteUnit2());
const double R=123.4;
Operand P=T*R/V;
}
《UML
建模
实例教程》【PPT】
第1章课程定位与教学案例综述. 1.1职业岗位能力需求
分
析 1.2课程设置和课程定位
分
析 1.3WebShop电子商城介绍 1.3.1电子商城需求
分
析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求
分
析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和
建模
基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象
分
析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件
建模
概述 2.7.1软件
建模
的概念 2.7.2软件
建模
的用途 2.7.3软件
建模
的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML
建模
3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML
建模
基本流程 习题 第4章UML
建模
工具简介 4.1常用UML
建模
工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose
建模
4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose
建模
的基本过程 习题 第5章需求
建模
5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态
建模
6.1静态
建模
概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML
中
的类与语言
中
的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库
建模
7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态
建模
8.1动态
建模
概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理
建模
9.1物理
建模
概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向
工程
10.1双向
工程
简介 10.2正向
工程
(生成Java代码) 10.3逆向
工程
习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务
建模
11.2.2需求 11.2.3
分
析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...
Rational Rose 2003 汉化版.rar
Rational Rose 2003 汉化版.rar 基本汉化
UML with Rational Rose从入门到精通(PDF)
深入浅出地介绍了统一
建模
语言和Rational Rose软件,通过ATM和订单处理例子介绍如何用UML和Rose进行项目需求
分
析、结构规划和生成框架代码,以及如何从现有系统逆向转出
工程
代码,生成Rose模型。
零基础如何入门数学
建模
?
什么,是数学
建模
?
什么是模型?开发软件为什么要
建模
?
模型是现实的简化 我们
建模
是为了更好的理解我们正在开发的系统。 人们对复杂系统的理解力是有限的。而模型是对现实的简化,通过
建模
,缩小所研究问题的范围,一次只研究它的一个方面。这就是“各个击破”的策略。 这里说的“我们”,指的是所有于软件开发有关的人员,软件开发人员当然是其
中
的主要成员,不过还包括像客户,软件项目管理人员等等,所有这些希望了解正在开发的系统的人员。软件开发人员建立的模型,除了让自己更...
研发管理
1,268
社区成员
28,284
社区内容
发帖
与我相关
我的任务
研发管理
软件工程/管理 管理版
复制链接
扫一扫
分享
社区描述
软件工程/管理 管理版
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章