面向对象方法 总结.docx
《面向对象方法 总结.docx》由会员分享,可在线阅读,更多相关《面向对象方法 总结.docx(18页珍藏版)》请在冰豆网上搜索。
面向对象方法总结
面向对象方法总结:
该文档包含如下内容:
1.IBMDEV475每章后面review的答案.
2.几种设计模式的介绍以及应用.
3.组件的一些复习资料.
该文档时本人经过3天时间整理出来的,里面的答案可能不准确,请自己更改.
该文档最初的目的是作为吉林大学研究生面向对象方法考试的复习资料.
**************************************************************************
DVE475review答案:
Review:
第二章
a.需求的主要产出是什么?
1.问题描述2.用例模型主图3.补充说明4.术语表
b.需求的产出有什么用途?
c.用例模型是什么?
使用用例描述了系统的功能需求,模型化表示了系统的功能(用例)和系统的环境(角色)
d.角色是什么?
角色表示与系统交互的任何事物
e.用例是什么?
列举出用例属性的一些例子?
用例表示系统执行的一系列动作。
这些动作产生对某一角色可见的结果。
例如,“订餐”、“更新菜单”、“处理付款”都是用例。
f.用例和场景有何不同?
用例是由一组用例实例组成的,场景是用例的一个实例.
g.补充说明是什么?
包含什么内容?
内容:
功能,可用性,稳定性,性能,可维护性,设计约束.
h.词汇表是什么?
包含什么内容?
词汇表定义了所设计的系统中的核心概念。
第三章
a.分析和设计阶段的主要目的是什么?
1.将需求转化为系统未来的设计
2.使系统引进更加合理的架构.
3.使设计和实现环境相匹配,做性能设计.
b.分析和设计阶段的输入和产出是什么?
输入:
Use-Case模型.术语表.补充说明
输出:
设计模型.数据模型.结构文档
c.列举并简要描述一下架构的“4+1视图”?
主要包括:
逻辑视图.实现试图.过程试图.分布试图.
“4+1”模型是由系统开发人员从各自角度描述的体系结构视图,架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例(Use_Case)来说明,从而形成了第五个视图.Use-CaseView
d.分析和设计的区别是什么?
分析是理解想要解决的问题是什么,并给出一些理想化的设计,关注行为和系统结构,描述功能需求,是一个小的模型.
设计是关注怎么解决问题,给出操作和属性,关注性能,设计接近于实际的代码,定义对象生命周期,是非功能需求,是一个大的模型.
e.什么是架构?
软件架构包含着一套关于这个软件系统组织的重要结论:
–组成系统的结构元素和它们的接口
–元素中协作的特定行为
–将结构和行为元素结合成一个大的子系统
–体系结构风格支配了组织结构
第四章
a.构架分析的目的是什么?
1.解释构架设计的目的,以及其在生命周期的什么时期执行。
2.说明一个典型的构架模式和一套分析机制,以及他们如何影响构架。
3.说明用以支持构架决策的基本原理和需要考虑的事项。
4.说明如何阅读和理解构架设计的结果
b.什么是包?
包是一个通用机制,用于将元素组成组。
它是一个模型元素,能包含其他模型元素。
c.什么是分析机制?
请举例(下划线为课件内容)。
分析机制代表常见问题的常用解决模式。
它们可能表示结构模式或行为模式,也可能表示这两者。
它们用于在分析过程中向设计人员提供复杂行为的简短表示,从而减少分析的复杂性并提高分析的一致性。
通过这些机制,可以使分析工作集中于将功能性需求转换成软件概念,而不必细究那些需要用来支持功能但却不是功能核心的相对的复杂行为。
举例:
通信(IPCandRPC)消息路由分布事务管理进程控制与同步(资源争夺)
信息交换,格式转换安全性错误检测/处理/报告冗余度遗留接口
例子2.进程间通信机制:
–反应时间–同步性–消息大小–协议
d.在构架分析期间将确定什么关键抽象概念?
为什么它们在这里确定?
确定分析类关系
关键抽象是一个通常在需求上被揭示的概念,系统必须能够对其处理.
度额定关键抽象概念:
类图上的模型分析类和关系,包括分析类的主要描述,将分析类映射到必要的分析机制
为什么:
?
?
?
?
?
?
?
?
(关键抽象的来源:
–领域知识–需求–词汇表–领域模型,或业务模型)参考着看
e.什么是分层构架?
举例说明典型的层。
典型分层方法:
应用程序子系统——包含了组织所开发的软件。
特定业务——包含特定业务类型的许多可重用的子系统。
中间件——提供了工具类子系统和在不同环境中的分布式对象计算的平台无关服务,等等。
系统软件——包含了实际的基础软件,如操作系统,对特定硬件的接口,设备驱动程序,等等。
第五章
a.用例分析的目的是什么?
找出用例中的执行流程、事件的各个类。
通过实现用例,把用例的行为指定到具体的类。
找出类的责任、属性和他们相互的关系。
规范地确定系统中各用例的职责。
我们也可以认为,用例分析的目标,就是把我们对用例的理解,转变为与业务一致的形式,实现需求的价值。
在用例设计的时候,我们把业务概念抽象成类、对象、关系、组件、接口等等,这些都与目标系统直接对应。
b.什么是分析类?
说出三种构造型的名称,并描述它们.
分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处理的主要抽象概念的“第一个关口”。
如果期望获得系统的“高级”概念性简述,则可对分析类本身进行维护。
分析类还可产生系统设计的主要抽象--系统的设计类和子系统。
分析类是跨越需求和设计实现的桥梁。
分析类有三种:
边界类
边界类是一种对系统外部环境与其内部运作之间的交互进行建模的类。
这种交互包括转换事件。
并记录系统表示方式中的变更。
控制类
控制类用于对一个或几个用例所特有的控制行为进行建模。
控制对象(控制类的实例)通常控制其他对象,因此他们的行为具有协调性质。
实体类
实体类是用于对必须存储的信息和相关行为建模的类,实体对象用于保存和更新一些现象的有关信息。
c.什么是用例实现。
一个用例实现代表了一个用例的设计观点。
它是一个组织模型元素,用于将一定数量的工件进行分组。
这些工件与用例的设计有关(如参与类和子系统的类图以及说明用例事件流的序列图),并且通过一个类集和子系统实例来执行。
描述当分配职责给分析类时的一些注意事项。
集中信息和行为
维持类的角色
保持类责任的相关性
保持类的粒度
不要重复责任
必要的时候调整候选类
ƒd.在用例分析期间应当产生多少交互图?
用例分析期间可以根据需要产生多个交互图。
可以使用协作图和序列图。
第六章
a.确定设计元素的目的是什么?
对分析类的交互进行分析,以确定设计模型元素。
什么是接口?
接口是指类或组件提供特定服务的一组操作的集合。
因此,一个接口描述了类或组件的对外的可见的动作。
一个接口可以实现类或组件的全部动作,也可以只实现一部分。
b.什么是子系统,它和包有什么区别?
一个子系统是一个有单独规范和实现部分的包。
它代表了模型中一个连续的,和系统中其它部分有清晰的接口的单元。
它通常代表了系统中以功能或实现分界的一部分。
包只是一些元素的集合,子系统是可以协同提供某些服务的元素的集合。
c.子系统是做什么的,你如何确定他们?
子系统用来展示系统的一部分功能,这部分功能联系紧密。
每个子系统都为整个系统提供一些特定的功能,把同一个用例中的对象放到一个子系统里。
创建一个子系统用来在子系统之间移动数据。
最小化子系统间的联系。
确保一个子系统中的所有元素都是功能相关的。
一些分层和分区的注意事项是什么?
分层:
能见度
只在当前层及以下存在依赖。
可变性
上层只被需求改变影响。
下层只被环境改变影响。
泛化
更底层有更多的抽象模型。
层的数量
小系统:
3-4层;复杂系统:
5-7层。
分区
内聚和耦合
用户的组织
能力和/或技能领域
系统分布
保密性
可变性
第七章
a.说明运行时构架活动的目的是什么?
分析并发性的要求,识别进程,确定进程间通信机制,分配进程间的协调资源,确定进程的生命周期,并分发进程之间的模型元素。
b.什么是进程?
什么是线程?
进程
–提供重量级控制流
–是独立的
–可被分成单个的线程
线程
–提供轻量级控制流
–在进程所在的环境中运行
c.说明在确定进程时的一些考虑事项。
为系统所需的每个独立控制流,创建进程或线程。
d.说明将类和子系统映射到进程的两种策略。
两种策略(同时使用)
从内到外
–将彼此密切协作,并且必须在同一控制线程中执行的元素组合起来
–拆分那些不相互影响的元素
–重复这些步骤直到进程达到最小数量,仍然能提供必需的
分布和有效的资源利用
从外到内
–为每个外部激励确定一个独立控制线程
–为每个服务确定一个独立控制线程服务器
–将线程减少到所能支持的数量
e.你如何模型化进程视图?
使用什么建模元素和图?
(不太确定)
使用类图
–作为进程的主动类
–从进程到类的组装关系
–从进程到子系统的组装关系
第八章
a.说明分布活动的目的是什么?
减少处理器负载
ƒ特殊处理需求
ƒ性能配比
ƒ经济考虑
ƒ对系统的分布式访问。
b.什么是节点?
描述两种不同“类型”的节点。
节点是物理的运行时计算资源。
包括两种:
处理器节点,用来执行系统软件
设备节点,用来支持设备,通常由一个处理器控制
c.说明在将进程映射到节点时的一些考虑事项。
分布模式
ƒ响应时间和系统吞吐量
ƒ降低网络间通信量
ƒ节点容量
ƒ通信媒体带宽
ƒ硬件与通信链路的可用性
ƒ重选路由需求
d.你如何模型化部署视图?
使用什么建模元素和图?
(这题还不确定)
使用远程方法调用(RMI)模型化部署视图。
使用RMI支持类(例如,远程和串行接口,命名服务),和分布类。
第九章
a.用例设计的目的是什么?
Thepurposeofusecasediagramistocapturethedynamicaspectofasystem.Butthisdefinitionistoogenerictodescribethepurpose.
Becauseotherfourdiagrams(activity,sequence,collaborationandStatechart)arealsohavingthesamepurpose.Sowewilllookintosomespecificpurposewhichwilldistinguishitfromotherfourdiagrams.
Usecasediagramsareusedtogathertherequirementsofasystemincludinginternalandexternalinfluences.Theserequirementsaremostlydesignrequirements.Sowhenasystemisanalyzedtogatheritsfunctionalitiesusecasesarepreparedandactorsareidentified.
Nowwhentheinitialtaskiscompleteusecasediagramsaremodelledtopresenttheoutsideview.
Soinbrief,thepurposesofusecasediagramscanbeasfollows:
∙Usedtogatherrequirementsofasystem.
∙Usedtogetanoutsideviewofasystem.
∙Identifyexternalandinternalfactorsinfluencingthesystem.
∙Showtheinteractingamongtherequirementsareactors.
b.封装子系统交互意味着什么?
为什么这样做是一件好事情?
1.子系统应当由交互图上的接口来描述
2.到子系统的消息模型化为到子系统接口的消息
3.到子系统的消息符合子系统接口的操作
4.在子系统设计中,模型化子系统中的交互
好处:
用例实现:
–较少混乱
–可以在子系统内部设计被创建之前创建(并行开发)
–更普通和更容易变化(子系统是可替代的)
并行子系统开发:
集中考虑影响子系统接口的需求
简述所需接口
模型化跨子系统边界的消息
按照每个用例的子系统接口绘制交互图
改进提供消息所需要的接口
并行开发每个子系统
第十章
a.子系统设计的目的是什么?
目标
–松藕合
–可移植性,即插即用性能
–隔离变化
–独立进展
b.在子系统设计期间应产生多少交互图?
时序图/交互图/类图
c.为什么一个子系统上的依赖关系应当在子系统接口上?
第十一章
a.类设计的目的是什么?
Thepurposeoftheclassdiagramistomodelthestaticviewofanapplication.Theclassdiagramsaretheonlydiagramswhichcanbedirectlymappedwithobjectorientedlanguagesandthuswidelyusedatthetimeofconstruction.
TheUMLdiagramslikeactivitydiagram,sequencediagramcanonlygivethesequenceflowoftheapplicationbutclassdiagramisabitdifferent.SoitisthemostpopularUMLdiagraminthecodercommunity.
Sothepurposeoftheclassdiagramcanbesummarizedas:
∙Analysisanddesignofthestaticviewofanapplication.
∙Describeresponsibilitiesofasystem.
∙Baseforcomponentanddeploymentdiagrams.
∙Forwardandreverseengineering.
b.类以什么方式进行改进?
许多而简单的类意味着每个类
–封装整个系统智能的较小部分
–更可能重用
–更容易实施
一个类应当有一个简单的良好聚焦目的。
一个类应当做一件事情并把它做好!
!
!
c.是否为每个类创建状态图?
是
d.一个状态图的主要构件是什么?
提供每个状态图的主要说明。
由迁移(定向箭头包括事件/警戒条件/操作)所连接状态(节点)的一个定向图
初始状态
–当一个对象创建时所进入的
状态
–必须的
–只能有一个初始状态
最终状态
–显示一个对象生命的结束
–可选的
–可能有多个
e.产生什么类型的关系改进?
f.关联和依赖的差异是什么?
关联关系是结构化的关系
依赖关系是非结构化的关系
关联的一个实例是一个连接
–所有连接变为关联,除非它们有全局、本地或参数可见性
–关系是环境相关的
依赖是短暂连接:
–有限的持续时间
–环境无关的关系
–一个概要关系
g.操作和属性进行什么?
操作
操作更容易理解
状态说明是正确的
提供必需的行为
正确地定义参数
消息被完全地分配操作
实施规约是正确的
名称符合标准
用例实现需要所有操作
属性
单个概念
描述性的名字
用例实现需要所有属性
第十二章
a.数据库设计的目的是什么?
将永久性设计类映射到数据模型上
向数据库分配类行为
b.一个关系型数据模型由什么组成?
–实体
–关系
c.一个对象模型的构件是什么?
–类(属性)
–关联
d.在将永久性类映射到表时,表中的每行被认为是什么?
每列相当于什么?
–每一行都被认为是一个对象
–表中的列则对应于类的永久性属性
f.什么是存储过程?
存储过程是可以在RDBMS下运行的可执行代码
存储过程有两种类型:
–过程:
由应用程序显式执行
–触发器:
在某些数据库事件发生时被隐式地调用
UML模型用途:
1.用例图:
把满足用户需求的基本功能集合起来表示的强大工具.它以每一个参与系统人员都可以理解的方式列举系统的业务需求.用例图提供一个概览,对系统提供给用户的功能进行说明.对于正在构造的新系统,用例描述系统应该做什么,对于已经构造完成的系统,用例反映了系统能完成什么功能.
2.类图:
是描述类,接口,协作及他们之间关系的图示,是静态视图的一部分,表达系统内部重要的组成结构.
3.顺序图:
用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序,重点在消息序列上,描述消息如何在对象间发送和接收.
4.活动图:
是一种表达过程机理,业务过程以及工作流的技术.它可以用来对业务过程,工作流建模,也可以对用例实现甚至是程序实现来建模.
5.状态图:
用于显示状态机,使对象达到这些状态的时间和条件,以及达到这些状态时所发生的操作.
(1)IDL编译器的作用:
定义了某类对象的特征和行为,包括服务器能在这类对象上施加的操作,生成预编程语言相关的文件.
客户桩:
提供了在客户机应用程序中使用桩类型激发时所需要的定义和其它与CORBA供应商有关的信息。
客户桩:
i.程序激发请求使用的一套例程
ii.把一个对象类型的IDL操作定义映射到激发请求时要调用的一套与编程语言相关的例程
服务器框架文件skeleton:
服务器应用程序用skeleton把客户机操作映射到服务器实现的方法上。
通常是源代码形式.
(2)IUnknown接口的作用:
i.所有组件都有一个称为IUnknown的接口(未名接口),该接口中依次给出的三个函数是:
QueryInterface,AddRef,Release.
ii.QueryInterface的作用是对组件的接口进行查询,即:
组件客户可以通过它查询该组件是否存在某一个接口(某一组功能)。
若存在某个接口,客户可以获得该接口,从而获得该接口中提供的服务。
iii.AddRef和Release通过计数器共同完成引用计数功能。
(3)类厂的作用:
i.客户可以通过类厂组件创建其它组件,类厂组件的唯一功能就是创建其它的组件.
ii.使用类厂来创建组件可以给客户提供一种能够控制组件创建过程的方法,并且在建立好一个组件之后可控制将组建装载到内存何处,或检查客户是否有权限.
(4)EJB:
中间件的理解:
(看着背)中间件位于平台和应用之间的通用服务,这些服务具有标准的程序接口和协议.针对不同的的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现.是一种独立的系统软件或服务程序,分布式应用软件借助于这种软件可以在不同的组件之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通讯.中间件是一类软件,而不是一种(一个)软件,中间件不仅实现互联,而且还可以实现应用之间的互操作,中间件是基于分布式处理的软件,最突出的特点是网络通信能力.
构造EJB的一般过程:
1.编写提供业务方法的类,bean类,需要确定bean类实现对应的接口.(编写组间接口,各种bean类)
2.编写两个接口(多数情况下):
home接口和组件接口(远程接口).
3.创建一个XML部署文件,用来告诉服务器如何管理,名字为:
ejb-jar.xml
4.把bean.接口和部署描述文件放到一个ejb-jar文件中,该文件可能不只一个bean,单部署描述文件只有一个.
5.用服务器开发商提供的工具把bean部署到服务器上.
部署描述文件:
部署描述符作用(没要求):
EJB部署描述符是EJB的重要组成部分,它是EJB的说明文件,服务器容器按照部署文件来管理EJB.它是标准的XML文件,它遵守XML和标准文档类型DTD语法规范.
EJB容器回调函数理解:
出现一个特殊时刻,bean不知道,容器调用了bean的一个容器回调方法时它才知道.回调函数好像是一个中断处理函数,系统在符合你设定的条件时自动调用.容器回调函数出自两个接口中的方法(home和sessionbean).
为此,我们要做三件事:
1.声明2.定义3.设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用.
(5)使用与实现分离体现在课程的那一个部分?
(事情?
越多越好?
)
面向对象技术.组件技术(COM,CORBA组件,client/server)
(6)结构型设计模式与类关系:
对象(1.Mediator,2.Observer,3.State,4.Adapter,7.Bridge),行为型(4.Conposite,6.Decorator,7.Proxy)。
软件构建结构,每一个设计模式的设计思想及典型的应用需要知道。
行为型:
1.中介者Mediator:
用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互.
应用:
ET++和THINKC类库都在对话框中使用类似中介者的对象作为窗口组件的中介者.
2.观察者Observer:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.
应用:
MVC中Smalltalk环境中的用户界面框架.
3.状态State:
允许一个对象在其内部状态改变时改变它的行为.
应用:
TCP链接协议.绘图编辑器框架
结构型:
1.适配器模式Adapter:
适配器模式是将一个类的接口转换成客户希望的另外一个接口。
适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
应用:
JDBC:
JDBC给出一个客户端通用的抽象接口,每一个数据库引擎的JDBC驱动类软件都是一个介于JDBC接口和各个数据库引擎API之间的适配器软件.
2.桥接模式Bridge:
桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化,减少他们之间的耦合。
应用:
ET++的window/windowPort.图像生成和显示中使用Bridge模式.
3.组合模式Composite:
组合模式将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.
应用:
XML文档解析
3.装饰模式Decorator:
装饰模式动态地给一