class Professor {
private:
int salary;
…
public:
…
int getSalary() const {
return salary;
}
void setYearsOfService(int n)
yearsOfService=n;
// update:
salary = salaryScale(yearsOfService);
// better put the calculation in a private function, to not repeat formula multiple times
}
…
};
2条答案
按热度按时间slwdgvem1#
"/"意味着属性是派生的。这反过来意味着它来自"更高的领域",这意味着例如来自一个通用类或来自使用其他属性的一些计算。UML 2.5的第17页说
属性:每个属性都由其名称、类型和多重性以及任何其他属性(如{readOnly})指定。如果未列出多重性,则默认为1..1。后跟对属性的用途和含义的文本说明。如果派生属性,则名称前面将加一个正斜杠。如果派生属性,推导的逻辑在大多数情况下使用OCL示出。
因为所示的图没有告诉派生逻辑,所以你不能告诉任何关于它的东西。暂时实现一个简单的属性或从其父属性中离开它。在结束编码之前,你必须获得规则来使它成为一个正确的实现。
sh7euo9m2#
从UML到C++没有统一的Map,因为有很多方法可以实现设计意图。
对于派生属性,有三种常用策略:
顺便说一下,
/
没有提到任何关于可见性的东西(我在我的例子中只是假设了public),而+
、-
、#
在C中是指public
、private
、protected
,而UML的~
包可见性在C中没有等价物。