软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
封装与共生性

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

封装与共生性
1.封装的级别:
a.原始代码行:0级封装;
b:程序快:1级封装;
c:类和对象结构:2级封装;
d:包:3级封装.
e:部件:4级封装.
书中涉及的就这5种封装结构,但不难想象,接下来的封装结构会延续这一特点,也即抽象程度会越来越高,设计的难度也越来越大(设为N级封,则在设计时一方面要考虑该级别的“对象”结构及其交互,同时还要考虑N-1及以下级别的设计要求,包括接口,交互等等)。

2.类的设计要求
         TO           0级                                        1级                                                  2级
FROM
0级              结构化程序                        信息输出                                         -----------
1级              内聚                                    耦合                                                 -----------
2级              ------------                          类的内聚                                         类的耦合

3.封装的原因
封装是由于代码,程序和类之间的共生性引起的。共生性的种类:
静态共生性:
    名称共生:int i;若i改成j,则程序中有关变量i的引用都要变成j。
    类型共生性:如上例,若改成char i,则产生类型共生
    常量共生性:如确定一个人的坐标,设(0,0)经度0,纬度0为参考,然后加上相关的移动值,则经纬度之间产生常量共生。
    算法共生性:与常量共生性类似
    位置共生性:

动态共生性:
    执行共生性:必须以一定的顺序执行代码;
    同步共生性:时限制;
    数值共生性:算法的限制,例如a,b,c三个数值组成一个三角形的要求是任意两个的和大于第三个(类的不变式);
    标识共生性:

差异共生性:例如在一个程序中定义了
int i;int j。则如果想把i改成j,除了要考虑i的名称共生,还要考虑差异性共生,即需要先将j改成其他,然后再改i,或者把i改成非j的其他字母。

4.共生性和封装边界
一个没有封装单元的系统会产生两个问题:
a共生性泛滥
b混淆了哪个是真正的共生性,哪个是偶然相似或相临(只是貌似)

5.共生性和可维护性
为了提高系统性能,共生性提供了3个指导原则:
a  通过将系统拆分为封装的元素使得整个共生性(包括差异共生性)达到最小
b 将任何超越封装边界的共生性最小化
c 在封装边界内将共生性最大化

6.共生性滥用的实例
a C++友员函数的
b 无约束的继承·····
c 以来于实现的偶然性




相关文章

相关软件