小编min*_*ros的帖子

使用区域循环UML活动图

我在UML活动图中建模循环.它适用于简单的条件节点(图1),但我正在寻找一种更具表现力的方式来强调循环语义.所以我来到这里那里展示的"地区"或"可中断地区" ,但我找不到很多令人满意的例子.

我的例子是一个处理给定列表的消息的函数.一旦找到第一个有效消息,循环就会中止,然后处理消息并且函数返回true.否则,它返回false(请不要对意义或废话进行评论,这只是为了样本).

图1:使用一个好的旧活动图条件节点.顺便说一句,遵循箭头的控制流更容易,但没有"循环",只有"如果".

图2:

  • 使用中断边缘(正)退出条件是否正确?没错,它可能是循环的[test]部分和迭代器的一部分.
  • BTW:for循环的迭代特性如何用UML表达最好?
  • 循环体内的活动最终节点是否正确(即当条件"消息有效?"产生"否"时)?在这里使用最终节点感觉不对,但我怎么能表达一个循环的控制流?

两个图的功能应该是等效的:

循环与条件节点

循环与区域


编辑:另一个实现Steph建议的图表:

  • 循环体内的初始和最终节点
  • "进一步处理"现在位于循环体内.嗯......好在这里,但可能还有其他循环,我宁愿把它放在外面.然后我可能会改变设计......
  • "下一个消息"也可以被看作是迭代器对象本身而不是作用 "(提供)下一个消息"从原始图.
  • 两个对象流箭头可能有点矫枉过正,但我​​认为它们是正确的.

在此输入图像描述

uml loops android-activity

20
推荐指数
1
解决办法
4万
查看次数

为什么ELF中其他共享库的函数长度信息?

我们的项目(C++,Linux,gcc,PowerPC)由几个共享库组成.在发布新版本的软件包时,只应更改那些源代码实际受影响的库."改变"是指绝对二进制身份(比较文件的校验和.不同的校验和 - >根据策略的不同版本).(我应该提到整个项目总是立即构建,无论是否有任何代码更改每个库).

通常,这可以通过隐藏包含的Header文件的私有部分而不是更改公共文件来实现.

但是,有一种情况只是delete添加到库libTableManager.so的类TableManager(在TableManager.cpp文件中!)的析构函数中,还有库libB.so的二进制/校验和(它使用类TableManager)已经改变了.

TableManager.h:

class TableManager 
{
public:
    TableManager();
    ~TableManager();
private:
    int* myPtr;
}
Run Code Online (Sandbox Code Playgroud)

TableManager.cpp:

TableManager::~TableManager()
{
    doSomeCleanup();
    delete myPtr;     // this delete has been added
}
Run Code Online (Sandbox Code Playgroud)

通过查看libB.so readelf --all libB.so,查看.dynsym部分,结果发现所有函数的长度,甚至是其他库中动态使用的函数的长度都存储在libB中!它看起来像这样(长度是第3列中的668):

527: 00000000 668 FUNC GLOBAL DEFAULT UND _ZN12TableManagerD1Ev

所以我的问题是:

  1. 为什么函数的长度实际存储在客户端lib中?起始地址不足够吗?
  2. 在编译/链接libB.so(某种"剥离")时,这可以以某种方式被抑制吗?我们真的希望减少这种依赖程度......

c++ linux powerpc elf

18
推荐指数
2
解决办法
395
查看次数

UML2:组件图中的端口和接口

由于我还没有完全理解组件图中端口和接口符号的正确用法,因此有几个问题:

I.想象一下,想要通过网络(TCP)使用非常特殊的远程记录器服务的软件.消息可以是一些XML.因此,记录器公开了一个接口,该接口指定握手,XML结构,XML元素等内容,以便记录器接受消息.

在此输入图像描述

a)我认为这个接口可能被称为"ILoggerProtocol",该端口可能以它提供的服务命名("日志记录")?

b)因此,我的应用程序中的组件实现了该接口,以便为服务器生成兼容的消息?

c)现在一个有趣的事情:对于通信,有一个额外的库"网络"提供简单的TCP东西,所以它做TCP连接,发送消息,处理错误等.当我只想强调时,我需要这个类吗?从生成的消息到服务器的方式?那么MY端口是TCP接口吗?

d)当我想绘制完整的图片时,如何正确地将网络组件添加到图表中,指出使用了ILoggerProtocol并且它通过网络组件通过TCP?

II.我的应用程序中的端口:现在有两个库,其中一个只使用另一个; 基本上,在C/C++中,它会#include对方的头文件:

在此输入图像描述

e)这是正确的图表吗?

f)我在这里需要端口吗?如果是的话,它们实际上代表什么呢?你会给他们什么名字?

g)或者棒棒糖在没有端口符号的情况下是否足够?

III.关于棒棒糖:

在此输入图像描述

h)那两个符号基本相同且可以互换吗?我找到了组合版本的名称"assembly",所以也许有区别......

port components uml interface

8
推荐指数
1
解决办法
8689
查看次数

如何通过单击Word 2010复选框运行VBA宏?

当我单击Word 2010中的复选框时,我想运行宏.

请注意,我既不想要"Legacy Forms"复选框也不想要"ActiveX"复选框!它们只能在一些"受保护的文档模式"下工作并且看起来很难看,但是我想要在编写文档时可以选择和取消选择的新文件,这对我来说看起来更好.

我知道,使用遗留表单,您可以在输入表单元素时直接插入宏,而在离开表单元素时可以直接插入宏,您可以在VBA中捕获事件,如

Sub CheckboxXY_Click()
Run Code Online (Sandbox Code Playgroud)

但这对Word 2010复选框不起作用,即使我给它们描述和标记名称.

重复:这些是我想要使用的形式(以防万一有人建议我使用Legacy的形式):

Word 2010复选框

这就是它们在文档中的样子(鼠标悬停):

在此输入图像描述

我不敢相信我是第一个试过这个的人......

checkbox vba ms-word word-vba word-2010

6
推荐指数
1
解决办法
1万
查看次数