免费智能真题库 > 历年试卷 > 系统架构设计师 > 2017年下半年 系统架构设计师 上午试卷 综合知识
  第35题      
  知识点:   程序设计   构件   软件构件
  关键词:   程序设计   对象   软件构件   构件        章/节:   基于构件的开发       

 
软件构件是一个独立可部署的软件单元,与程序设计中的对象不同,构件( )。
 
 
  A.  是一个实例单元,具有唯一的标志
 
  B.  可以利用容器管理自身对外的可见状态
 
  C.  利用工厂方法(如构造函数)来创建自己的实例
 
  D.  之间可以共享一个类元素
 
 
 

 
  第34题    2016年下半年  
   56%
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括(34)、测试用例和领域知识等。..
  第31题    2010年下半年  
   49%
软件的横向重用是指重用不同应用领域中的软件元素。(31)是一种典型的、原始的横向重用机制。
  第38题    2018年下半年  
   34%
EJB是企业级Java构件,用于开发和部署多层结构的、分布式的、面向对象的Java应用系统。其中,(36)负责完成服务端与客户端的交互..
   知识点讲解    
   · 程序设计    · 构件    · 软件构件
 
       程序设计
               类和继承
               1)类
               一个类是一些属性和方法的封装体,类的定义用关键字class声明,用关键字public、protected、 private指定类的成员的存取控制属性:private(私有)成员只有类内部的方法才能访问,protected(保护)成员派生类和同一文件夹下的类可以访问,public(公有)成员可以从类的外部访问。默认是public。这体现了面向对象的以下指导思想:尽量将类内部的细节隐藏起来,对类的属性的操作应该通过类的方法来进行。
               另外,public还可以用来修饰类,public类能够被其他文件夹下的类访问,非public类只能被同一文件夹下的类访问。一个.java文件中可以包含多个类,会被编译成多个.class文件,但只能有一个public类,而且该类名要和文件名一样。
               2)继承
               Java中用关键字extends表示类间的继承关系。父类的公有属性和方法成为子类的属性和方法,子类如果有和父类的同名、同参数类型的方法,那么子类对象在调用该方法时,调用的是子类的方法,亦即方法的重置。如果想要调用父类的同名方法,需要用super关键字(属性同理)。
               子类的对象可以作为祖先类的对象使用,即所谓类的向上转换,反之则不行。具体表现在:可以用子类对象来对祖先类对象赋值,可以用子类对象作为实参去调用以父类对象为形参的函数。
               对象的引用本质
               Java中的对象实际上是对象的引用,本质上和C语言中的指针是一样的;但也和C语言指针不尽相同,例如,不能自增、自减,不能强制转换成其他类型。
               例如:
               
               构造方法
               构造方法就是类的对象生成时会被调用的方法。每个类至少有一个构造方法(Constructor),也称构造函数。构造方法的名字和类名相同,没有任何返回类型。每个类都有一个默认的构造方法,但当用户自定义了构造方法后,默认的构造函数就不再有效了。
               重载
               同一个类中的两个或两个以上方法,名字相同,而参数个数不同或参数类型不同,称为重载。注意:不能有各方法名字和参数都一样,而仅仅返回值类型不同。
               静态属性和静态方法
               静态属性和静态方法的声明用关键字static实现,一个类的静态属性只有一份,由所有该类的对象共享。不需要创建对象也能访问类的静态属性和方法,访问方式为"类名.静态属性或静态方法",静态方法与对象无关,因此不能在静态方法中访问非静态属性和调用非静态方法。
               this和super关键字
               这两个关键字颇为重要。this代表当前对象,super代表当前对象的父类的东西。
               this主要用途有以下两个。
               (1)一个构造函数调用另一个构造函数,对构造函数的调用必须是第一条语句。
               (2)将对象自身作为参数来调用一个函数。
               super的用途如下:在子类中调用父类的同名方法,或在子类的构造函数中调用父类的构造函数,此时亦必须是第一条语句。
               多态
               所谓多态,是指通过基类对象调用一个基类和派生类都有的方法时,在运行时才能确定到底调用的是基类的方法还是派生类的方法。多态的好处是增加了程序的可扩展性。多态是通过动态联编实现的,即编译时不确定,程序运行时才确定调用哪个函数。
               抽象类与接口
               1)抽象类
               抽象类通过关键字abstract实现,抽象类的目的是定义一个框架,规定某些类必须具有的一些共性。
               包含抽象方法的类一定是抽象类,所谓抽象方法是指没有函数体的方法。
               抽象类的直接派生类必须实现其抽象方法;抽象类只能用于继承,不能创建对象。
               2)接口(Interface)
               接口用关键字interface声明,只能用于继承。注意:此时关键字为implements(实现)。接口用于替代多继承的概念,能实现多继承的部分特点,又避免了多继承的混乱,还能起到规定程序框架的作用。注意:接口也可以用于多态。
               直接继承了接口的类,必须实现接口中的抽象方法;间接的则可以实现,也可以不实现。
               3)抽象类与接口的异同
               接口和抽象类都不能创建对象。
               抽象类不能参与多继承,抽象类可以有非静态的成员变量,可以有非抽象方法;接口可以参与多继承,所有属性都是静态常量,所有方法都是public抽象方法。
               异常处理
               1)异常概念
               异常,即出错,比如0作为除数、找不到类、打开文件错误、数组越界等。异常如果不进行处理,那么程序运行就会结束;如果进行处理,那么会在执行完异常处理代码后继续运行。
               Java中所有异常类均继承自类Exception。
               Java中的异常类层次结构如下:
               
               此外,还有EOFException、 FileNotFoundException、 MalformedURLException等。
               2)捕获异常
               异常处理的典型用法如下,将可能出现异常的代码放在try块中,其后由一个或多个catch捕获相应异常进行处理,注意只执行第一个匹配的catch块,忽略后面的。
               
               如果某个方法中所产生的异常该方法自己没有处理,那么可以在调用该方法的方法中进行处理,如果自己处理了,那么调用它的方法就无法得到该异常。
               3)抛出异常
               异常除了运行中系统产生的之外,也可以主动抛出异常,用关键字throw,如throw new Exception()。注意:throw只能抛出Throwable子类的异常。
               4)带throws关键字的方法
               带throws关键字的方法声明如下:
               
               强制调用该方法的方法必须处理可能发生的异常,或者将异常重新定向。假定方法A带throws关键字,而方法B中调用了方法A,则方法B中必须有处理方法A中可能产生的异常的语句,或者方法B也带throws关键字,指明调用方法B的方法必须处理异常。
               final关键字
               用final关键字定义的常量,在其初始化或第一次赋值后,其值不能被改变。常量必须先有值,然后才能使用。对于常量的第一次赋值只能在构造函数中进行。
               final对象的值不能被改变,指的是该对象不能再指向其他对象,而不是指不能改变当前对象内部的属性值。
               函数参数声明为final后,函数中不能改变其值。
               final方法是不能被重置的方法。
               final类不能被继承,其所有方法都是final的,但属性可以不是final的。
 
       构件
        为了达到门户站点的基本要求,一个企业的网站应当由以下构件组成:
        (1)应用服务器(Application Server)。主要用于企业较大规模电子商务应用的开发、发布和管理,同时实现与企业原有系统的集成。
        (2)工作流和群件服务器。主要用于使工作人员和商业伙伴能通过Internet共享资源、协同工作。
        (3)内容管理子系统。简化企业网站的产品管理、提高效率,并将相应的、经过筛选的内容发送给最终用户。
        (4)目录服务器。企业使用它来管理防火墙内外的用户、资源和控制安全权限,同时为用户的通信和电子商务提供一个通道。
        (5)性能优化工具。改善网站服务质量,包括流量管理、动态数据缓存、网络动态负载(Load Balancing)、知识管理等。
        (6)邮件和消息服务器。使企业和服务提供者能为所有员工、合作伙伴和客户社区提供商业级的通信架构。
        (7)个性化信息服务。在实时分析用户数据的基础上提供一对一的交易平台。通过对用户行为的更好理解,企业更跟踪、分析和理解网站用户。
        (8)搜索引擎。用户提供更广泛的资源。
        (9)安全服务器。包括数据安全、应用安全和交易完全。其基本内容有用防火墙阻止对网络的非授权访问,在安全和个人的角色授权的基础上,只需一次登录就可以访问网站的所有应用,通过提供一种对在线交易的每一方的可信任的授权方式,帮助客户、合作伙伴和员工访问Internet应用。
        (10)网站服务器(Web Server)。将各种网站的信息发布给用户。
        以上是通常构建网站所需要的构件,企业可针对自己的特点以及网站规模大小,应用的类型等自行选择。
        在网站结构的实现上,通常在逻辑上将网站分为三层:表示层、应用逻辑层、数据层。这种结构使得网站具有较好的可扩充性,将表示层与业务功能的实现分离开来,能够更灵活地适应业务的发展。网站不需要对业务逻辑组件进行任何变动,就能够适用新出现的表示形式和客户端。例如,为了使用户更方便地在网站上购物,网站调整了页面格局和页面风格。由于网站结构层次分明,只需要改动网站表示层,业务逻辑层和数据连接层则不需要改变。
        (11)表示层和相关技术。表示层用于为最终用户提供一个友好的用户界面,接受用户提交的事件,并将处理的结果返还给用户。这一层作为应用的前端和“窗口”,决定了用户对网站优劣的评价和总体印象。
        网站从总体上说是独立于客户端的,客户端包括基于浏览器的HTML客户端、给予Java的客户端、传统的C/C++应用、Power Builder客户端以及VB客户端。
        在表示层除了使用最基本的HTML语言外,通常还利用JavaScript Internet脚本语言,以及Java Internet程序开发语言。JavaScript程序运行在客户端,能够完成用户事件获取、数据提交前的合法性校验、错误检查和实现动画效果等。而利用Java开发的JavaServlet程序运行于服务器端,负责实现与业务逻辑层的交互,从业务逻辑层获得数据,并将用户提交的信息传给业务逻辑层,而基于Java语言的JSP程序,则实现数据的动态显示,它将JavaServlet程序获得的数据形成相应的HTML页面传给客户端。
        为了适应电子商务的各种需求,新的表示层技术不断发展。如XML(可扩展标记语言)和RDF(资源描述框架)等都是当前最新的、对表示层产生重大影响的技术。XML通过一种结构化的文本方式来表述数据;RDF提供一种统一的、可互操作的方法通过Internet在程序间交换元数据。
        (12)商务逻辑与实现。商务逻辑层是电子商务系统的核心,也是系统建造过程中的重点和难点。商务逻辑层包括商务应用程序、支持平台(包括商务服务层、商务支持层和基础支持层)。
        支持层向上层(商务应用层)提供的服务主要包括:表达、商务支持、运行支持、开发与集成服务。构成支持平台的技术产品至少应当包括:Web服务器、商务支持软件、集成与开发工具、计算机主机、网络及其他系统软件(如操作系统、管理工具软件等)。
        通常,Web服务器、商务支持软件、部分集成开发环境被集成到一个被称为“应用服务器”的软件包里,所以商务逻辑层在物理上可以简化为以下三个部门:应用软件(实现商务逻辑);应用服务器(为应用软件提供软件支持平台)和其他支持软件;计算机主机及网络(为应用软件提供硬件支持平台)。
        构造商务逻辑层的任务是为选择合适的应用服务器和其他支持软件,开发实现商务逻辑的应用软件系统。
        (13)数据层及实现。构造数据层的关键是开发电子商务与外部系统、内部资源系统的接口,完成系统集成。
        数据层的数据源主要包括:相关信息系统(如ERP系统)的数据与企业的数据库,企业与协作企业(如供应商)间交换的数据,企业与银行间交换的数据,企业与认证中心之间的认证数据,企业与其他商务中介交换的电子数据。
        由于企业商务逻辑的处理过程是一个从市场、销售、采购到客户服务的整体,所以必须将商务逻辑处理过程中所涉及到的数据集成到一起,因此构造数据层的任务是:实现电子商务系统与企业内部和外部信息系统之间的网络互联,并确保安全的网络环境,基于应用服务器平台的商务应用系统与企业内部数据的共享。
 
       软件构件
        构件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户直接操作的细节进行封装,同时对各种业务逻辑规则进行实现,用于处理用户的内部操作细节,这个封装体就常常被称作构件。对我们而言,构件就是实现了某些功能的,有输入、输出接口的黑匣子。
        对于构件,应当按可复用的要求进行设计、实现、打包、编写文档。构件应当是内聚的,并具有相当稳定的公开接口。有的构件具有广泛的可复用性,可复用到众多种类的应用系统中。有的构件则只在有限的特定范围内被复用。
        构件有不同的含义。有人采用大型的定义,即一个构件是相关工作成品的一个集合,把所有种类的工作成品(如文档、指南、计划、测试、代码)都看成是可复用构件。MS、UML、OMG使用“构件”一词指一个封装的代码模块或大粒度的运行的模块。
   题号导航      2017年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第35题    在手机中做本题