集美大学 计算机 郑如滨

教学博客

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

Java第03次实验(面向对象1-基本概念与继承基础)

Java第03次实验(面向对象1-基本概念与继承基础)

实验准备:在远程仓库编写README.md并在IDE中克隆你的远程仓库

Git 仓库根目录放一个 README.md 几乎已经成了事实上的标配,甚至是一种行业惯例。README.md 主要用来回答别人(包括未来的你自己)打开仓库时最想知道的几个问题:项目是干什么的?怎么安装怎么运行?怎么用?等等问题。而使用Markdown格式撰写该文档则是因为它纯文本、易读易写、方便 Git 追踪每一行修改,同时 GitHub、GitLab 等平台还能自动把它渲染成带标题、列表和代码块的网页,直接展示在仓库首页。正因如此,Markdown 几乎成了 README 的默认格式,也让“写一份 README.md”从个人习惯逐渐变成了行业惯例。

  1. 打开你的远程仓库,编写README.md文件,为你的仓库编写markdown格式的说明文件。查看渲染效果。

    参考文章:使用Markdown编写文档

  2. 打开你的IDE,尝试将远程代码仓库clone到你的IDEA的项目中。
  • 菜单依次点击New -> Project from Version Control,然后填入你的远程代码仓库git地址,就可以将远程代码仓库克隆到IDE的项目中。
  1. 在项目中添加一些文件,commit and push到远程仓库。
  2. 在远程仓库网页端添加一些文件,然后在IDEA中pull下来。

第1次实验:类与对象基础(构造方法、static、package)

1. PTA及使用jar文件

目标

  1. 学会使用IDE快速生成类.
  2. 学会导出jar文件,并在其它项目引用jar文件.
  3. 学会在PTA提交包含多个类文件的代码.
  4. 学会编写Javadoc、导出Javadoc.
  5. 学会提交程序填空题。

1.1 PTA题集-编程题-构造方法与toString

  1. 查看PTA题目题面
  2. 新建chpt03模块,然后新建edu.jmu.javalearn.oo包。
  3. 定义Person类、无参构造方法、有参构造方法、getter\setter;新建Main类,创建Person、输出Person。
  4. 为Person添加toString方法,学会使用String.format方法。
  5. 为Person添加有参构造方法。
  6. 尝试提交到PTA:将两个类文件合为一个文件提交。1.Main类声明为public。2.Person类去掉public。3.去掉包名。

说明:

  • 使用IDEA自动生成(Alt+Insert)构造方法、setter/getter、toString,重写前面的代码。
  • 使用Eclipse自动生成(Alt+Shift+s)构造方法、setter/getter、toString,重写前面的代码。

注1:类的属性名必须按照题目中出现的顺序定义。
注2:使用toString方法输出对象。使用IDEA自动生成toString的格式与Eclipse不同,请自行修改。

1.2 使用jar文件(调用外部jar包)

Java中的JAR文件(AI生成)


JAR(Java Archive)就像Java世界的“压缩包”,能把许多.class文件、图片、配置文件打包成一个文件。

你可以把它想象成一个便当盒:里面装好了程序运行所需的“饭菜”(代码和资源),拿到哪里都能直接“开吃”。

它主要有三个好处:

  • 方便分发:一个文件代替一堆零散文件
  • 易于运行:如果包含主类,双击或 java -jar 就能启动
  • 可复用:别人可以像搭积木一样引用你的JAR

简单说,JAR就是Java程序的“打包盒”,让代码更好带、更好跑、更好分享。


今天的实验就是让大家使用IDEA制作与使用jar文件。

需求:test模块需要使用到chpt03模块中的edu.jmu.javalearn.oo中的Person类。可以chpt03相关的.class文件打包成jar文件(chpt03.jar)。然后在test项目中导入这个jar包,才可使用。

IDEA中的操作详见:IDEA 2024将Java模块(module)打成JAR包

Eclipse中的操作如下所示

实验步骤

  1. 创建chpt03项目,然后创建相应的包edu.jmu.javalearn.oo与类文件Person.java。
  2. 右键点击项目,导出chpt03.jar文件(即,Export-Jar)。有两种导出方式:Runnable Jar与Jar。
  3. 在test项目中创建Folder,名为lib。并将chpt03.jar拷贝到该目录。
  4. 在test项目中将chpt03.jar文件加入build path
  5. 给jar包中的Person类的构造方法与其它方法编写符合规范的注释(Javadoc)。
    • 如何在本项目中快速看到这些规范注释?
    • 如何在引用该jar包的地方,查看其注释说明与源代码?(需要关联源代码)

试验中需注意的要点

  • Eclipse创建项目的时候,暂时不要使用模块系统,要选择Don't Create module-info.java。
  • 导出jar文件:右键点击项目-Export-Java-JAR file-输入导出路径与jar文件名
  • 尝试将jar文件解压,查看里面内容。实际上jar文件就是一个压缩文件。
  • 在项目中添加jar:右键点击项目-Build Path-Configure Build Path-点击Libraries标签页-点击Add JARs,然后选择对应项目中相应的jar文件。

注意:Java 9及以上增加了模块系统,操作有点不一样。点击完Libraries标签页,会有关于模块的选项,这时请点选Classpath,然后再Add Jars

思考与实践:

  1. 如果Person类未声明为public,另外一个package或另一个项目中能使用该Person类吗?
  2. 如果test模块中也新建一个Person类,想调用jar文件中的 Person 类,要怎么调用?提示:使用完全限定类名。

参考资料:

实验视频-如何导入第三方jar文件(简易版).zip
Eclipse打Jar包(详细版).zip
Eclipse下导入外部jar包的3种方式中的3.快速版的操作方式:文件夹导入式
java使用IDEA引入外部jar和导出可执行jar文件的方法

1.3 题集-编程题-构造方法与初始化块

演示:初始化块与静态初始化块的不同。

思考:

  1. 该题中,为什么要声明static属性?
  2. 初始化块什么时候执行?与构造方法相比,谁先执行?如果有一块代码,每次新建对象的时候都要执行,且该类有多个构造方法。那么这块代码应该放在哪里?
  3. 静态初始化块什么时候执行?试一试:在Person类中的main方法中,什么代码都不要写,然后执行该类,会发现什么?

1.4 程序填空

this, toString


第2次实验:继承、抽象类与多态

1.5 编程题

  1. PTA:05-覆盖
    • 1.可使用ArrayList的contains方法来判断列表中是否存在某些对象;
    • 2.Objects工具类。该类包含很多操作Object的工具方法(比较、相等性测试、判空等)。建议查询JDK文档自行学习。
  2. PTA:04-形状-继承形状
    • 1.常量:一般声明为public static final
    • 2.多态:sumAllArea(Shape[] shapes)方法。该方法放在哪里好呢?
  3. PTA:06-继承覆盖综合练习-Person、Student、Employee、Company
      1. 父类:Person;子类:Student、Employee;作为属性的类:Company.
      1. 输入碰到"null"时,给对应的属性赋值null;
      1. 调用父类equals方法:super.eqauls;
      1. List personList可存放所有Person子类对象(如Student、Employee);
      1. instanceof:对从personList中取出的对象判断实际类型。

注1:学会使用IDE的自动生成功能生成toString方法。抽象方法亦可通过快速修复自动生成。
注2:处理输入时,尽量不要将nextIntnextLine混用。如果要混用,请注意处理行尾的回车换行(可用nextLine()处理)。

其他参考资料与实验文件:

Java8-Optional与null
Java第03次实验(类与对象)文件.zip
Java第04次实验(继承与多态)文件.zip

1.6 函数题

  1. 覆盖与toString(简单):使用super调用父类构造方法?
  2. Object类型数组:因复用了系统中已有的Computer类,在IDE中代码可能出现无法解析该类。如果确认其他代码没错,直接提交即可。
  3. (选做)覆盖与equals
  4. (选座)clone:较难。

IDEA的使用

IntelliJ IDEA的基本使用
重点学会快捷键:Alt + Insert(代码生成)、Alt + Enter(快速修复)

Eclipse的使用

  • 运行: Ctrl+F11
  • quick fix:Ctrl+1
  • 快速导入相应的包: 快捷键Ctrl+Shift+o,以Scanner为例
  • 源代码相关快捷菜单:Alt+Shift+s,包含若干自动生成功能
  • 显示类中方法和属性Ctrl+o, 注释Ctrl+/, 删除整行Ctrl+d, 窗口最大化和还原Ctrl+m
  • 其他: Ctrl+c 复制,Ctrl+v 粘贴,Ctrl+x 剪切,Ctrl+z undo
  • 快速格式化代码:Ctrl+Shift+f,或者在菜单选择Source-Format

其他问题:

某个文件乱码: 右键单击文件,设置每个文件的编码,设成UTF-8或者GBK

参考资料:

Eclipse简明教程(by zhrb).zip
Eclipse视频(操作视频).zip

下次实验

第04次实验:继承、多态,抽象类与接口

posted on 2017-03-07 23:32  zhrb  阅读(2398)  评论(5)    收藏  举报