对象(object)
对象是指一组属性以及这组属性上的专用操作的封装体
属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改
操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务
封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。简而言之,对象的属性和操作结合为一体,构成一个独立的实体,对外屏蔽其内部细节即为封装
类(class)
类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)
类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为
继承(inheritance)
继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法
如果一个子类只有唯一一个父类,这种继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承
消息(message)
对象之间只能通过消息进行通信(不允许一个对象直接使用另一个对象的属性),以实现对象直接的动态联系。一个对象通过向另一个对象发送消息来请求其服务。**一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。**消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法完成所需的操作
多态性(polymorphism)
多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果
动态绑定(dynamic binding)
动态绑定是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来
传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前(即编译时)进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行
动态绑定是一种在运行时确定被执行代码的技术
面向对象分析的一般步骤如下:
视图:为了完整的描述一个系统,往往需要描述系统的许多方面,用视图可以表示被建模型系统的各个方面,即从不同目的出发可以为系统建立多个模型,这些模型都描述同一个系统,只是描述的角度不同。UML2.0把视图分成四个主题域:结构化域、动态域、物理域和模型管理域。
图:图是用来表达一个视图的内容的,通常,一个视图由多张图组成。
模型元素:包括事物和事物之间的联系。(事物、关系)
类图展示了系统中类的静态结构,即类与类之间的相互联系。类之间有多种联系方式,如关联(相互连接)、依赖(一个类依赖或使用另一个类)、泛化(一个类是另一个类的特殊情况)等。可以把若干个相关的类包装在一起作为一个单元(包),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中
对象图是类图的实例,它展示了系统执行在某一时间点上的一个可能的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它还显示了对象间的实例链接(link)关系
用况图展示了各类外部执行者与系统所提供的用况之间的连接。一个用况是系统所提供的一个功能(也可以说是系统提供的某一特定用法)的描述,执行者是指那些可能使用这些用况的人或外部系统,执行者与用况的连接表示该执行者使用了那个用况。用况图给出了用户所感受到的系统行为,但不描述系统如何实现该功能。
用况图的主要元素有:参与者、用例、关系(关联、包含include、扩展Extend、泛化)
展示了类的分解,给出了组成一个结构化类元的相互连接的部分、端口和连接器。
协作图展示了协作的定义,是一种合成的结构图。协作是为了完成某一目的而一起工作的一组对象间的上下文关系。
状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态以及哪些事件将导致状态的改变。一个事件可以是另一个对象向它发送的一条消息,或者是满足了某些条件。状态的改变称为迁移(transition)。一个状态迁移还可以有与之相关的动作,该动作指出状态迁移时应做什么
并不是所有的类都要画状态机图,有些类有一些意义明确的状态,并且其行为受不同的状态所影响和改变,这些类才需要画状态机图
活动图展示了连续的活动流。活动图通常用来描述完成一个操作所需要的活动。当然它还能用于描述其它活动流,如描述用况。活动图由动作状态组成,它包含完成一个动作的活动的规约(即规格说明)。当一个动作完成时,将离开该动作状态。活动图中的动作部分还可包括消息发送和接收的规约
顺序图展示了几个对象之间的动态交互关系。它主要是用来显示对象之间发送消息的顺序,它还显示了对象之间的交互,即系统执行的某一特定点所发生的事
通信图描述了交互作用中的角色,显示了有协作关系的角色之间的交互。通信图明确地显示元素之间的协作关系,而不显示作为独立维的时间,消息的顺序和并发线程必须由顺序号确定
部署图展示了运行时处理结点和在结点上生存的制品的配置。结点是运行时的计算资源,制品是物理实体,如构件、文件
部署图中显示部署在结点上的制品和它们之间的关系,以及结点之间的连接和通信方式
包图是由包和它们间的关系组成的结构图
模型是在某一视点给定的精度上对系统的完整描述,一个系统可以从不同的视点(如分析模型、设计模型)存在多个模型。一个模型可看作一个特定类型的包,通常仅显示包就足够了(不必显示包内部的细节)
用况建模是用于描述一个系统应该做什么的建模技术,用况建模不仅用于新系统的需求获取,还可用于已有系统的升级。用况模型用用况图来描述;
用况图展示了各类外部执行者与系统所提供的用况之间的连接。一个用况是系统所提供的一个功能(也可以说是系统提供的某一特定用法)的描述;
——描述动作者和使用案例之间的关系
——用于表现系统根据需求所提供的功能
(1)定义系统
(2)确定执行者
(3)识别用例
(4)确定用例图中的关系并绘制用例图
(5)描述用例(用文字描述)
(6)确认模型
小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计
用况图中的矩形框代表系统,系统的用况画在矩形框内,代表系统之外的执行者画在矩形框外。
1.用况名称:新增书籍信息(UC01)
2.简要说明:录入新购书籍信息,并自动存储建档。
3.事件流:
……
3.事件流:
3.1 基本事件流
1)图书管理员向系统发出“新增书籍信息”请求;
2)系统要求图书管理员选择要新增的书籍是计算机类还
是非计算机类;
3)图书管理员做出选择后,显示相应界面,让图书管理
员输入信息,并自动根据书号规则生成书号;
4)图书管理员输入书籍的相关信息,包括:书名、作者、
出版社、ISBN号、开本、页数、定价、是否有CDROM;
5)系统确认输入的信息中书名未有重名;
6)系统将所输入的信息存储建档。
3.2 扩展事件流
5a)如果输入的书名有重名现象,则显示出重名
的书籍,并要求图书管理选择修改书名或取消输入;
5a1)图书管理员选择取消输入,则结束用例,不做存储建档工作;
5a2)图书管理员选择修改书名后,转到5)
4.非功能需求
5.前置条件:用户进入图书管理系统。
6.后置条件:完成新书信息的存储建档。
7.扩展点:无
8.优先级:最高(满意度 5,不满意度5)
编写要点