静态结构分析

TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析
TEXT:
静态结构分折将描述对象和类之间的静态关系,通过建立对象和类之间的各种静
态联系,模拟客观事物的静态结构。尽管不同分析方法的具体步骤和结果的表现形式
不同,但基本思路都是以对象模型刻画系统的静态层次结构,主要步骤如图1所示。

graphic
图1 对象模型静态层次结构

REF:.txt,14_3_2_1.jpg, 识别对象和类.txt,识别关联与聚合.txt,识别属性.txt,提取公共成员.txt,分离部分成员.txt,添加成员派生新类.txt,模型改进.txt
识别对象和类
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析,识别对象和类
TEXT:
分析中总是从发现对象开始,如果对对象的特征具有深入了解,不难直接从问题描述中提取各种可能的类和对 象。对象通常对应问题描述中的名词,因此名词经常被作为类的候选者,但并不是所有名词都适于表示为类或对象,而且仅就问题描述而言,也未必涵盖了问题的所 有方面.所以对于类的选取需要具体问题具体分析。例如对于问题陈述“小李在餐厅用晚餐”,其巾小李可用一个对象表示,同样是名词,餐厅和晚警却未必表示成 类。如果这段描述出现在职工用餐食谱管理系统描述中,由于一道晚餐由主食和各道菜看组成,其组成方式等方面的信息正是软件所需,因此晚餐具有类的性质。反 之,如果上述描述的重点在于一个人在何处用餐,比如午餐在何处、晚餐在何处等,而没有必要描述每餐的具体内容,那么晚餐则不适于用类描述。
在问题描述中选择类或对象的原理很简单:一方面,对象是属性数据和行为的封装
体,因此一个问题描述中的名词所表示的概念如果具有内部结构,那么它就有很大的可能性需要用类来描述; 另一方面,系统的行为根据面向对象方法学,都被认为是对象之间相互作均的结果,这是在表达这样一种含义,即如果问题描述中两个名目标识相互作用的两个实 体,那么这两个名词适于用类描述。
尽管原理简单,但要准确地在问题描述中提取类并不是一件容易的事,因为使用自
然语言描述的问题通常存在多义性,可能使用不同词汇描述相同的事物,也可能对问题的描述缺乏全面性,因此掌握识别类的方法需要经验积累。

REF:.txt
识别关联与聚合
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析,识别关联与聚合
TEXT:
关联经常对应问题描述中的静态动词或动词短语,在类间建立起联系,比如类“人”和类“公司”之间的“为鬃工作”。常见的关联有位置(如“包含”、“之上”等)、“通信”(与鬃?#36890;话)、“拥有”以及两个类关联在一起的条件约束。
聚合实际上是关联关系的一种特例,一般不建议在分析的初始阶段花费很多时间区分聚合和关联,遇到一个关联时应该按照分析者的理解,比较自然地描述出来,无论用聚合或关联都可,只要易于理解。

REF:.txt
001
识别属性
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析,识别属性
TEXT:
属性用以描述对象的特性,描述一个行为主体所具有的特征,比如名字、年龄、重量、颜色、速度等。属性通 常对应于问题描述中具有所有格短语修饰的名词,例如“计算机的内存规模”、“汽车的价格”、“飞机的位置”等都可能被作为相应对象的属性,而与之相对的是 一些只有枚举性质的形容词、名词成数词等通常被作为属性可能的取值,例如“计算机的内存规模”以及“汽车的价格”的取值为一些整数,而“颜色”的取值可能 是红色、蓝色等。
一个对象的属性可能有很多,但在分析过程中的某个阶段没有必要考虑对象的所有属性,描述时仅考虑那些直 接与问题相关的属性即可,比如类“人”的对象是某个具体的人,一般都有姓名、年龄等属性,但是如果所创建的系统并不会用到一个人的姓名和年龄,那么类“人 ”就没有必要引入达两个属性。


REF:.txt
模型改进
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析, 模型改进
TEXT:
上述步骤进行后,下一步的工作是利用类之问的继承性优化已有模型结构,通过共享父类的部分代码使得模型 结构趋于简单,或者通过在类之间建立一般一特殊关系使类之间的联系更为紧密。使用继承性优化模型的方法主要分为3种:第一种是提取公共类成员形成父类,这 是一种自底向上的方法;第二种是通过改进已经存在的类(在类中添加新成员)形成子类,这是一种自顶向下的方法;第三种是对于描述范围过大的类进行拆分,得 到新的规模适当的类。
REF:.txt, 提取公共成员.txt,分离部分成员.txt,添加成员派生新类.txt
提取公共成员
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析, 模型改进,提取公共成员
TEXT:
对于经过初步面向对象分析后所形成的两个类,如果它们的属性和操作有一部分相同,就可以创建新类作为一 般类,将已有类的相同属性和操作提取出来作为一般类的属性和成员,被抽取了相同成员的类作为特殊类,从而形成一般一特殊结构。例如图2中电视类和冰箱类, 它们都具有型号、外观颜色及生产厂家等属性,因此建立家电类作为一般类,把电视类和冰箱类曲共同届性提取出来放入家电类,剩下部分作为特殊类。
graphic
图2 提取公共成员形成一般—特殊结构

REF:.txt,14_3_2_2.jpg
分离部分成员
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析, 模型改进,分离部分成员
TEXT:
由于对问题空间对象认识的深度所限,有时所定义类中的一些属性或操作只适用于一部分对象,而对其他对象 没有意义,出现这种情况的直接原因是类的范围选取过大,适当缩小类的范围,将那些真正具有相同性质和行为的对象作为一类加以描述。例如图3中在校人员类原 本包含工资和班主任两个属性,可是在校人员不全具有这两个属性的有效值,比如对教师而言,不存在班主任;对学生而言,不存在工资,因此将两个属性封装在一 起范围就过大,应将它们分离出来形成两个新类——教师”和“学生”,将两个类的共同居性和操作放到一般类中,形成一般一特殊结构。
graphic
图3 分离部分成员

REF:.txt,14_3_2_3.jpg
添加成员派生新类
TAG: 面向对象程序设计,面向对象的问题建模,静态结构分析, 模型改进,添加成员派生新类
TEXT:
对于已有类,添加届性或方法可以派生新类。比如图4中已经有一个描述人的类“人”,该类具有姓名和住址 两个属性。如果现在需要引入一个教师类,而且需要教师类具有姓名、住址、授课班级和教龄等属性,那么可以考虑教师类是否可以从类“人”派生,虽然教师类中 没有明确地描述出具有属性姓名和住址,但是由于这个类为类人的子类,因此它将继承其父类“人”所具有的两个属性。
graphic
图4 添加新成员

REF:.txt,14_3_2_4.jpg
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值