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)在实验过程中我有好几次出现运行错误的情况,大多问题都是出现在不注意细节,以后一定会加强练习。
201871010121-王方《面向对象程序设计(Java)》第四周学习总结的更多相关文章
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
- 20155304 2016-2017-2 《Java程序设计》第四周学习总结
20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...
- 201521123038 《Java程序设计》 第四周学习总结
201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...
- 201521123061 《Java程序设计》第四周学习总结
201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》第四周学习总结
20175204 张湲祯 2018-2019-2<Java程序设计>第四周学习总结 教材学习内容总结 -第五章子类与继承要点: -子类与父类: 1.通过使用关键字extends来定义一个类 ...
- 20175314 《Java程序设计》第四周学习总结
20175314 <Java程序设计>第四周学习总结 教材学习内容总结 每个子类只能有一个父类,而一个父类可以有多个子类.可以使用关键字extends来定义一个类的子类:class 子类名 ...
- 20155312 张竞予 2006-2007-2 《Java程序设计》第四周学习总结
20155312 2006-2007-2 <Java程序设计>第四周学习总结 课堂笔记 Ctrl+shift+T调出三个窗口,分别是"vi编写代码","jav ...
- 20165318 2017-2018-2 《Java程序设计》第四周学习总结
20165318 2017-2018-2 <Java程序设计>第四周学习总结 IDEA安装 按照娄老师Intellj IDEA 简易教程,我下载了IDEA但是由于没有注册学校邮箱,我没办法 ...
- 20172325 2016-2017-2 《Java程序设计》第四周学习总结
20172325 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 1.对类.对象.声明变量的定义和属性有了进一步的了解 2.学会如何编写一个类并运用到需要的程 ...
随机推荐
- [LeetCode] 857. Minimum Cost to Hire K Workers 雇佣K名工人的最低成本
There are N workers. The i-th worker has a quality[i] and a minimum wage expectation wage[i]. Now w ...
- Spring Cloud Gateway 结合配置中心限流
前言 上篇文章我讲过复杂的限流场景可以通过扩展RedisRateLimiter来实现自己的限流策略. 假设你领导给你安排了一个任务,具体需求如下: 针对具体的接口做限流 不同接口限流的力度可以不同 可 ...
- 可以在shell脚本中使用哪些类型的变量?
在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的.这些变量通常由大写字母组成,可以通过“set”命令查看. 用户变量由系统用户来生成和定义,变 ...
- 热情组——项目冲刺 Day5
项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...
- java包学习之JDBC
public class DemoJDBC { public static void main(String[] args) throws ClassNotFoundException, SQLExc ...
- Spring Boot Cache使用与整合
Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Caffeine.Ehcache等),但本身不直接提供缓存功能的实现.它支持注解方式使用缓存,非常方便. SpringBoot在a ...
- 用siege测试接口高并发
siege -c 255 -r 2555 "http://10.1.1.6:3001/decode POST <./api.json" -t 100s
- MySQL如何定位慢sql
MySQL如何定位慢sql MySQL"慢SQL"定位 数据库调优我个人觉得必须要明白两件事 1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢) 2.解决问题(这个没有基本的 ...
- 浅析libuv源码-node事件轮询解析(4)
这篇应该能结,简图如下. 上一篇讲到了uv__work_submit方法,接着写了. void uv__work_submit(uv_loop_t* loop, struct uv__work* w, ...
- ifame内嵌页面全屏完美展示
<body style= marginwidth= marginheight= width='100%' height='100%' allowfullscreen='true' src='ht ...