Java教程

JavaSE-03(IDEA面向对象的JavaSE项目)

本文主要是介绍JavaSE-03(IDEA面向对象的JavaSE项目),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面向对象思想概述

1. 概述

Java语言是一种面向对象的程序设计语言,而面向对象思想(OOP)是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的属性行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。它区别于面向过程思想(POP),强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

2. 面向对象与面向过程的区别

面向过程:POP: Process-Oriented Programming

  • 以函数(方法)为最小单位

  • 数据独立于函数之外

  • 以过程,步骤为主,考虑怎么做

面向对象:OOP: Object Oriented Programming

  • 以类/对象为最小单位,类包括:数据+方法

  • 以对象(谁)为主,考虑谁来做,谁能做

程序员的角色:

  • 面向过程:程序员是具体执行者

  • 面向对象:程序员是指挥者

注意:面向对象仍然包含面向过程,只不过关注点变了,关注谁来做。面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。

3. 面向对象基本特征

面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

JavaSE项目与模块操作

1. 模块概念

在 IntelliJ IDEA 中Project是最顶级的结构单元,然后就是Module,一个Project可以有多个Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分的,比如:user-core-module、user-facade-module和user-hessian-module等等,模块之间彼此可以相互依赖。通过这些Module的命名可以看出,它们都是处于同一个项目中的模块,彼此之间是有着不可分割的业务关系。因此,我们可以大致总结出:一个Project是由一个或多个Module组成。

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project;

  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系;

  • 当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。

此外, IntelliJ IDEA 的Project是一个不具备任何编码设置、构建等开发功能的概念,其主要作用就是起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在缺省情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。

2. 创建一个项目

创建一个新项目:
在这里插入图片描述
创建Java项目:
在这里插入图片描述
在这里插入图片描述
完成创建:
在这里插入图片描述

3. 创建模块

选择创建模块:
在这里插入图片描述
选择模块类型:这里选择创建Java模块:
在这里插入图片描述
给模块命名:
在这里插入图片描述

4. 删除模块

先从项目中remove:
在这里插入图片描述
在这里插入图片描述
彻底删除模块:
在这里插入图片描述

5. 模块依赖

一个模块可以理解为相当于一个独立的小项目,但是它又区别于独立的项目,因为它们同属于一个工程,而且互相之间可以相互依赖,即一个模块可以使用另一个模块的类型。

5.1. 导入整个模块依赖

例如:在class01_teacher_code02模块中需要使用class01_teacher_code01模块中的所有公共类,例如:Student类,可以通过如下操作。在Student stu = new Student();行按Alt +Enter,根据提示,点击Add dependency on module ‘class01_teacher_code01’:
在这里插入图片描述
如上操作会在class01_teacher_code02.iml文件中增加如下代码,表示依赖于class01_teacher_code01模块。此时class01_teacher_code01模块下所有公共的类在class01_teacher_code02模块下都可以使用了:
在这里插入图片描述

5.2. 导入模块部分包依赖(了解)

例如:在day18_teacher_code模块中需要使用day17_teacher_code模块中的com.drimwai.bean包中的公共类,而不是该模块下所有的公共类。因为我们面向对象的开发原则中有一个迪米特法则(Only talk to your immediate friends,翻译过来就是:只与直接的朋友通信)。那么,我们可以通过如下操作进行:

  • 单击工具栏的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iP3u68he-1631380041738)(imgs/image13.png)]打开项目设置
  • 先在day17_teacher_code模块暴露需要暴露的包:

在这里插入图片描述
注意:以下操作仅限于Java9以及以上版本,Java8不支持。

  • 在day17_teacher_code模块的src下建立module-info.java文件:
    在这里插入图片描述

  • 在module-info.java文件加如下代码:

module day17.teacher.code {
    exports com.drimwai.bean;
}
  • 添加模块依赖。例如:在day18_teacher_code模块的TestStudent类中使用day17_teacher_code模块的bean包下的Student类,按Alt + Enter,提示添加依赖的模块:
    在这里插入图片描述
    发现在day18_teacher_code模块的day18_teacher_code.iml文件增加一句代码:
    在这里插入图片描述

6. 导入模块

当想要在当前项目中导入一个已存在的模块时,可以进行如下操作。

  • 将要导入的模块:

在这里插入图片描述

  • 拷贝到项目目录中:
    在这里插入图片描述
  • 在项目的modules.xml文件中加入如下配置即可:
    在这里插入图片描述
  • 如果新导入的模块中有依赖相应的库,必须确保对应的库在项目中能找到,否则会报错:
    在这里插入图片描述
  • 如果新导入的模块对其他模块有依赖,那么被依赖的模块也得导入:
    在这里插入图片描述

7.Debug调试

7.1. 启动Debug

在所有调试中,调试一个Java程序是最简单的,主要有设置断点、启动调试、单步执行、结束调试几步。

设置断点:在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点:
在这里插入图片描述
启动调试:IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫在这里插入图片描述”)等等:
在这里插入图片描述

7.2. 单步调试工具介绍

在这里插入图片描述

在这里插入图片描述
:Step Over(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内
在这里插入图片描述:Step Into(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内

在这里插入图片描述:Force Step Into(Alt +Shift + F7):进入下一步,如果当前行断点是调用一个核心类库方法,则进入该方法体内

在这里插入图片描述:Step Out(Shift + F8):跳出当前方法体

在这里插入图片描述:Run to Cursor(Alt + F9):直接跳到下一个断点处继续调试

在这里插入图片描述:Resume Program(F9):恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上

在这里插入图片描述:Stop(Ctrl + F2):结束调试

在这里插入图片描述:View Breakpoints(Ctrl + Shift + F8):查看所有断点

在这里插入图片描述:Mute Breakpoints 使得当前代码后面所有的断点失效, 一下执行到底

7.3. 自定义调试数据视图

在这里插入图片描述
在这里插入图片描述

8. 缓存和索引清理

IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比。

在 IntelliJ IDEA 创建索引过程中即使你编辑了代码也是编译不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。

IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性再强调一次也不为过。

但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少。遇到此类问题也不用过多担心。我们可以清理缓存和索引。如下:
在这里插入图片描述
在这里插入图片描述

  • 一般建议点击 Invalidate and Restart,这样会比较干净。

  • 上图警告:清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失。所以如果你项目没有加入到版本控制,那你最好备份下你的 LocalHistory 目录。LocalHistory 目录在用户目录下,例如:C:\Users\Irene.IntelliJIdea2019.2\system。

  • 通过上面方式清除缓存、索引本质也就是去删除 C 盘下的 system 目录下的对应的文件而已,所以如果你不用上述方法也可以手动删除整个 system。当 IntelliJ IDEA 再次启动项目的时候会重新创建新的 system 目录以及对应项目缓存和索引。

9. 导出Jar

单击工具栏的在这里插入图片描述打开项目设置。
选择Artifacts(打包部署),选择添加jar。
在这里插入图片描述
给导出的jar命名,确认导出的路径

确认创建或选择已有的Manifest.MF文件。单词“manifest”的意思是“显示” 。 这个 manifest 文件定义了与扩展和包相关的数据。

说明: 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息:
在这里插入图片描述
选择Manifest.MF文件存储目录:
在这里插入图片描述
在这里插入图片描述
如果需要可以填写jar的运行入口,main所在的类的全名称:(可选)
在这里插入图片描述
选择jar要包含的.class文件的目录,即哪些模块的out目录:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编译生成jar:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看生成的jar:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三方框架和组件导入(以JUnit4框架为例)

1. Maven仓库导入

在@Test后面按Alt + 回车,选择Add ‘JUnit4’ to classpath即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加完成之后,在External Libraries中可以见到JUnit:
在这里插入图片描述
注意:如果Maven的本地仓库(例如:C:\Users\Irene.m2)中没有对应的library则需要联网从Maven的中央仓库中下载或从其他人那里拷贝对应的库。否则会报错:
在这里插入图片描述

2. 指定本地Jar目录

如果目前无法联网,也无法拷贝对应maven仓库目录,但是你有JUnit的需要的jar包,那么也可以用如下方式指定:

将JUnit框架需要用到的jar包拷贝到当前项目(或模块)的libs目录中(没有libs目录的可以手动创建):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后在项目代码中就可以使用JUnit了:
在这里插入图片描述
如果此时其他模块也想使用刚才添加的library怎么办?

例如:模块Class01想要使用刚才的JUnit的library,可以单击工具栏的
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

注意Scope:选择Complie,否则编译时,无法使用JUnit。

查看Class01模块的配置文件Class01.iml,发现多了一句配置。现在Class01模块中也可以使用JUnit了。

在这里插入图片描述


End! 感谢Drimwai的支持!!

这篇关于JavaSE-03(IDEA面向对象的JavaSE项目)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!