本文是学习Java时所记录的学习笔记,本节包含了Java基本概念、环境搭建和UML的介绍,是从《疯狂Java讲义第四版》中第1章和第2章学习,提取了部分我觉得是重点的内容。欢迎留言、私信交流~~
文章目录
第1章 Java语言概述与开发环境搭建
名词介绍
- JDK(Java Development Kit)Java开发工具包
- JRE(Java runtime environment)Java运行环境
- J2ME→JAVA ME(控制有限存储的设备)
- J2SE→JAVA SE(标准版)
- J2EE→JAVA EE(企业版)
- Java程序的运行机制:
- 程序员编写的*.java文件→使用javac编译→编译成*.class文件→使用java解释执行→特定平台的机器码
- JVM(Java Virtual Machine)Java虚拟机
- 解释执行,不同平台不同的JVM。
- Java EE SDK(Software Development Kit)
下载和安装Java9
-
下载页面:https://www.oracle.com/technetwork/java/javase/downloads/index.html
-
安装路径不要有空格,安装后的文件目录介绍:
目录名称 | 说明
—|---
/bin|JDK的各种工具命令,javac、Java等
/conf|JDK的相关配置文件
/include|平台特定的头文件
/jomds|JDK的各种模块
/legal|JDK个模块的授权文档
/lib|JDK工具的补充JAR包
/README和COPYRIGHT|说明文档 -
设置PATH环境变量
windows流程: 右键我的计算机(我的电脑)-高级系统设置-高级标签-环境变量 新窗口中,在系统变量里找到PATH的变量名,双击修改,在末尾增加内容: ;c:\java\java-10\bin 注意不要漏了前面的“;”符号
-
编译Java程序
javac -d destdir srcFile【destdir是编译后的文件存放位置,srcFile是Java源文件位置
-
运行Java程序
java Java类名【Java类名是指不带后缀的名称】
-
CLASSPATH环境变量
JDK1.5以前的版本需要设置,1.5及之后的版本不需要设置。
-
Java源文件命名规则
如果源代码中定义了Public类,则源文件的主文件名必须与该public类的类名相同。
第2章 理解面向对象
Java语言是纯粹的面向对象的程序设计语言,面向对象的三种基本特征:继承、封装和多态。
面向对象的方式有三部分组成:
- OOA(面向对象分析object-orientedanalysis)
- OOD(面向对象设计object-oriented design)
- OOP(面向对象编程object-oriented programming)
两种主流开发方法
结构化开发方法和面向对象开发方法。
结构化开发方法
面向功能的程序设计方法,自顶向下设计方式。最小程序单元是函数。以数据流为中心构建软件的分析模型、设计模型和实现模型分为:
- Structured Analysis(结构化分析)
- Structured Desgin(结构化设计)
- Structured Program(结构化编程)
结构化必须采用的三种结构
- 顺序结构
- 选择结构
- 循环结构
面向对象开发方法
使用类、对象、继承、封装、消息等基本概念进行程序设计。最小程序单元是类。面向对象方法三个基本特征:
- 封装(Encapsulation):指将对象的实现细节隐藏起来,通过公用方法暴露该对象的功能。
- 继承(Inheritance):子类继承父类,子类直接获得父类的属性和方法。
- 多态(Polymorphism):子类对象可以直接赋给父类变量,但运行时仍然表现出子类的行为特征。
基于对象与面向对象的区别?
- 基于对象没有继承和多态的特征,例如JavaScript。
统一建模语言(UML)
UML2.0包括13种正式图形:
序号 | 英文名词 | 中文名词 |
---|---|---|
1 | activity diagram | 活动图 |
2 | class diagram | 类图 |
3 | communication diagram | 通信图 |
4 | component diagram | 组件图 |
5 | composite stucture diagram | 复合结构图 |
6 | deployment diagram | 部署图 |
7 | interactive overview diagram | 交互概观图 |
8 | object diagram | 对象图 |
9 | package diagram | 包图 |
10 | sequence diagram | 顺序图 |
11 | state machine diagram | 状态机图 |
12 | timing diagram | 定时图 |
13 | use case diagram | 用例图 |
常用UML详解
- use case diagram用例图
- 描述系统提供的系列功能,每个用例代表系统的一个功能模块。以一个椭圆形表示用例,用简单的线表示关系。需求分析阶段使用,用于描述系统实现的功能。
- class diagram类图
- 类图表示系统中包含哪些实体,各个实体如何关联。
- 类图中的类包含三个部分矩形:最上面是类的名称/中间是类的属性/下面是类的方法
- 类之间的三种基本关系:关联(包括聚合、组合)/泛化(与继承同一个概念)/依赖
- 关联:聚合(只能参与一个类)用空心菱形框指箭头,组合(可以参与多个类)用实心菱形框指箭头表示。标记数字(1\2\1…*)意思是两个类之间的比例关系,如一个人类对应两个手臂类。
- 泛化:和继承同一个概念,继承关系用带空心三角形的实线表示。
- 依赖:一个类的改动会导致另一个类的改动。使用带箭头的虚线表示。
- component diagram组件图
- 大型应用程序通常由一个或多个可部署的组件组成。
- 表现形式:用(矩形,右边有2个小矩形)表示组件,用圆圈表示接口,用位于组件边界小矩形表示port。组件依赖于某个接口使用一条带半圆的实线来表示。
- deployment diagram部署图
- 用于描述软件系统如何部署到硬件环境中,显示软件系统不同的组件在何处物理运行,以及如何通信。
- 表现形式:三维立方体来表示节点。
- 节点:各种计算资源的通用名称,主要包括处理器和设备两种类型。
- sequence diagram顺序图
- 以前叫协作图。显示用例的详细流程。描述了对象之间的交互,重点在于描述消息及其时间顺序。(类似的还有通信图,通信图没有时间概念)
- 顺序图有两个维度:垂直维度(以发生的时间顺序显示消息/调用的序列)/水平维度(消息被发送到的对象实例)
- 表现形式:顶部每个框表示实例(对象),矿中的类实例名称和类名称用冒号或者空格分割。类实例之间通信,绘制一条指向接受实例的带箭头的连线,并把消息/方法的名称放在连线上面。返回值的标注用一条带箭头的虚线指向发起类实例,将返回值标注在虚线上。
- activity diagram活动图
- 主要用于描述过程原理、业务逻辑以及工作流技术。非常类似流程图,但他的区别在于支持并发。
- 活动图和状态机图都被称为演化图。
- 活动图和状态机图的区别:活动图用于描述用例内部的活动或方法的流程。状态机图描述某一对象生命周期中需要关注的不同状态,并会详细描述刺激对象状态改变的事件,以及对象状态改变时所采取的动作。
- 演化图的5要素:状态/事件/动作/活动/条件
- 激发对象状态改变的事件通常有两种类型:内部事件(调用)/外部事件(系统边界外激发的,例如鼠标键盘)
- 表现形式:圆角矩形表示活动,带箭头的实线表示事件。
- state machine diagram状态机图
- 某个对象所处的不同状态和该类的状态转换信息。通常只对感兴趣并活动期间具有三个或更多潜伏状态的对象进行绘制状态机图。(只需要对关心各个状态的对象绘制状态机图)
- 5个表示形式:初始状态(使用实心圆绘制)/状态之间的转换(使用具有带箭头的线段来绘制)/状态(使用圆角矩形来绘制)/判断点(使用空心圆来绘制)/终止点(使用内部包含实心圆的圆来绘制)
Java的面向对象特征
-
一切都是对象
- JAVA里的概念是把一切做成对象,变成一个整体,对象的概念和真实世界里对象的概念相似。在程序员编程的时候有更大的颗粒度,方便掌握和使用。
-
类和对象
- 类是具有相似性质的对象的抽象概念。对象是类的实际个体,也称为实例。
-
类之间有两种主要的结构关系
- 一般到特殊关系(继承关系)
- 整体到部分结构关系(类里保存对象的引用)
结构化设计为什么没有面向对象好?
- 设计不够直观,与人类思维不一致。需要分解成一个一个功能。
- 适应性差,因为采用自顶向下的设计方式,改动成本较高。
相关知识
当初学习时懵逼的问题
-
p28 提高了类的内聚性,降低了对象之间的耦合性?不理解是什么意思。
- 答:内聚性也可以理解成独立性,内聚性越高则越独立,与其他类关联少,它所处理的业务也就越专一。耦合性代表不同类或者模块之间的关联性,如果耦合性越低,每个模块也就越独立。可以把程序比作机器人,机器人身上的每个部位都相当于一个类,如果他们关联性低,那么其中一部分停止工作对整体的影响也小。
-
p31 类实现接口是一种特殊的继承,用带空心三角形的虚线表示?不理解。
- java里有一种叫做接口的类,它本身不实现具体功能,只定义接口供其他类使用,其他类通过实现该接口进行具体的业务处理。例如接口的工作就是,定义店员的职责是接待顾客、收银和盘点库存。那么接口只定义了店员需要做这些事,但是不告诉店员具体怎么操作,此时如果有一个类要实现该接口,那么它必须明确接口里的概念需要怎样具体操作。
-
p32 数据表现依赖于数据模型,例如JTable和DefaultTableModel。
- JTable和DefaultTableModel是Swing编程里的类,现在依然不理解该问题。2019/3/6
-
p32 组件的接口用一条实线连接到组件边界的圆圈表示。
- 对组件和接口有所理解后,这段话就能理解。
-
p37 整体→部分结构关系,一个类里保存另一个对象的应用来实现这种组合关系。
- 意思是除了继承关系外,还可以是引用关系,而引用关系也可以叫做整体->部分结构关系。类调用另一个类的对象,就是整体->部分结构关系。
参考资料
- 《疯狂Java讲义(第4版)》 李刚