2014-05-17:UML扩展包含泛化侧重点,CXXXAPP类设置主窗口,MFC 事件响应函数出现在三个地方,

94 篇文章 0 订阅
5 篇文章 0 订阅

参考:http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html

1、相同点:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。


2、不同点:


泛化:对于某一用例,有两个角色均可以使用它,但其中一个角色不仅可以使用它还可以对它进行别的操作,就可以使用泛化。泛化强调的是子用例间的互斥性;泛化有很强的父子关系,如检索收支信息泛化为检索收入信息和检索支出信息,有明显的重合的地方,如都有检索信息


包含某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;如维护图书信息包含修改图书信息,添加图书信息,删除图书信息。包含强调的是包含的对象对角色的间接服务性。用户不能直接操作它,非得通过包含它的对象才能直接为角色提供服务。如果没有互斥关系或明显的重合时,就使用包含


扩展:角色在使用一个用例时,可以执行附加的功能。扩展的用例不能单独存在。如登录时,可以选择隐身登录,也可以不选。


3、也许会比较拗口,但在作图时要求的不是太苛刻,只要说得过去就差不多了。用之前多考虑直接性与间接性,有条件性和无条件性这两个特点就行了。用以下方法:

A、如果是体现两个角色的功能有重叠的部分,就用泛化,强调子用例的互斥性。泛化的子用例和父用例有明显的重叠。

B、如果不是泛化关系,又是子用例的话,可以考虑包含,包含的父用例一定是一个完整的功能。一般包含的用例为了简化父用例。但某些时候是被包含的子用例为用户提供间接服务。

C、扩展的发展是有条件的,必须在是用某个用例时才能使用。

如以下是李老师画的


4、养成的好习惯,一定要减少复制粘贴,习惯用自己的话说。


5、MFC中:MFC启动时,一般都要经过CXXXAPP的构造函数函数,可以用来指明主窗口,如:

	CQQClientDlg dlg;
	m_pMainWnd = &dlg;//m_pMainWnd即为指定的主窗口,m_pMainWnd 是CWinThread的共有变量
6、对于MFC 的事件响应函数,必须在三个地方出现,第一个是类中的protected声明,第二个是message map中,用ON_MESSAGE函数与对应的按钮相关联,第三个是类的方法的定义中。如下:

位置一:

protected:
	HICON m_hIcon;
   
	// Generated message map functions
	//{{AFX_MSG(CQQClientDlg)

	afx_msg void OnMsgRecv(WPARAM wParam,LPARAM lParam);//响应自定消息WM-RECVMSG

位置二:

BEGIN_MESSAGE_MAP(CQQClientDlg, CDialog)
//{{AFX_MSG_MAP(CQQClientDlg)

ON_MESSAGE(WM_MSGRECV,OnMsgRecv)
……
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

位置三:

void CQQClientDlg::OnMsgRecv(WPARAM wParam,LPARAM lParam)
{
m_SevAddr=*(SOCKADDR_IN*)wParam;
……
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值