免费智能真题库 > 历年试卷 > 系统集成项目管理工程师 > 2010年下半年 系统集成项目管理工程师 上午试卷 综合知识
  第18题      
  知识点:   面向对象的基本概念   面向对象分析   面向对象分析与设计   实例
  关键词:   面向对象分析与设计   实例   对象   面向对象   面向对象分析        章/节:   信息系统建设与开发       

 
面向对象分析与设计技术中,(18)是类的一个实例
 
 
  A.  对象
 
  B.  接口
 
  C.  构件
 
  D.  设计模式
 
 
 

 
  第59题    2012年上半年  
   45%
某项目的现状是:已经被按照沟通计划发布了项目信息;一些项目可交付物成果发生了变更;这些变更是按照变更控制计划做出的;一位..
  第15题    2019年上半年  
   57%
关于面向対象概念的描述,正确的是( )。
  第17题    2009年下半年  
   38%
面向对象中的(17)机制是对现实世界中遗传现象的模拟。通过该机制,基类的属性和方法被遗传给派生类;(18)是指把数据以及操作数..
   知识点讲解    
   · 面向对象的基本概念    · 面向对象分析    · 面向对象分析与设计    · 实例
 
       面向对象的基本概念
        面向对象是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。面向对象的主要思想是将现实世界中的对象映射为问题域中的要素,从而有效地连接计算机和现实问题域。面向对象的基本概念有对象、类、抽象、封装、继承、多态、消息、模式和复用等。
               对象
               对象是由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位。采用计算机语言描述,对象是由一组属性和对这组属性进行的操作构成的。
               对象的三要素是对象标识、对象状态和对象行为。例如对于教师Joe,其个人状态信息包括性别、年龄和职位等,其行为特征为授课,则Joe就是封装后的一个典型对象。
               类
               类是现实世界中实体的形式化描述,类将该实体的数据和函数封装在一起。类的数据也叫属性、状态或特征,它表现类静态的一面。类的函数也叫功能、操作或服务,它表现类动态的一面。
               如教师类中,教师共同的状态通过属性表现出来,共同的行为通过操作表现出来,如下图所示。
               
               教师类的属性和操作
               对象是类的实际例子,如将所有教师抽象为教师类,则教师Joe是教师类的一个对象。
               类和对象的关系如下:
               .每个对象都是某个类的实例。
               .每个类在某一时刻都有零或更多的实例。
               .类是静态的,它们的存在、语义和关系在程序执行前就已经定义好了;对象是动态的,它们在程序执行时可以被创建和删除。
               .类是生成对象的模板。
               抽象
               抽象是通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。
               封装
               封装是将相关的概念组成一个单元,然后通过一个名称来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。
               继承
               继承表示类之间的层次关系,这种关系使得某类对象可以继承另外一类对象的属性和操作。继承又可分为单继承和多继承,单继承是子类只从一个父类继承,而多继承中的子类可以从多于一个的父类继承,Java是单继承的语言,而C++允许多继承。
               如类B继承了类A,则类B中的对象具有类A的一切特征,类B还可以有一些扩展。类A称为基类、父类或超类,类B称为类A的派生类或子类。
               多态
               多态性是一种方法,这种方法使得在多个类中可以定义同一个操作或属性名,并在每个类中可以有不同的实现。多态使得某个属性或操作在不同的时期可以表示不同类的对象特征。
               动态绑定
               绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
               动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是父类的一个特例,所以父类对象可以出现的地方,子类对象也可以出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。
               接口
               接口就是对操作规范的说明。接口只是说明操作应该做什么,但没有定义操作如何做。接口可以理解为类的一个特例,它只规定实现此接口的类的操作方法,而把实现细节交由实现该接口的类完成。
               消息
               消息体现对象间的交互,通过它向目标对象发送操作请求。
               组件
               组件也叫构件。组件是软件系统可替换的、物理的组成部分,封装了模块功能的实现。组件应当是内聚的,并且具有相对稳定的公开接口。
               模式
               每个模式描述了一个不断重复发生的问题,以及该问题的解决方案。它是一条由三部分组成的规则,表示了一个特定环境、一个问题和一个解决方案之间的关系。
               设计模式通常是对于某一类软件设计问题的可重用的解决方案。设计模式使人们可以更加简单和方便地去复用成功的软件设计和体系结构,能够帮助设计者更快更好地完成系统设计。
               设计模式的四要素:
               .模式名称(Pattern Name)。
               .问题(Problem)。
               .解决方案(Solution)。
               .效果(Consequences)。
               设计模式确定了所包含的类和实例,它们的角色、协作方式以及职责分配。按照设计模式的目的可以分为三类:
               .创建型模式:与对象的创建有关。
               .结构型模式:处理类或对象的组合。
               .行为型模式:对类或对象怎样交互和怎样分配职责进行描述。
               复用
               软件复用是指将已有的软件及其有效成分用于构造新的软件或系统。构件技术是软件复用实现的关键。
 
       面向对象分析
        同其他分析方法一样,面向对象分析(Object-Oriented Analysis,OOA)的目的是获得对应用问题的理解。理解的目的是确定系统的功能、性能要求。面向对象分析法与功能/数据分析法之间的差别是前期的表述含义不同。功能/数据分析法分开考虑系统的功能要求和数据及其结构,面向对象分析方法是将数据和功能结合在一起作为一个综合对象来考虑。面向对象分析技术可以将系统的行为和信息间的关系表示为迭代构造特征。
        面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
               认定对象
               在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题、定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象,实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
               组织对象
               分析对象间的关系,将相关对象抽象成类,其目的是简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑,如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
               对象间的相互作用
               描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
               基于对象的操作
               当考虑对象的界面时,自然要考虑对象的操作。其操作有从对象直接标识的简单操作,如创建、增加、删除等;也有更复杂的操作,如将几个对象的信息连接起来。一般而言,避免对象太复杂比较好,当连接的对象太复杂时,可将其标识为新对象。当确定了对象的操作后,再定义对象的内部,对象内部定义包括其内部数据信息、信息存储方法,继承关系以及可能生成的实例数等属性。
               分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。经验表明,从应用定义域概念标识对象是非常合理的,完成上述工作后写出规范文档,文档确定每个对象的范围。
               早期面向对象的目标之一是简化模型与问题域之间的语义差距。事实上,面向对象分析的基础是软件系统结构,这依赖于人类看待现实世界的方法。当人们理解求解问题的环境时,常采用对象、分类法和层次性这类术语。面向对象分析与功能/数据分析方法相比,面向对象的结果比较容易理解和管理。面向对象分析方法的另一个优点是便于修改,早期阶段的修改容易提高软件的可靠性。
 
       面向对象分析与设计
               面向对象分析
               面向对象分析(Object-Oriented Analysis,OOA)的目标是完成对所解问题的分析,确定待开发软件系统要做什么,建立系统模型。为了达到这一目标,必须完成以下任务:
               (1)在客户和软件工程师之间沟通基本的用户需求。
               (2)标识类(包括定义其属性和操作)。
               (3)刻画类的层次结构。
               (4)表示类(对象)之间的关系。
               (5)为对象行为建模。
               (6)递进地重复任务(1)至任务(5),直至完成建模。
               其中任务(2)至任务(4)刻画了待开发软件系统的静态结构,任务(5)刻画了系统的动态行为。
               面向对象分析的一般步骤如下:
               (1)获取客户对系统的需求,包括标识场景和用例,以及构建需求模型。
               (2)用基本的需求为指南来选择类和对象(包括属性和操作)。
               (3)定义类的结构和层次。
               (4)建造对象-关系模型。
               (5)建造对象-行为模型。
               (6)利用用例/场景来复审分析模型。
               面向对象设计
               面向对象设计(Object-Oriented Design,OOD)是将OOA所创建的分析模型转化为设计模型,其目标是定义系统构造蓝图。OOA与OOD之间不存在鸿沟,采用一致的概念和一致的表示法,OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
               OOD在复用OOA模型的基础上,包含与OOA对应如下五个活动:
               (1)识别类及对象。
               (2)定义属性。
               (3)定义服务。
               (4)识别关系。
               (5)识别包。
               OOD需要考虑实现问题,如根据所用编程语言是否支持多继承或继承,而调整类结构。
               面向对象程序设计
               面向对象程序设计(Object Oriented Programming,OOP)是采用面向对象程序设计语言,采用对象、类及其相关概念所进行的程序设计,将设计模型转化为在特定的环境中系统,即实现系统。通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现。一般采用如Java、C++、Smalltalk等面向对象语言,也可以用非面向对象语言实现,如C语言中的结构。
               面向对象方法中的五大原则
               (1)单一责任原则(Single Responsibility Principle,SRP)。当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任。
               (2)开关原则(Open&Close Principle,OCP)。软件实体应该是可扩展,即开放的;而不可修改的,即封闭的。
               (3)里氏替换原则(Liskov Substitution Principle,LSP)。在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a)关系。
               (4)依赖倒置原则(Interface Segregation Principle,ISP)。高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
               (5)接口分离原则(Dependence Inversion Principle,DIP)。依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化,即:使用多个专门的接口比使用单一的总接口总要好。
 
       实例
        某考务处理系统有如下功能:
        (1)对考生送来的报名单进行检查。
        (2)对合格的报名单进行检查。
        (3)对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者。
        (4)制作考生通知单(内含成绩合格/不合格标志)送给考生。
        (5)按地区、年龄、文化程度、职业和考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。
        该考务处理系统的分层数据流图如下图所示。
        
        考务处理系统分层数据流图
   题号导航      2010年下半年 系统集成项目管理工程师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第18题    在手机中做本题