`
helpbs
  • 浏览: 1162974 次
文章分类
社区版块
存档分类
最新评论

也谈面向对象的系统功能设计

 
阅读更多

之前在写我的程序人生的过程中,很多网友都希望我介绍一些编程开发方面的经验。我之前也说过,虽然我也算计算机专业科班出身,不过很多东西并不是在学校里从老师那里学来的,而是在工作中经过失败后总结出来的。至于总结出来的是不是最好的,最适合的,那就不知道了。我只知道在我目前的系统开发过程中,还是有一定作用的。本文我就想从系统功能设计方面简要介绍一下自己的一些思路和模式,也希望能够对大家起到抛砖引玉的作用。如果您有更好的方法,请务必留言赐教。

1。系统设计目标

封装性:高内聚,低耦合

对模块进行封装,便于重用,模块变化产生的影响范围最低。
可扩展性:考虑未来扩展的可能
函数,接口的设计,要考虑未来可能产生的扩展
一致性:包括模块设计的一致性,以及不同系统中同一模块的一致性
模块设计的一致性,要求各个模块采用一致的设计思路,简化设计的复制度,提高可读性和可维护性。
2。系统设计要点
追求完美,但不镀金
要有追求完美的心态,但却不能镀金,过犹不及。
注意80:20原则。争取用20%的成本实现80%的功能,而避免用大量的时间解决非重点问题或低概率问题。
换位思考,从用户角度考虑问题
特别对于界面的设计,包括图形和内容的显示。要以一个用户的角度来考虑。操作简单,界面美观,稳定高效等。
各尽其责
理解类和模块的意义,明确每个类和模块的责任和角色。不做不属于它的工作。一旦出现不应该由本类来完成的工作,那么意味着你的模块已经存在缺陷。

3。系统框架结构

具体每个部分的作用在以下的各个部分进行介绍。

4。MFC基础类职责

MFC基础类包括应用程序类,主框架类,视图类和文档类。
应用程序类负责系统初始化,包括检查配置文件信息的有效性,数据库是否能正确连接,系统是否注册等前端工作,以确定是否需要启动系统;
主框架类负责工具条,状态条,菜单和浮动窗体的管理,并作为整个工程中消息收发的中转站;
浮动窗体将作为一个容器,以TAB页的方式集成各个模块的信息展示和交互窗口,使得整个系统能有有效的窗口管理,不至于出现浮动窗口满天飞的现象。
视图类负责响应用户的鼠标和键盘事件,根据当前的操作状态将用户的动作投递给对应的实体模块管理类进行处理。并将结果在视图中进行绘制;
对于视图的作用,要记住一个原则,它只负责信息的交互,包括接收各种输入,以及相应的信息展示,不进行任何与业务相关的处理,所有业务相关的处理,都必须交由各个业务模块的管理类来完成。
文档类负责记录各个实体类对象的实例。
现在文档类的功能相对弱化,勉强负责业务模块对象的管理。

5。独立模块的组成结构

每个模块大致包括一个管理类,一个信息窗口类以及若干实体类。
管理类负责封装实体类对象与外界的交互,接收视图类传递来的鼠标键盘事件并进行调度;
从抽象层的角度来讲,管理类和视图类有些相似,它是在业务模块中的“视图类”,负责接收外界对模块的请求,并返回业务模块对外部请求的处理结果。
信息窗口类用于以数据或图形方式向用户展示实体类对象的信息,并接收用户的输入;
实体类表述具体的模块业务,可以根据需要分解成更多更具体的子模块。
信息窗口类和管理类为强关联关系,信息窗口类为管理类的友元类。管理类和信息窗口类都作为业务模块的辅助对象,原则上认为它们都是依赖于业务模块类而存在,因此,将两者作为一个整体。
6。消息机制
为了降低类之间的耦合度,类之间使用消息进行信息传递。
发往视图或者浮动窗体的消息,可以通过主框架类进行转发,这样可避免实体类和视图类以及浮动窗体类的强绑定。
为了避免在业务模块中直接引入当前工程的视图类等类对象,而导致业务模块和当前工程产生强关联的现象,所有业务模块的消息都发往主框架类,然后由主框架类负责转发给各个展示窗口,比如视图、浮动窗口等,它们都是由主框架类进行管理的。
为了支持某些特定的功能,系统增加类似的消息反射机制,视图发往具体模块类的鼠标事件如果该模块无具体的操作和变化,那么将把该事件通过消息发送给视图,以便可以进行默认的功能处理。
7。模块设计
一个模块可以分解为若干个物理类和逻辑类。物理类负责封装数据和对数据的直接的读写和处理方法;逻辑类负责管理和调度物理类。
物理类之上又可进行抽象,形成基类,充分利用面向对象的方法进行类的设计。
明确各个类的权利和义务,不做不属于它的工作。这一点可以和公司管理结构相对比来理解。
类的成员变量和方法,必须明确其属于公有,保护还是私有。成员变量应该提供方法封装读写操作。
以上基本上是作者多年来摸索出来的一套系统功能设计的模式,在作者一直以来的项目实践中得到应用。模块的迁移和替换代价都较低。由于所有模块有较好的一致性,新员工也能够对系统结构在更短的周期内得以掌握。当然,这只是一孔之见,还请大家多多给予意见。
分享到:
评论

相关推荐

    实时数据库系统的设计浅谈.docx

    本系统采用面向对象的设计思想,采用4种数据结构来表示上述8种数据类型,并且使用类中的一个成员变量来区分是 IO 变量还是内存变量。 实时数据库系统的设计浅谈全文共3页,当前为第2页。 实时数据库系统的设计浅谈...

    谈:面向对象的软件测试与传统测试的比较[3]

    谈:面向对象的软件测试与传统测试的比较[3]软件测试类是否实现了要求的功能5、面向对象的单元测试传统的单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的...

    C#面向对象设计的七大原则

    这句话说得有点专业,更通俗一点讲,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,去扩展新功能。开闭原则中原有“开”,是指...

    浅谈计算机软件开发设计的难点及解决措施.docx

    面向对象设计法,面向对象设计方法主要是以实体和模块等程序进行相关软件设计,根据设计对象的不同,对对象进行分解,利用非形式化的方式对对象进行分析,表达对象模型,建立对象可见性,并找出每个对象的接口,解决...

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    浅谈数据库设计技巧[pdf]

    面向对象的程序开发,要做的第一件事就是,先分析整个程序中需 处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据 的函数(即算法),最后,再给类中的数据成员和函数划分访问...

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

    二十三种设计模式【PDF版】

    因此,你会在许多面向对象系统中看到类和相互通信的对象( c o m m u n i c a t i n go b j e c t)的重复模式。这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更 好。它们帮助设计者将新的...

    Visual Basic 2008程序设计完全自学教程 1/2

    内容丰富:Visual Basic2008的基础语法、面向对象编程、窗体应用程序、文件操作、数据库编程、网络应用等所有内容,《Visual Basic 2008程序设计完全自学教程》均有介绍 习题精选:章末均安排了大量的习题与编程实践...

    Visual Basic 2008程序设计完全自学教程 2/2

    内容丰富:Visual Basic2008的基础语法、面向对象编程、窗体应用程序、文件操作、数据库编程、网络应用等所有内容,《Visual Basic 2008程序设计完全自学教程》均有介绍 习题精选:章末均安排了大量的习题与编程实践...

    asp.net知识库

    也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多语言支持 (一) 应用系统的多语言支持 (二) 自动...

    VC与Labview、Matlab编程论文资料[2].rar

    基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_的DXF数据文件接口的研究.pdf 基于VC_的GoogleEarthKML地标文件的自动生成及应用.pdf 基于VC_的GPS软件接收机.pdf 基于VC_的GPS软件接收机设计.pdf 基于VC_的NC...

    VC与Labview、Matlab编程论文资料

    基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_的DXF数据文件接口的研究.pdf 基于VC_的GoogleEarthKML地标文件的自动生成及应用.pdf 基于VC_的GPS软件接收机.pdf 基于VC_的GPS软件接收机设计.pdf 基于VC_的NC...

    VC与Labview、Matlab编程论文资料[4].rar

    基于VC_的3G无线上网卡主功能设计与实现.pdf 基于VC_的DXF数据文件接口的研究.pdf 基于VC_的GoogleEarthKML地标文件的自动生成及应用.pdf 基于VC_的GPS软件接收机.pdf 基于VC_的GPS软件接收机设计.pdf 基于VC_的NC...

    C++初学者指南(原版)

    此模块讨论 C++ 中与面向对象编程直接相关的三个功能:继承、虚函数和多态性。继承是允许一个类继承另一个类特性的功能。虚函数是在继承的基础上构建的。虚函数支持多态性(面向对象编程的“一个接口,多种方法”...

    软件工程思想

    6.1 C++面向对象程序设计的重要概念 6.1.1 类与对象 6.1.2 继承与组合 6.1.3 虚函数与多态 6.2 良好的编程风格 6.2.1 命名约定 6.2.2 使用断言 6.2.3 new、delete与指针 6.2.4 使用const 6.2.5 其它建议 6.3 小结 ...

    通信与网络中的浅谈高级科技人才管理信息系统设计

    最终实现一个面向全市及周边地区拥有高级职称的工程师和研究人员的统一的注册接口,方便市政机构掌握和管理本市的高级人才的总体信息,并且按照国家学科分类标准提供各个领域以及分支学科的专家检索、随机抽取和后续...

    ASP.NET3.5从入门到精通

    第 3 章面向对象设计基础 3.1 什么是面向对象 3.1.1 传统的面向过程 3.1.2 面向对象的概念 8 第一篇 窗口与界面编程 3.1.3 面向组件的概念 3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 ...

    ASPNET35开发大全第一章

    第3章 面向对象设计基础 3.1 什么是面向对象 3.1.1 传统的面向过程 3.1.2 面向对象的概念 3.1.3 面向组件的概念 3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 ...

    浅谈领域模型驱动中表的设计方法

    先说分层在面向对象的开发中,我们通常会使用分层开发。三个基本层次结构如下。 层次 职责 表现层 提供服务、显示信息 领域层(业务逻辑) 逻辑、系统中真正的核心 数据源层 与数据库、消息系统、事务管理器...

Global site tag (gtag.js) - Google Analytics