社区
研发管理
帖子详情
如何对工程中的数值和单位建模?(另外奉送100分)
fengfeng2003
2003-07-02 07:13:11
一个最简单的例子:
理想气体状态方程PV=RT
已知PVT中的两个可求其余一个参数。若PVT可允许任何合法单位,则在设计过程中应
设计一个单位类将参数的数值部分和单位部分分开(根据:《UML和模式应用》)
具体如何设计呢?
请各位大侠帮忙!多谢!
如给出满意解释或源码说明,另外奉送100分。
...全文
78
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 with Rational Rose从入门到精通(PDF)
深入浅出地介绍了统一
建模
语言和Rational Rose软件,通过ATM和订单处理例子介绍如何用UML和Rose进行项目需求
分
析、结构规划和生成框架代码,以及如何从现有系统逆向转出
工程
代码,生成Rose模型。
软件
工程
(四)——需求
建模
笔者正在学习《软件
工程
-实践者的研究方法》这本书,记录下一些读书笔记,共勉! 1.需求
分
析 在技术层面上,软件
工程
开始于一系列的
建模
工作,最终生成待开发软件的需求规格说明和设计表示,指明软件和其他系统元素的接口,规定软件必须满足的约束。需求
建模
动作产生以下一种或多种模型类型: 场景模型:出自各种系统“参与者”观点的需求; 数据模型:描述问题信息域的模型; 面向类的模型:表示面向对象类(属...
3D
建模
需要什么电脑配置?什么样的电脑可以用作游戏
建模
?
3D
建模
需要什么电脑配置?什么样的电脑可以
建模
?很多刚入门3D
建模
的小伙伴都会烦恼这些问题,接下来将给大家介绍一下电脑配置方面的问题,希望对大家有所帮助。 学习3D
建模
对电脑的要求配置还是比较高的,如果大家想做
建模
或者设计,个人建议用台式机,因为台式机的性能只要你的配置到位,性价比会比笔记本高很多。笔记本价格贵,但是在真正用的时候,还不如比它便宜一半的台式机,当然啦很多人希望笔记本的便携式方便,那就搞个大苹果!! 开玩笑的,资金有限的小伙伴还是乖乖用台式机,因为
建模
对显卡内存,都有很高的要求,还有渲染,所
数学
建模
---
数值
微积
分
在科学研究和
工程
计算
中
,常遇到下列情况: (1)f(x)的原函数不能用初等函数形式表示,如 (2)f(x)由表格或图形(实验或测量数据)给出; (3)f(x)的原函数或导数很难求(复杂)。 从而,在实际应用
中
求导和求积公式很难解决上述函数的导数与积
分
问题! 因此,有必要研究求导和求积的
数值
计算方法(不再关心其解析表达式)!
机器学习
中
的特征
建模
(特征
工程
)和算法选型
建模
- 以暴力破解识别为例
catalogue 1. 特征
工程
是什么?有什么作用? 2. 特征获取方案 - 如何获取这些特征? 3. 特征观察 - 运用各种统计工具、图标等工具帮助我们从直观和精确层面认识特征
中
的概率
分
布 4. 特征处理 - 特征清洗 5. 特征护理 - 特征预处理 6. 特征处理 - 特征选择 7. 特征监控 1. 特征
工程
是什么?有什么作用? 从某种程度上来说,数据和特征决定了机器学习的...
研发管理
1,268
社区成员
28,284
社区内容
发帖
与我相关
我的任务
研发管理
软件工程/管理 管理版
复制链接
扫一扫
分享
社区描述
软件工程/管理 管理版
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章