201871010111-刘佳华《面向对象程序设计(java)》第四周学习总结

实验时间 2019-9-20

第一部分:总结第四章理论知识

4.1:类与对象的概念。

类:类是构造对象的模板。由类构造对象的过程称为创建类的实例。

对象:想要使用oop,一定要清楚对象的三个特性:

1)对象的行为:对象的行为使用可调用的方法定义的。

·2)对象的状态:每个对象都保存着描述当前特征的信息。

3)对象标识:如何辨明具有相同行为的相似性。

4.2:类之间的关系。

常见关系有:依赖(“uses-a”)、聚合("has-a'')、继承("is-a")。

4.3:使用预定义类。

已学过的预定义类如math,Math,String,Scanner等。

1)对象与对象变量。

在Java语言中,使用构造器构造新实例。构造器是类中一个特殊的方法,生成并初始化对象,它的方法名与类名相同。

想要构造一个Data对象(定义在java.util中),需要在构造器前加上new操作符:new Data()

若定义为Data deadline;则该语句错误。

可将一个对象变量设置为null,表示该对象变量未引用任何变量,如deadlin=null。

4.4:更改器与访问器。

更改器:修改实例域。前缀set,更改当前类中的属性。

访问器:更改实例域。前缀get。

4.4:用户自定义类;

4.5:静态域与静态方法;

4.6:方法参数 ;对象构造

4.7:包

4.8:类路径

4.9:文档注释

4.10:类设计技巧

第二部分:实验部分

实验名称:实验三 类与对象的定义及使用

1.  实验目的:

(1) 熟悉PTA平台线上测试环境;

(2) 理解用户自定义类的定义;

(3) 掌握对象的声明;

(4) 学会使用构造函数初始化对象;

(5) 使用类属性与方法的使用掌握使用;

(6) 掌握package和import语句的用途。

2.实验内容和步骤

实验1 采用个人账号登录https://pintia.cn/,使用绑定码620781加入PTA平台NWNU-2019CST1教学班(西北师范大学 计算机科学与工程学院 2018级计算机科学与技术),完成《2019秋季西北师范大学面向对象程序设计程序设计能力测试1》,测试时间50分钟。

实验2 导入第4章示例程序并测试。

测试程序1:

l 编辑、编译、调试运行程序4-2(教材104页);

l 结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;

l 尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。

l 参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:

姓名    性别 java成绩

课本案例编译运行结果如下:

  • 根据课本程序改编程序代码如下:
import java.util.Scanner;
/**
* This program tests the Student class.
* time 2019 9 21
* @author liu jiahua
*/
public class Main { public static void main(String[] args)
{
Student []stu=new Student[2];
System.out.println("please input name,sex,score");
Scanner in =new Scanner(System.in); for (int i=0;i<stu.length;i++){
stu[i]=new Student(in.next(),in.next(),in.nextFloat());
}
System.out.println("name"+" "+"sex"+" "+" "+"javascore"); for (Student o : stu)
System.out.println(o.getName() +" "+o.getSex()+" "+o.getJavaScore());
in.close();
} }
class Student{
private String name;
private String sex;
private float javascore; public Student(String n, String s, float m)
{
name = n;
sex = s;
javascore =m;
} public String getName(){
return name;
}
public String getSex(){
return sex;
}
public float getJavaScore(){
return javascore;
}
}

运行代码结果如下:

测试程序2:

l 编辑、编译、调试运行程序4-3(教材116);

l 结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;

l 理解Java单元(类)测试的技巧。

运行结果如下:

静态域的使用方法:

如果将域定义为static,每个类中只有这样的一个域。而每一个对象对于所有的实例域却都有自己的一个拷贝。每个雇员都有一个自己的id域,但这个类的所有实例将共享一个nextId域。但是,只有一个静态域nextid,即使没有一个雇员对象,静态域nextId也存在。它属于类,而不属于任何独立的对象。

静态方法的用法:

静态方法是一种不能想对象实施操作的方法。在下面两种情况下可以使用静态方法:

(1)一个方法不予要访问对象状态,其所需参数都是通过显示参数提供(例如:Math.pow)

(2)一个方法只需要访问类的静态域(例如:Employee.getNextId)

测试程序3:

l 编辑、编译、调试运行程序4-4(教材121);

l 结合程序运行结果,理解程序代码,掌握Java方法参数的用法,在相关代码后添加注释;

/**
* This program demonstrates parameter passing in Java.
* @version 1.01 2018-04-10
* @author Cay Horstmann
*/
public class ParamTest
{
public static void main(String[] args)
{
//该方法不能修改数值参数
System.out.println("Testing tripleValue:");
double percent = 10;
System.out.println("Before: percent=" + percent);
tripleValue(percent);
System.out.println("After: percent=" + percent); //该方法可以改变对象参数的状态
System.out.println("\nTesting tripleSalary:");
var harry = new Employee("Harry", 50000);
System.out.println("Before: salary=" + harry.getSalary());
tripleSalary(harry);
System.out.println("After: salary=" + harry.getSalary()); //该方法可以将新对象附加到对象参数
System.out.println("\nTesting swap:");
var a = new Employee("Alice", 70000);
var b = new Employee("Bob", 60000);
System.out.println("Before: a=" + a.getName());
System.out.println("Before: b=" + b.getName());
swap(a, b);
System.out.println("After: a=" + a.getName());
System.out.println("After: b=" + b.getName());
} public static void tripleValue(double x) // doesn't work
{
x = 3 * x;
System.out.println("End of method: x=" + x);
} public static void tripleSalary(Employee x) // works
{
x.raiseSalary(200);
System.out.println("End of method: salary=" + x.getSalary());
} public static void swap(Employee x, Employee y)
{
Employee temp = x;
x = y;
y = temp;
System.out.println("End of method: x=" + x.getName());
System.out.println("End of method: y=" + y.getName());
}
} class Employee // simplified Employee class
{
private String name;
private double salary; public Employee(String n, double s)
{
name = n;
salary = s;
} public String getName()
{
return name;
} public double getSalary()
{
return salary;
} public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
}

运行结果如下:

测试程序4:

l 编辑、编译、调试运行程序4-5(教材129);

结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。

对程序的理解:

在这个程序当中,用了Java的第三种初始化数据域的方法,称为初始化块。在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。在这个程序的25行开始,无论使用哪个构造器类对象,Id域都在对象初始化块中被初始化。首先运行初始化块,然后才运行构造器的主题部分。

在这个程序清单中展示了很多特性:重载构造器、用this(...)调用另一个构造器、无参数构造器、对象初始化块、静态初始化块、实例域初始化等。

测试程序5:

l 编辑、编译、调试运行程序4-6、4-7(教材135);

l 结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;

1)实例4-6

包的放法:

运行结果:

程序分析:

在这个程序当中介绍我们介绍了怎么使用类的导入,可以使用import语句导入一个特定的类火整个包,Import语句是一种应用包含在保重的类的简明描述,一旦使用了import语句,在使用类时,就不必写出包的全名了。而且在实验当中也有将类放入包中,就必须将包的名字放在源文件的开头,包中定义类的代码之前。如果没有在源文件中放置package语句,这个源文件中的类就被放置在一个默认包中。默认包是一个没有名字的包。再次之前,我们定义的所有类都在默认包中。

4. 实验总结:

  通过这个周的学习,我明白了用户自定义类是如何去定义的。在第三章我已经学习了如何设计复杂应用程序所需要的各种主力类,同是,这些类没有main方法,却有自己的实例域和实例方法。在学习了类之后,有学习了静态域和静态方法的用法,在这一届的学习过程当中,觉得颇有收获,觉得比较简单易懂,了解了静态域、静态常量、静态方法、工厂方法和main方法的概念,并通过实例程序去真正理解了这些概念。接着学习了对象构造,在这一节主要就学习了参数化,初始化块。最后又学习了包,虽然在之前已经解除了包这个概念,但在这一节有学习了新的概念,比如说类的导入、静态导入、将类放入包中。这些都是自己在自主学习,希望在以后老师的讲解过程中有更大的进步。

201871010111-刘佳华《面向对象程序设计(java)》第四周学习总结的更多相关文章

  1. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  2. 《Java程序设计》第四周学习总结

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

  3. 20155304 2016-2017-2 《Java程序设计》第四周学习总结

    20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...

  4. 201521123038 《Java程序设计》 第四周学习总结

    201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...

  5. 201521123061 《Java程序设计》第四周学习总结

    201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...

  6. 20175204 张湲祯 2018-2019-2《Java程序设计》第四周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第四周学习总结 教材学习内容总结 -第五章子类与继承要点: -子类与父类: 1.通过使用关键字extends来定义一个类 ...

  7. 20175314 《Java程序设计》第四周学习总结

    20175314 <Java程序设计>第四周学习总结 教材学习内容总结 每个子类只能有一个父类,而一个父类可以有多个子类.可以使用关键字extends来定义一个类的子类:class 子类名 ...

  8. 20155312 张竞予 2006-2007-2 《Java程序设计》第四周学习总结

    20155312 2006-2007-2 <Java程序设计>第四周学习总结 课堂笔记 Ctrl+shift+T调出三个窗口,分别是"vi编写代码","jav ...

  9. 20165318 2017-2018-2 《Java程序设计》第四周学习总结

    20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法 ...

  10. 20172325 2016-2017-2 《Java程序设计》第四周学习总结

    20172325 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 1.对类.对象.声明变量的定义和属性有了进一步的了解 2.学会如何编写一个类并运用到需要的程 ...

随机推荐

  1. oracle 循环插入数据

    参考链接:oracle 行转列 pivot函数基本用法 --建表 --drop table SalesList; create table SalesList( keHu varchar2(20), ...

  2. day67_10_11

    一.路由跳转 在vue中,路由条状有很多种. 其中有点击事件触发的路由跳转: this.$router.push('/course'); 和通过名字跳转的: this.$router.push({na ...

  3. 8.Go-Reader,Writer和ioutil

    8.1.Reader (1)输入流 流是应用程序和外部资源进行数据交互的纽带 流分为输入流和输出流,输入和输出都是相对于程序,把外部数据传入程序中叫做输入流,反之叫做输出流 在Go语言标准库中io包下 ...

  4. Node.js 获取本机Mac地址

    首先我们要先加载一个包用于获取mac地址 npm install getmac 加载完毕会在node_modules文件夹下发现一个getmac文件夹,我们把对应的路径加载到程序中 源码如下: var ...

  5. Note | PyTorch1.2 + CUDA10.0 + cuDNN7.6 + Anaconda3配置

    目标: 在2080Ti GPU上,运行PyTorch1.2 GPU版本. 经过确认,PyTorch1.2可以搭配CUDA10.0,而CUDA10.0搭配cuDNN7.6(官网下载页面可以直接看到). ...

  6. 第09组 Beta版本演示

    组长博客 本组(组名)所有成员 短学号 姓名 2236 王耀鑫(组长) 2210 陈超颖 2209 陈湘怡 2228 许培荣 2204 滕佳 2205 何佳琳 2237 沈梓耀 2233 陈志荣 22 ...

  7. [NewLife.XCode]实体工厂(拦截处理实体操作)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  8. python创建文件时去掉非法字符

    1.函数作用 windows系统中文件名不能包含 \ / : * ? " < > |想要创建必须过滤掉这些字符 2.函数实现 import re def filename_fil ...

  9. 多维度对比5款主流分布式MQ消息队列,妈妈再也不担心我的技术选型了

    1.引言 对于即时通讯网来说,所有的技术文章和资料都在围绕即时通讯这个技术方向进行整理和分享,这一次也不例外.对于即时通讯系统(包括IM.消息推送系统等)来说,MQ消息中件间是非常常见的基础软件,但市 ...

  10. mysql-5.7.23-winx64 解压版详细安装教程

    1.下载解压版: 2.配置环境变量 (1)新建MYSQL_HOME变量,并配置值为: C:\softwaretool\mysql-5.7.23-winx64 计算机→属性→高级系统设置→高级→环境变量 ...