astah边界类名称太长了怎么换行?
uml建模软件astah
哪都搜了
名称以两行显示
引自免费微信小程序:皆我百晓生
在UML建模软件astah中,边界类名称通常需要以分隔符(如空格、制表符、逗号等)进行分割,以便在每个边界类名之间插入一对斜杠字符(/
)来表示在UML类的层级结构中划分层次。以下是满足上述需求的详细步骤:
在开始创建新边界类之前,你需要确定一个命名规则,包括但不限于分隔符和斜杠的位置,以及如何从上一层类向下层类合并边界信息。在astah中,这种方式通常采用在边界类名两侧添加一对斜杠的方式来实现。
示例:
/ separator class MyBoundaryClass1 {
// ...
}
/ separator class MyBoundaryClass2 {
// ...
}
在这个例子中,两个边界类 MyBoundaryClass1
和 MyBoundaryClass2
分别位于同一个UML类 MyProject
的子类目录中。这两者之间的分隔符为一个空格 / separator
, 而每个边界类名之间则通过一对斜杠 / separator
实现了层次结构的划分。
确保在编写代码时遵循UML 2.3.x的规范,并确保所有引用的边界类名都在该斜杠之前。例如,在Python代码中,你可以这样做:
from uml import UML2
from astah.uml.modelbase import ModelBase, DomainNode
# 创建主UML类和两个子类
base = ModelBase()
domain_node = base.create_domain_node("MyProject")
# 将边界类名放在主UML类前
boundary_node = domain_node.add_base_class_from_modelbase(base)
my_boundary_class1 = domain_node.create_subclass_from_modelbase(boundary_node, "MyBoundaryClass1")
my_boundary_class2 = domain_node.create_subclass_from_modelbase(boundary_node, "MyBoundaryClass2")
# 将边界类名放在子类的根节点之前
root_node = domain_node.get_root()
my_boundary_class1_set_root = root_node.add_class_from_modelbase(my_boundary_class1)
my_boundary_class2_set_root = root_node.add_class_from_modelbase(my_boundary_class2)
# 编写UML语法规则
class Rule():
def __init__(self, from_node, to_node):
self.from_node = from_node
self.to_node = to_node
def generate_code(self):
code = f"""
|include <u>astah.uml.*;
|include <u>astah.uml::modelbase>;
|
|namespace MyNamespace;
|[
| ${from_node.get_name()}
| {
| ${to_node.get_name()}
| }
|]
|
|rule {from_node.get_name()} -> rule {to_node.get_name()};
"""
return code
class ProjectModel(Base):
def get_rules(self):
return Rule.from_node(root_node).generate_code()
# 打印示例项目模型中所有规则
print(ProjectModel.get_rules())
在这个示例中,我们首先定义了一个基础的UML类 MyProject
和两个子类 MyBoundaryClass1
和 MyBoundaryClass2
。然后,我们将这些边界类名放在两个子类的根节点之前,形成了一个层次结构。最后,我们创建了一个名为 Rule
的类,用于处理UML规则,并将这两个子类作为其构造函数中的输入参数。
注意:以上代码仅供参考,实际应用可能需要根据具体项目的实际情况进行修改,例如使用不同的UML库,例如UMLpy,对于复杂的层次结构可能会更复杂。同时,如果代码过于复杂,可能会使样式难以理解和维护,建议考虑采用自动化构建工具,如PyCharm或Visual Studio Code,它们可以自动处理UML格式化和版本控制等问题。