中国高校课件下载中心 》 教学资源 》 大学文库

北京大学:《组件技术》课程教学资源(讲义课件)第十二讲 软件设计模式(一)

文档信息
资源类别:文库
文档格式:PDF
文档页数:63
文件大小:508.35KB
团购合买:点击进入团购
内容简介
一、从一个例子看模式 二、关于模式的研究情况 三、介绍一些重要的模式(部分)
刷新页面文档预览

软件设计模式() 潘爱民 http://www.icst.pkueducn/compcourse

            

内 从一个例子看模式 关于模式的研究情况 ·介绍一些重要的模式(部分)

       

个设计例子 VC/Samples/MFC/OLE/DrawCli 口区 File Edit View Draw Object window Help 口区

     

Drawcli的基础 MFC提供的基础 Doc/iew结构 Doc提供了强大的数据管理功能 view提供了强大的显示功能 litwnd功能 CWinApp/CMain Frame 提供了一套命令处理流程 对OLE的封装 Active Container OLE Clipboard Property Page 数据结构管理功能 CObject/Coblist

                                          

我们的设计焦点 用C+对象来表示每一个图元 定义图元的公共接口 如何处理用户的操作 鼠标的动作 图元对象的创建和管理

  !! !"    #$%&'()    !"*+,-&

图元基类 class CDrawObj: public CObject ∥ Attributes CDrawDoc*m pDocument;//owner virtual int GetHandle) virtual CPoint Get Handle(int nHandle) virtual HCURSOR Get Handle Cursor(int n Handle virtual void SetLine Color(COLORREF color) virtual void Set Fill Color(COLORREF color) ∥ Operations virtual void Draw(CDC pDC) virtual void Draw Tracker(CDC* pDC, Tracker State state) virtual void Move To(const CRect& positon, CDraw View"pView= NULL); virtual int HitTest( CPoint point, CDraw View*pView, BOOL bSelected); virtual BOOL Intersects( const CRect& rect) virtual void Move HandleTo(int nHandle, CPoint point, CDraw View*p View=NULL) virtual void OnOpen( CDraw View* p View) virtual void OnEditPropertiesO virtual CDrawObj* Clone( CDraw Doc* p= NULL) virtual void Removel virtual void Serialize( CArchive& ar) };

              ! " ! #$% $ ! %&  & $$'(! %(  & $$'(!    !  )* +)*%! ,) $-+ . . /0#&&! ) "+ . . +1 & %! 1 &2 $-! ,) +"+ . . /0#&&!     . . !  '" !    /0#&&! $ ! %3 4-! 55 6

图元层次结构 CDrawObj CDrawobj CDrawRect CDrawPoly CDrawDleobj cDrawRect CDrawPoly CDrawsspt-

   "#   $   %&    "#  '' CDrawObj CDrawRect CDrawPoly CDrawOleObj ……

图元的创建 永久支持: CDocument: Serialize->CObList. Serialize cObject. Serialize CDrawObj: Clone Draw tool:创建图元对象

  ./01              "#  ( *+!"

交互操作 键盘和菜单侖令 MFC内部机制 鼠标操作 在 CDraw View的鼠标处理函数中处理 工具箱:工具链,有一个当前活动工具 转交给当前活动工具来处理

  23,4567    89()       !"#$%  &'(#$%)

工具箱和 CDraw tool class CDraw Tool ∥ Constructors p CDraw Tool ( Draw Shape n DrawShape) ∥ Overridable virtual void OnLButton Down( CDraw View* pView, UINT nFlags, const CPoint& point) virtual void OnLButtonDblClk(CDraw View*pView, UINT nFlags, const CPoint& point) virtual void OnLButtonUp(CDraw View* pView, UINT nFlags, const CPoint& point virtual void On MouseMove( CDraw View* pView, UINT n Flags, const CPoint& point virtual void OnEditProperties( CDraw View'pView) virtual void On Cancell ∥ Attributes Draw Shape m draw Shape static CDraw Tool* FindTool(Draw Shape drawShape) static CPtrList c tools static Draw Shape c draw Shape

  )      )  %4 %4!     &1   . . +#20)(7+"-!  &1 *  . . +#20)(7+"-!  &1#  . . +#20)(7+"-!  ,,  . . +#20)(7+"-!  '"  . . !   !    %4 %4  )()  %4 %4! "&  %4 %4 55 6

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档