201871010121-王方《面向对象程序设计(Java)》第四周学习总结
项目 |
内容 |
这个作业属于哪个课程 |
https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
https://www.cnblogs.com/nwnu-daizh/p/11552848.html |
作业的学习目标 |
|
第一部分 第四章基础知识
(一)类与对象的基础概念
- 什么叫类?
类是构造对象的模板和蓝图,类是一种抽象的数据类型(类是对对象的抽象)。
类之间的关系:
依赖:如果一个类的方法操纵另一个类的对象,就说一个类依赖于另外一个类。
聚合:聚合关系意味着类A的对象包含类B的对象。
继承:通过扩展一个类来建立另外一个类的过程。
2.什么是对象?
对象,指的是在内存上一段有意义的区域,称作为一个对象。对象是对客观事物的抽象在C中,具有特定长度的类型,可以称作为对象类型,例如函数不具有特定长度,所以不是对象类型。
对象的三个主要特征:
行为:可以对对象施加哪些操作或方法?
状态:当施加方法时对象会如何回应?
标识:如何辨别具有相同行为与状态的不同对象?
3.类与对象的关系是什么?
它们的关系是,对象是类的实例,类是对象的模板。对象是通过new className产生的,用来调用类的方法;类的构造方法。由类构造对象的过程称为创建类的 实例。
- 使用预定义类:
在Java中已经接触的类:scanner类,string类,main类,Math类。例如Math类在程序中可以使用Math.random,而且 只需要知道方法名和参数就行,不需要了解它的具体实现过程。
4.对象与对象变量
(1)要想使用对象,就必须先构造对象,并制定其初始状态,然后对对象应运方法。使用构造器构造新实例。构造器拿是一种特殊的方法,用来构造并初始化对象。
(2)构造器的名字应与类名相同。
(3)想要构造一个对象,要在构造器前面加上new操作符,例如构造一个Date对象为: new Date() 这个表达式构造了一个新的对象。
(4)通常希望构造的对象可以多次构造。
(5)一个对象变量并没有实际包含一个对象,而仅仅应用一个对象。任何对象变量的值都是对存储在另一个地方的一个对象的引用。
5.用户自定义类:
(1)类的定义包括声明和类体,而类体又包括实体域定义和方法定义;
(2)域是指我们常说的字段,或者说是属性。包括实例域和局部变量;
(3)实例的隐藏性:实例域域局部变量的名字相同时,实例域的名字被隐藏。
6.静态域域静态方法:
(1) 静态域:属于类不属于任何独立的对象。
(2) 静态常量:在Java中比较常用的静态常量是System.out。
(3) 静态方法:静态方法是一种不能对对象试试操作的方法。可以认为静态方法是没有this参数的方法。
(4) Main方法:不需要使用对象调用静态方法。Main方法不对任何对象进行操作。静态的main方法将执行并创建程序所需要的对象。
7.方法参数:
Java程序设计语言总是采用按值调用,也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。
Swap方法的参数X和Y被初始化为两个对象引用的拷贝。
8.对象构造
(1)重载:如果多个方法有相同的名字,不同的参数,便产生了重载。编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选相应的方法。如果编译器找不到相应的参数,就会产生编译错误。
9.包:Java允许使用包将类组织起来。标准的Java包具有一个层次结构。使用包的小狐妖原因是确保类名的唯一性。嵌套的包间没有任何的联系性。
(1)类的导入:第一种方式是在每个类名之前添加完整的包名。(可以使用import语句导入特定的类或者整个包)
(2)可以导入一个包中特定的类。
(3)Import语句不仅可以导入类,还增加了导入静态方法和静态域的功能。
(4)将类放入包中
(5)包不是封闭的实体。
(6)类的路径必须与包名匹配。
(7)注释的插入 a)包 b)共有类与接口 c)共有的和受保护的构造器的方法 d)共有的和受保护的域
(8)类注释必须放在import语句之后,类定义之前。
10.类设计技巧
(1) 一定要保证数据私有
(2) 一定要对数据初始化
(3) 不要在类中使用过多的基本类型
(4) 不是所有的域都需要独立的域访问器和域更改器
(5) 将职责过多的类进行分解
(6) 类名和方法名要能够体现出他们的职责
(7) 优先使用不可变的类
第二部分 实验部分
实验三 类与对象的定义和使用
1.实验的目的与要求
(1) 熟悉PTA平台线上测试环境;
(2) 理解用户自定义类的定义;
(3) 掌握对象的声明;
(4) 学会使用构造函数初始化对象;
(5) 使用类属性与方法的使用掌握使用;
(6) 掌握package和import语句的用途。
2.实验的步骤与内容
实验1 采用个人账号登录https://pintia.cn/,使用绑定码620781加入PTA平台NWNU-2019CST1教学班(西北师范大学 计算机科学与工程学院 2018级计算机科学与技术),完成《2019秋季西北师范大学面向对象程序设计程序设计能力测试1》,测试时间50分钟。
实验1.1
公民身份证号码按照GB11643—1999《公民身份证号码》国家标准编制,由18位数字组成:前6位为行政区划分代码,第7位至14位为出生日期码,第15位至17位为顺序码,第18位为校验码。从键盘输入1个身份证号,将身份证号的年月日抽取出来,按年-月-日格式输出。注意:输入使用Scanner类的nextLine()方法,以免出错。
输入样例:
34080019810819327X
输出样例:
1981-08-19
实验截图如下:
实验2.2
studentfile.txt文件内容是某班同学的学号与姓名,利用此文件编制一个程序,将studentfile.txt文件的信息读入到内存,并提供两类查询功能:(1)输入姓名查询学号;(2)输入学号查询姓名。要求程序具有友好人机交互界面。
编程建议:
(1)从文件中读入学生信息,可以编写如下函数:
public static void StudentsFromFile(String fileName))
(2)输入姓名查找学生学号,可以编写如下函数:
public static String findStudent(String name)
(3)输入学号查找学生姓名,可以编写如下函数:
public static String findStudent(String ID)
运行截图如下 用泛性列表
用对象数组
实验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成绩
截图如下 emplomee.java
EmployeeText.java
按一下表头输出信息
姓名 性别 java成绩
测试程序2:
l 编辑、编译、调试运行程序4-3(教材116);
l 结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
l 理解Java单元(类)测试的技巧。
测试程序3:
l 编辑、编译、调试运行程序4-4(教材121);
l 结合程序运行结果,理解程序代码,掌握Java方法参数的用法,在相关代码后添加注释;
测试程序4:
l 编辑、编译、调试运行程序4-5(教材129);
l 结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
l 编辑、编译、调试运行程序4-6、4-7(教材135);
l 结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后加注释;
实验总结
(1)通过这次实验我们在很大程度上了解了类与对象的概念以及相互关系。经过老师细致的分析,我们也比较了Java跟C语言的区别和联系,也强化了我们对C语言知识的理解。
(2)我们还学习了用户自定义与使用预定义,学习了对象与对象变量的知识,不过可能是刚开始学习偶很多细节的知识还需要我们去经过大量的实验好好研究。
(3)在实验过程中我有好几次出现运行错误的情况,大多问题都是出现在不注意细节,以后一定会加强练习。