Java完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。
类:代表了客观世界中具有某种特征的一类事物,这类事物往往有一些内部的数据状态。
成员变量(状态数据) + 方法(行为) = 类定义
面向对象的方式:OOA(面向对象分析)OOD(面向对象设计)OOP(面向对象编程)三部分,OOA和OOD的结构需要使用一种方式来描述并记录,采用的是UML(统一建模语言),来描述并记录OOA和OOD的结果。
程序的三种基本结构:顺序结构,选择结构,循环结构(when;do while),虽然Java是面向对象的,但Java的方法里则是一种结构化的流程。
面向对象三种基本特征:继承封装和多态
封装:将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能
继承:面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法
多态:子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。
补充:
抽象:忽略一个主题中与当前目标无关的那些方面,以便充分的注意与当前目标有关的方面,更关心核心的部分
类:具有共同属性、共同方法的一类事物。类是对象的抽象;对象是类的实例。最小程序单位是类。类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能,提高了内聚性,降低了耦合性。
UML(统一建模语言)
OOA对目标系统进行分析,建立分析模型,并将之文档化 。
OOD用面向对象的思想对OOA的结果进行细化,得出设计模型。
OOA和OOD的分析,设计结果用统一的符号来描述,交流并记录,UML就是用于描述,记录OOA和OOD结果的符号表示法
从图中可以看出,UML2.0包括13种正式图形:活动图、类图、通信图、组件图、复合结构图、部署图、交互概观图、对象图、包图、顺序图、状态机图、定时图、用例图。
最常用的UML图包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图等。
用例图:用来描述系统提供的系列功能,而每个用例则代表系统的一个功能模块。用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的需求功能,用例图对系统的实现不做任何说明,仅仅是系统功能的描述。
类图:类图是最古老、功能最丰富、使用范围最广泛的UML图。类图表示系统中应该包含哪些实体,各实体之间如何关联;换句话说,它显示了系统的静态结构,类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事务种类。
类之间有三种基本关系:
关联(包含聚合、组合)
泛化(与继承同一个概念)
依赖
具体说明:
关联(包含聚合、组合)
关联具有方向性:单向关联-带箭头;双向关联-不带箭头
聚合和组合:通常认为组合比聚合更为严格。比如,聚合:同一个学生可以同时属于多个社团;组合:同一个胳膊只能属于一个人。
泛化(与继承同一个概念)
继承用带空心三角形的实线表示;指向父
接口用带空心三角形的虚线表示。指向接口
依赖
如果一个类的改动会导致另一个类的改动,则称两个类之间存在依赖。
依赖使用带箭头的虚线表示。
通常而言,依赖是单向的。
依赖的常见可能原因如下:
改动的类将消息发给另一个类。
改动的类以另一个类作为数据部分。
改动的类以另一个类作为操作参数。
组件图
组件图提供的是系统的物理视图,它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。
组件图通常包含组件,接口和port等图元。uml使用带(类似于插头)的符号的矩形来表示组件,使用圆圈代表接口,使用位于组件边界的小矩形代表port。
组件的接口表示它能对外提供的服务,这个接口通常有两种表现形式:
用一条实线连接到组件边界的圆圈表示。
使用位于组件内部的圆圈表示。
组件依赖于某个接口使用一条带半圆的实现来表示。
部署图
部署图用于描述软件系统如何部署到硬件环境中,他的用途是显示软件系统不同的组件将在何处物理运行,以及他们将如何彼此通信。
部署图中的符号包括组件图中所使用的符号元素,另外还增加了节点的概念:
节点是各种计算资源的通用名称,主要包括处理器和设备两种类型,两者的区别是处理器能够执行程序的硬件构件(如计算机主机),而设备是一种不具备计算能力的硬件构件(如打印机)。
顺序图
顺序图显示具体用例的详细流程,并且显示流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。
顺序图描述了对象之间的交互(顺序图和通信图都被称为交互图),重点在于描述消息及其顺序。
顺序图有两个维度:
①垂直维度:以发生的时间顺序显示消息/调用的序列;
②水平维度:显示消息被发送到的对象实例
注:冒号前是实例,冒号后是类;
箭头表示一个类实例像另一个类实例发送一条消息;
对于某些特别重要的消息,可以绘制一条带箭头的指向发起类实例的虚线,将返回值标注在虚线上。
绘制顺序图主要是帮助开发者对某个用例的内部执行清晰化,当需要考察某个用例内部若干对象行为时,应使用顺序图,顺序图擅长表现对象之间的协作顺序,不擅长表现行为的精确定义。
一般来说,通信图可以描述的内容顺序图都可以描述,但顺序图比通信图多了时间的概念。
活动图
活动图和状态机图都被称为演化图,其区别和联系如下:
①活动图:用于描述用例内部的活动或方法的流程,如果除去活动图中的并行活动描述,它就变成流程图。
②状态机图:描述某一对象生命周期中需要关注的不同状态,并会详细描述刺激对象状态的事件,以及对象状态改变时所采取的动作。
演化图五要素:
①状态②事件③动作④活动⑤条件
激发状态改变的事件:①内部事件(一个对象的方法调用另一个对象的方法)②外部事件(鼠标键盘动作)
状态机图
状态机图表示某个对象所处的不同状态和该类的状态转换信息。
实际上,通常只对“感兴趣的”对象绘制状态图。
状态机图的符号集包含5个基本元素:
①初始状态:使用实心圆来绘制
②状态之间的转换:使用具有带箭头的线段来绘制
③状态:使用圆角矩形来绘制
④判断点:使用空心圆来绘制
⑤一个或者多个终止点:使用内部包含实心圆的圆来绘制