从头学习JAVA(二)

来源:互联网 发布:mac dare you日常吗 编辑:程序博客网 时间:2024/05/20 06:53

理解面向对象

JAVA语言是纯粹的面向对象的程序设计语言,这主要表现为JAVA完全支持面向对象的三个特征:继承,封装,多态。JAVA程序的最小程序单位是类。

面向对象的方式实际上由OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象编程)三个部分有机组成,其中,OOA和OOD的结构需要使用一种方式来描述并记录,目前业界统一采用UML(统一建模语言)来描述并记录OOA和OOD的结果。


结构化程序设计:结构化程序设计方法主张按功能分析系统需求,其主要原则可概括为自顶向下,逐步求精,模块化等。结构化程序设计首先采用结构化分析(Structured Analysis,SA)方法对系统进行需求分析,然后使用结构化设计(Structured Design,SD)方法对系统进行概要设计,详细设计,最后采用结构化编程(Structured Program,SP)方法来实现系统。使用SA,SD,SP的方式可以较好地保证软件系统的开发进度和质量。

结构化程序设计也被称为面向功能的程序设计方法。结构化程序设计的最小程序单位是函数。

结构化设计有两个局限性:
1.设计不够直观,与人类习惯思维不一致,采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个个功能,每个功能用于完成一定的数据处理。
2.适应性差,可拓展性不强。由于结构化设计采用自顶向下的设计方式,所以当用户的需求发生改变,或需要修改现有的实现方式时,都需要自顶向下地修改模块结构,这种方式的维护成本相当高。

程序设计的三种基本结构:顺序结构,选择结构,循环结构。任何简单或者复杂的算法都可以由这三种基本结构组合而成。

面向对象程序设计:面向对象是一种更优秀的程序设计方法,她的基本思想是使用类,对象,继承,封装,消息等基本概念来进行程序设计。

Field(状态数据) + 方法(行为) = 类定义。

在面向过程中的程序世界里,一切以函数为中心,函数最大,因此这件事会用如下语句来表达:

吃(猪八戒,西瓜);

在面向对象的程序世界里,一切以类为中心,类最大,因此这件事会用如下语句来表达:

猪八戒.吃(西瓜);

面向对象的语句更接近自然语言的语法:主语,谓语,宾语一目了然,十分直观,更容易被理解。

面向对象的三个特征:
封装:将对象的实现细节隐藏起来,然后通过一些公共方法来暴露该对象的功能;
继承:是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;
多态:子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征;

面向对象还支持如下几个功能:
1.对象是面向对象方法中最基本的概念,它的基本特点有:标示唯一性,分类性,多态性,封装性,模块独立性好。
2.类是具有共同属性,共同方法的一类事物。类是对象的抽象;对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用的方法来暴露该类对外提供的功能,从而提高类的内聚性,降低了对象之间的耦合性。
3.对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间互相通信的机制。
4.在面向对象方法中,类之间共享属性和操作的机制称为继承。继承拥有传递性。

JavaScript是“基于对象”的,它使用一些封装好的对象,调用对象的方法,设置对象的属性。但是无法让开发者派生新的类。基于对象和面向对象都使用了封装,判断是否“面向对象”,通过可以根据是否使用了继承和多态。


UML

UML 一共包括13种正式图形:活动图,类图,通信图,组件图,复合机构图,部署图,交互概念图,对象图,包图,顺序图,状态机图,定时图,用例图。
常用的UML图包括用例图,类图,组件图,部署图,顺序图,活动图和状态机图。

用例图用于描述系统提供的系列功能,而每一个用例则代表系统的一个功能模块。用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的需求功能,用例图对系统的实现不做任何说明,仅仅是系统功能呢的描述。

用例图包括用例(以一个椭圆表示,用例的名称放在椭圆中心或下面,角色(Actor,与系统交互的其他实体,以一个人形符号表示),角色和用例之间的关系(以简单的线段来表示),以及系统内用例之间的关系。用例图一般表示出用例的组织结构关系,要么是整个系统的全部用例,要么是完成具体功能的一组用例。
这里写图片描述

类图是最古老,功能最丰富,使用最广泛的UML图。类图表示系统中应该包含哪些实体,各实体之间如何关联;换句话说,它显示了系统的静态结构,类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类。类在类图上使用包含三个部分的矩形来描述,最上面的部分显示类的名称,中间部分包含类的属性,最下面部分包含类的方法。

这里写图片描述

类之间有三种基本关系:关联(包括聚合,组合),泛化(与继承同一概念),依赖
关联:关联具有一定的方向性,如果仅能从一个类单方向地访问另一个类,则被称为单向关联;如果两个类可以互相访问对象,则被称为双向关联。一个对象能范文关联对象的数量被称为多重性。

很多时候,关联和属性很像,它们的区别在于:类里的某个属性引用到另外一个实体时,则变成关联。

关联关系包括两种特例:聚合,组合。它们都有部分和整体的关系,但通常认为组合比聚合更加严格。当某个实体聚合变成另一个实体时,该实体还可以同时是另一个实体的部分,例如学生既可以是篮球俱乐部成员,也可以是书法俱乐部成员。当某个实体组合成另一个实体时,该实体则不能同时是一个实体的部分。聚合使用带空心的菱形框的实线表示,组合则使用带有实心的菱形框实线表示。

这里写图片描述

泛化::与继承是同一概念,都是指子类是特殊的父类,继承关系使用带有空心三角形的实线表示。
这里写图片描述

依赖:如果一个类的改动会导致另一个类的改动,则两个类之间存在依赖关系。依赖关系使用带箭头的虚线表示,其中箭头指向被依赖的实体。
这里写图片描述

依赖的常见可能原因有:
1.改动的类将消息发给另一个类;
2.改动的类以另一个类作为数据部分;
3.改动的类以另一个类作为操作参数;

通常依赖是单向的。

组件图:对于现代的大型应用程序而言,通常不只是单独一个类或者单独一组类所能完成的,通常会由一个或多个可部署的组件组成。对JAVA程序而言,可复用的组件通常打包成一个JAR,WAR等文件;对于C/C++应用而言,可复用的组件通常是一个函数库,或者是一个DLL(动态链接库)文件。
组件图提供系统的物理视图,它的用途是显示系统中的软件对其他软件组件(例如函数库)的依赖关系。组件图可以在一个非常高的层次时显示,仅显示系统中粗粒度的组件,也可以在组件包层次时显示。
组件图通常包含组件,接口和port等图元,使用圆圈来代表接口,使用谓语组件边界上的小矩形代表prot。
这里写图片描述

部署图:对物理运行情况进行建模,所以系统的生产人员就可以很好地利用这种图来安装,部署软件系统。
部署图中的符号包括组件图中所使用的符号元素,另外还增加了节点的概念:节点是各种计算资源的通用名称,主要包括处理器和设备两种类型,两者的区别是处理器能够执行程序的硬件构件(如计算机主机),而设备是一种不具备计算能力的硬件构件(如打印机)。UML使用三位立方体来表示节点,节点的名称位于立方体的顶部。
这里写图片描述

顺序图:显示具体用例(或者用例一部分)的详细流程,并且显示流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用,顺序图描述了对象之间的交互(顺序图和通信图都被称为交互图),重点在于描述消息及其时间顺序。
顺序图有两个维度:垂直维度,以发生的时间顺序显示消息/调用的序列;水平维度,显示消息被发送到的对象实例。顺序图的关键在于对象之间的消息,对象之间的消息传递就是所谓的消息发送,消息发送通常表现为对象调用另一个对象的方法或方法的返回值,发送者和接受者之间的箭头表示消息。

这里写图片描述

活动图:活动图和状态机图都被称为演化图。其区别和联系如下。
活动图:用于描述用例内部的活动或方法的流程,如果除去活动图中的并行活动描述,它就变成流程图。
状态机图:描述某一对象什么周期中需要关注的不同状态,并会详细描述刺激对象状态改变的事件,以及对象状态改变时所采取的动作。

演化图的5要素:
1.状态:状态是对象响应事件前后的不同面貌,状态是某个时间段对象所保持的稳定态,目前的软件计算都是基于稳定态的,对象的稳定态是对象的固有特征,一个对象的状态一般是有限的。有限状态的对象是容易计算的,对象的状态越多,对象的状态迁移越复杂,对象状态可以想象成对象演化过程中的快照。
2.事件:来自对象外界的刺激,通常的形式是消息的传递,只是相对对象而言发生了事件。事件是对象状态发生改变的原动力。
3.动作:动作是对象针对所发生事件所做的处理,实际时通常表现为某个方法被执行。
4.活动:活动是动作激发的后续系统行为。
5.条件:条件指事件发生所需要具备的条件。
对于激发对象状态改变的事件,通常需要如下两种类型。
1.内部事件:从系统内部激发的事件,一个对象的方法(动作)调用(通过事件激活)另一个对象的方法(动作)。
2.外部事件:从系统边界外激发的事件,例如用户鼠标,键盘动作。

活动图主要用于描述过程原理,业务逻辑,以及工作流技术。活动图非常类似于传统的流程图,它也使用圆角矩形表示活动,使用带箭头的实现表示事件;区别是活动图支持并发。

这里写图片描述

状态机图:表示某个对象所处的不同状态和该类的状态转换信息。
状态机图的符号集包括5个基本元素:
1.初始状态,使用实心圆来绘制
2.状态之间的转换,使用具有带箭头的线段来绘制
3.状态,使用圆角矩形来绘制
4.判断点,使用空心圆来绘制
5.一个或者多个终止点,使用内部包含实心圆的圆来绘制。

这里写图片描述

**JAVA的八个基本数据类型:
chat,bollean,int,short,long,byte,float,double**

0 0
原创粉丝点击