在Smalltalk中设计事务管理器
Designing a Transaction Manager in Smalltalk
我正在帮助一位朋友用Smalltalk设计一个程序(以前从未用Smalltalk编码过,我只知道c++),在那里我需要从txt文件中读取事务并实现它。在某些情况下,我们可能会遇到不同的货币。在这种情况下,我需要从具有日期|currency1currenty2|currency 2current1汇率的表中获取货币汇率。所以我把我的课建模成这样:
- 读取事务的文件
- 对金额做加法或减法运算
在加或减的时候,可能会有不同的货币,比如加元、美元。因此,如果经常账户有美元,我可能需要使用运算符重载将加元转换为美元。
所以,我有一个基础类货币,衍生类加元&美元我的操作员超载看起来是这样的。
Currency& operator+(Currency& c) {
local_var + c.to_canadian_dollar();
}
uint32 to_canadian_dollor() {
return local_var * er.conversion_rate(); **<-- I need to pass date for the exchange rate function to get the exchange rate for today's date.**
}
问题是,我需要通过转换率的日期,但我不能通过运算符重载来通过日期。
其他人有更好的设计吗?或者闲聊中有什么语言功能可以让我在不打断链条的情况下度过约会?我可以通过在交易前设置日期来让设计看起来很难看。但只是好奇,如果有更好的设计我可以学习。
因此,可以定义一个新的数字对象,将您的日期动态数据封装在其中
你没有说你在使用哪种Smalltalk,但大多数风格都使用double dispatch
模式来实现"数学感知"对象之间的超越数学。如果你对你的问题提供了更多的细节,也许我会通过这里的例子提供更多的细节。。。
相关文章:
- 在C++事务之间存储大量字符数据的有效方法
- MySQL 事务和缓冲的请求列表
- C++ PQXX 工作事务崩溃
- 英特尔®事务同步扩展新指令 (TSX-NI) 与英特尔 TSX 有何不同?
- C++Poco ODBC事务-自动提交模式
- QThread 中的 QTcpSocket 将提交事务,但当 Write 被调用时"Cannot create children for a parent that is in a different
- 是否允许在同一 Sqlite 数据库连接中启动多个事务
- 条件语句,用于验证事务模块(.cpp)标头中#define(d)整数提供的范围
- 可视化如何使用C++在 SQLite3 数据库上实现回滚事务
- 如何在小型聊天应用程序中为数据库存储的用户事务建模
- 中止的xbegin事务是否还原xbegin启动时存在的堆栈上下文
- 在Smalltalk中设计事务管理器
- 如何在C++中创建事务流
- Firebird C 客户端 API:语句、事务和游标生命周期
- 事务中的线程信号
- PostgreSQL 是否计算嵌套的 BEGIN 和 END 语句,即使它不支持自治事务?
- C++ 全有或全无的类似事务的模式
- pqxx 中的事务对象
- 如果数据库连接在事务中失败,如何关闭 ADO 连接
- __transaction_atomic,但未启用事务内存支持