免费智能真题库 > 历年试卷 > 系统架构设计师 > 2015年下半年 系统架构设计师 上午试卷 综合知识
  第36题      
  知识点:   面向对象设计   细节   抽象   面向对象设计
  关键词:   接口   面向对象设计   对象   面向对象        章/节:   设计方法       

 
面向对象设计的原则中、( )原则是指抽象不应该依赖予细节细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。
 
 
  A.  开闭
 
  B.  里氏替换
 
  C.  最少知识
 
  D.  依赖倒置
 
 
 

 
  第36题    2014年下半年  
   33%
在UML提供的系统视图中,(35)是逻辑视图的一次执行实例,描述了并发与同步结构;(36)是最基本的需求分析模型。
  第31题    2011年下半年  
   43%
最少知识原则(也称为迪米特法则)是面向对象设计原则之一,指一个软件实体应当尽可能少地与其他实体发生相互作用。这样,当一个..
  第35题    2014年下半年  
   36%
在UML提供的系统视图中,(35)是逻辑视图的一次执行实例,描述了并发与同步结构;(36)是最基本的需求分析模型。
   知识点讲解    
   · 面向对象设计    · 细节    · 抽象    · 面向对象设计
 
       面向对象设计
        面向对象设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程。瀑布模型把设计进一步划分成概要设计和详细设计两个阶段,类似地,也可以把面向对象设计再细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构。对象设计确定解空间中的类、关联、接口形式及实现操作的算法。
        面向对象设计的一些基本准则是:模块化、抽象、信息隐藏、高内聚和低耦合。下面,我们具体介绍一些面向对象设计(含设计模式)的原则,这些原则有助于开发人员设计出具有弹性的系统,从而消除系统设计中存在的问题。
        (1)单一职责原则:这是模块内聚性在类和类的职责中的体现,如果一个类承担的职责过多,意味着这些职责耦合在一起,形成的很有可能是一个“杂凑类”,任一个职责的变化可能会削弱或者抑制该类完成其他职责的能力,并影响到构建、测试和部署等活动。通过业务分离可以对概念进行解耦,从而得到目的单一的类。
        (2)开放-封闭原则。在模块本身不变动的情况下,通过改变模块周围的环境达到修改目的。遵循开放-封闭原则设计出的模块具有一个主要特征,即对于扩展是开放的,对于修改是封闭的。也就是说,模块的行为是可扩展的,当应用的需求改变时,在模块上进行扩展使其具有满足那些改变的新行为。当模块进行扩展时,不必改动模块的源代码或二进制代码。
        (3)李氏(Liskov)替换原则。子类型必须能够替换掉它们的基类型;子类具有扩展父类的责任,而不是重写的责任。也就是说,基类的使用者不必为了使用子类而做任何其他的事情,他们可以在根本不了解子类的特殊性,甚至不必知道是否存在子类,存在哪些子类的情况下来调用基类的抽象方法。这样多态性才能顺利实现。事实上,正是Livkov替换原则,才使开放-封闭原则得以实现。因为正是子类的可替换性才使得基类的模块在无需修改的情况下就可以扩展。
        (4)依赖倒置原则。高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。每个较高的层次都为它需要的服务声明一个抽象接口,较低的层次实现这个接口,每个高层类都通过该抽象接口使用下一层;要依赖于抽象,而不是具体实现。也可以这样说,要针对接口编程,不要针对实现编程。
        (5)接口隔离原则。应当为客户端提供尽量小的单独的接口,而不是提供大的接口;使用多个专门的接口比使用单一的总接口要好。也就是说,一个类对另外一个类的依赖性应当是建立在最小的接口上的。这里的“接口”往往有两种不同的含义:一种是指一个类型所具有的方法特征的集合,仅仅是一种逻辑上的抽象;另外一种是指某种语言具体的“接口”定义,有严格的定义和结构。在进行OOD的时候,一个重要的工作就是恰当地划分角色和角色对应的接口。将没有关系的接口合并在一起,是对角色和接口的“污染”。如果将一些看上去差不多的接口合并,并认为这是一种代码优化,这也是错误的。不同的角色应该交给不同的接口,而不能都交给一个接口。
        (6)组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。组合相对继承而言,具有更大的灵活性而不会影响调用代码;具有更短的编译时间;适用性更广;具有较好的健壮性和安全性,减少的复杂性和脆弱性,具有更好的可维护性;能够在运行期创建新的对象。当然,耦合度的降低又会增加设计的难度、系统的复杂性以及实现的成本等,因此,在设计过程中,必须对这些因素综合考虑。
        (7)迪米特(Demeter)原则:又称最少知识法则(Least Knowledge Principle,LKP),就是说一个对象应当对其他对象有尽可能少的了解。遵循类之间的迪米特原则会使一个系统的局部设计简化,因为每一个局部都不会和远距离的对象有直接的关联。但是,这也会造成系统的不同模块之间的通信效率降低,也会使系统的不同模块之间不容易协调。迪米特原则在类的设计上主要体现在:优先考虑将类设置成不变类,尽量降低类的访问权限,谨慎使用Serializable,尽量降低成员的访问权限。但遵循该原则,会在系统中造出大量的小方法,这些方法仅仅是传递间接的调用,与系统的商务逻辑无关。
 
       细节
        在具体细节方面,对于不同的风险,要采用不同的应对方法。在信息系统开发项目中,常见的风险项、产生原因及应对措施如下表所示。
        
        常见的风险及应对措施
        
 
       抽象
        抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不很重要或非本质的方面。抽象是一种重要的工具,用来将复杂的现象简化到可以分析、实验或者可以理解的程度。软件工程中从软件定义到软件开发要经历多个阶段,在这个过程中每前进一步都可看作是对软件解法的抽象层次的一次细化。抽象的最低层就是实现该软件的源程序代码。在进行模块化设计时也可以有多个抽象层次,最高抽象层次的模块用概括的方式叙述问题的解法,较低抽象层次的模块是对较高抽象层次模块对问题解法描述的细化。
 
       面向对象设计
        面向对象设计(Object-Oriented Design,OOD)是将OOA所创建的分析模型转化为设计模型,其目标是定义系统构造蓝图。OOA与OOD之间不存在鸿沟,采用一致的概念和一致的表示法,OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
        OOD在复用OOA模型的基础上,包含与OOA对应如下五个活动:
        (1)识别类及对象。
        (2)定义属性。
        (3)定义服务。
        (4)识别关系。
        (5)识别包。
        OOD需要考虑实现问题,如根据所用编程语言是否支持多继承或继承,而调整类结构。
   题号导航      2015年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第36题    在手机中做本题