概述
面向对象的概念,UML统一建模语言介绍,Java的面向对象特征。
第2章 理解面向对象
Java语言是纯粹的面向对象的程序设计语言,表现为Java支持面向对象的三种基本特征:继承、封装和多态。
Java语言以对象为中心,Java程序的最小单位是类。
2.1 面向对象
2.1.1 结构化程序设计简介
按功能来分析系统需求, 主要原则可概括为:自顶向下、逐步求精、模块化等。结构化程序设计首先采用结构化分析方法对系统需求分析,然后使用结构化设计方法对系统进行概要设计、详细设计,最后采用结构化变成方法实现系统。
结构化程序设计方法主张按功能将软件细分,所以这种方法也称为面向功能的程序设计方法; 结构化程序设计的每个功能都负责对数据进行一次处理,每个功能都接受一些数据,处理完输出一些数据,这种方式成为面向数据流的处理方式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LA10wS9r-1588291502787)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291116099.png)]
结构化程序设计存在两个局限性:
设计不够直观;适应性差,可扩展性不强。
2.1.2 程序的三种基本结构
顺序、选择、循环
2.1.3 面向对象程序设计简介
基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。它从现实世界中客观存在的事物出发来构造系统,并在系统构造中尽可能运用人类的思维方式,强调直接以显示世界中的事物为中心来思考。
采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可生成系统的多个对象,对象可表示现实的各种事物。
面向过程与面向对象:
对于中猪八戒吃西瓜这件事,
面向过程中,以函数为中心,会这样表达:吃(猪八戒,西瓜)
面向对象,以对象为中心,会这样表达: 猪八戒.吃(西瓜);
2.1.4 面向对象的基本特征
封装、继承和多态。
封装(Encapsulation):将对象的实现细节隐藏起来,然后用一些公开方法暴露对象的功能
继承(Inheritance):实现软件复用的重要手段,子类继承父类后,直接获得父类的属性和方法。
多态(Polymorphism):子类对象可以直接赋值给父类变量,运行时仍表现出子类的行为特征。这意味着,同一个类型的对象在执行同一个方法时,可能表现多种行为特征。
2.2 UML 统一建模语言 介绍
面向对象软件开发需要经过OOA(分析),OOD(设计),OOP(编程)三个阶段。
UML是一种用于描述、记录软件分析、设计的符号表示法。
UML一共包含13种图形。最常用的包括用例图、类图、组件图、部署图、顺序图、活动图和状态机图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqT0Zb76-1588291502789)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291129733.png)]
2.2.1 用例图
系统功能的描述。
每个用例代表系统的一个功能模块。用例图的主要目的是以一种可视化的方式理解系统的需求功能,用例图对系统的实现不做说明,仅仅是系统功能的描述。
用例图包括用例(椭圆)、角色(Actor,与系统交互的其他实体,用人形符号表示)、角色与用例之间的关系(以简单的线段来表示),以及系统内用例之间的关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HE2BWIsQ-1588291502792)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291135932.png)]
用例图主要在需求分析阶段,主要用于描述系统实现的功能。
2.2.2 类图
类图表示系统中应该包含哪些实体,各实体之间如何联系;
换句话说,它显示了系统的静态结构,类图可用于表示逻辑类。
类在类图上使用包含三个部分的矩形来描述,最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0of39iFv-1588291502797)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291141978.png)]
类图除了可以表示实体的静态内部结构之外,还可以表示实体之间的相互联系。类之间有三种基本关系:
关联(包括聚合、组合)、泛化(继承)、依赖
1.关联
事物之间的联系,
关联使用一条实线表示,带箭头的实线表示单向关联。
关联关系包含两种特例:聚合和组合,他们都有部分和整体的关系,但认为组合比聚合更加严格。
某个实体聚合成一个实体时,还可以是另一个实体的部分。但某个实体组合成另一个实体时,不能是另一个实体的部分。( 聚合使用带空心菱形框的实线表示,组合使用带实心菱形框的实线表示。)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uh8dBfXw-1588291502802)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291146945.png)]
泛化
泛化与继承是同一个概念,都是指子类是一种特殊的父类,类与类之间的继承关系是非常普遍的,继承关系使用带空心三角形的实线表示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cIyAVBmV-1588291502804)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291152819.png)]
还有一种特殊的继承:实现接口,用空心三角形的虚线表示。
3.依赖
如果一个类的改动会影响另一个类的改动,则称这两个类之间存在依赖。 依赖关系用带箭头的虚线表示,箭头指向被依赖的实体。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5OYZltL-1588291502805)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291158958.png)]
2.2.3 组件图
组件图提供系统的物理视图,显示系统中的软件对其他软件组件的依赖关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzQW8BUO-1588291502806)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291165946.png)]
2.2.4 部署图
显示软件系统不同的组件将在何处物理运行,以及它们将如何彼此通信。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXtRE9je-1588291502807)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291170839.png)]
2.2.5 顺序图
显示具体用例的详细流程。
顺序图有两个维度:垂直维度,以发生的时间顺序显示消息/调用序列;水平维度,显示消息被发送到的对象实例。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uh940PmY-1588291502811)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291187129.png)]
2.2.6 活动图
描述过程原理、业务逻辑以及工作流技术。类似于传统的流程图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uu5NONRB-1588291502815)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291208480.png)]
2.2.7 状态机图
表示某个对象所处的不同状态和该类的状态转换信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmlfjwfZ-1588291502816)(C:\Users\LF\AppData\Roaming\Typora\typora-user-images\1588291215018.png)]
2.3 Java的面向对象特征
2.3.1 一切都是对象
Java中,除了8个基本数据类型之外,一切都是对象。
2.3.2 类和对象
类是对一类事物的描述,是抽象的定义;
对象是实际存在的该类事物的个体,也称实例。
fZ-1588291502816)]
2.3 Java的面向对象特征
2.3.1 一切都是对象
Java中,除了8个基本数据类型之外,一切都是对象。
2.3.2 类和对象
类是对一类事物的描述,是抽象的定义;
对象是实际存在的该类事物的个体,也称实例。