[笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象

简介: [笔记] 疯狂JAVA讲义(第3版) 第2章 理解面向对象

概述

面向对象的概念,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 类和对象

类是对一类事物的描述,是抽象的定义;

对象是实际存在的该类事物的个体,也称实例。

相关文章
|
16天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
31 1
|
18天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
29 2
|
29天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
7天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
7天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
7天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
11天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
10 2
|
16天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
16 1
|
16天前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
16 1
|
18天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
21 2
下一篇
无影云桌面