1.软件设计
好的软件设计就是把一个问题清楚地分解为模块,然后再整体地排列这些模块。
高内聚:是一个模块功能强度的度量;
低耦合:涉及两个模块,是它们之间相互依靠或相互作用的程度的度量。
#功能独立性
定义:指的是一个内聚的模块执行单个任务或函数,若模块满足该特性,那它跟其他模块的互动是最小的。
用途:错误隔离;能增加被重用的次数;增加可理解性。
#扇入:直接调用一个给定模块的模块数量。高扇入表示代码的重用率高。
扇出:一个给定模块直接控制的模块数量。高扇出表示该模块缺乏内聚。
2.UML建模语言
5类图(用例图,静态图,行为图,交互图,实现图),9种图。(可见:http://m.blog.csdn.net/article/details?id=8552956)
(1)用例图:站在用户的角度,而不是开发者角度。
用例图中存在的关系 (可见:http://m.blog.csdn.net/article/details?id=8567448)
- 1 角色与用例:关联关系(实直线或者带箭头的实线)
- 2 用例之间:包含(《include》,带箭头的虚线),扩展(《extend》)[关于箭头的指向存在疑惑]。有包含用例才是完整的用例。
- 3 角色之间:泛化(实线空三角箭头,指向父类,这点与c++中的理解有点不一样)
(2)类之间存在的4种关系(可见:http://m.blog.csdn.net/article/details?id=8568303)
#BD-基本设计 ,DD-详细设计,FD-结构设计
3.面向功能的软件设计与面向对象的软件设计
#面向功能的软件设计
结构化分析(SA):将问题描述中的那套高级功能自上而下地分解,并吧它们图形化地表示出来。
结构化设计(SD):在SA中识别出来的所有功能都会被映射到一个模块结构上。和面向对象。
基于上述特性可认为这种设计是面向功能的软件设计。其特点为:一个系统被认为能执行一系列函数;系统状态是集中的,数据可在不同的函数之间共享。
#面向对象的软件设计
特点:系统被认为是一个对象的集合,对象间通过传播信息来交流;系统状态在对象中是分散的,每个对象可以控制自己的状态。
回顾一些类的知识
#函数的重载
定义:在声明对象是,编译器会根据调用者传递的参数自动匹配函数。
条件:函数的参数类型不同,参数个数不同(只有返回值不同的两个函数不算)。
#函数的覆盖
条件:发生在基类和子类之间;基类必须为虚函数(用virtual进行声明);函数名称与参数列表完全相同。
#函数的多态性
1)静态绑定:同样的消息被不同的对象获取就会产生不同的行动。当一个操作拥有多个方法是就会发送静态绑定,即涉及函数重载。
2)动态绑定:涉及函数的覆盖,把处理消息确切的方式留给接收消息的对象。