201871010134-周英杰《面向对象程序设计(Java)》第四周学习总结
201871010134-周英杰《面向对象程序设计(Java)》第四周学习总结
项目 | 内容 |
这个作业属于哪个课程 | https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/11552848.html |
作业的学习目标 |
1. 掌握类与对象的基础概念,理解类与对象的关系; 2. 掌握对象与对象变量的关系; 3. 掌握预定义类Date、LocalDate类的常用API; 4. 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点) 5. 掌握对象的构造方法、定义方法及使用要求;(重点); 6. 理解重载概念及用法; 掌握包的概念及用法 |
第一部分:第四章理论知识总结
4.1.面向对象程序设计概述
4.1.1.类(class)
是构造对象的模板或蓝图。简单来说类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。
4.1.2.对象
对象的三个主要特性:
行为(behavior):可以对对象施加什么操作(方法)?
状态(state):当施加哪些方法时,对象如何如何响应?
标识(identity):如何辨别具体相同行为与状态的不同对象?
4.1.3.识别类
识别类的的简单规则是在分析问题的过程中寻找名词,而方法对应着名词。
4.1.4类之间的关系
最常见的有以下三种:
a)依赖(use-a):如果一个类中的方法操作了另一个类的对象,那么这个类就依赖于另一个类。
b)聚合(has-a):类A的对象包含类B的对象。
c)继承(is-a):表示一个特定类和一个一般类之间的关系。一般来说,如果类A继承了类B,那么类A不仅继承了类B的方法和状态,而且还有属于自己的方法和状态。
4.2.使用预定义类
学过的预定义类有Math类、Stringbuilder类、String类、Scanner类等等,掌握练习预定义类API的技术方法。想要使用预定义类的方法,只需知道方法名和参数即可,无需了解它的内部实现过程。使用预定义类需要在程序开始处使用import命令导入该类所在的包路径。
4.2.1对象与对象变量
a) 对象
new Date();
构造了一个对象。对象无法直接访问,只能通过对象引用来间接访问对象。当一个对象没有任何对象变量对它进行引用时,则它将成为垃圾回收机制的处理对象。
初始化对象变量
* 用新构造的对象初始化对象变量:deadline = new Date();
* 让对象变量引用一个已存在的对象:deadline = birthday;
b)对象变量
Date deadline;
定义了一个对象变量deadline,它可以引用Date类型的对象。但是,一定要认识到:变量deadline不是一个对象,实际上也没有引用对象。此时,不能将任何 Date 方法应用于这个变量上。
可以显式地将对象变量设置为null,表明这个对象变量目前没有引用任何对象。
注:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。
在JAVA中,任何对象变量的值都是对存储在另外一个地方的一个对象的引用。new操作符的返回值也是一个引用。
注:局部变量不会自动地初始化为null,而必须通过调用new 或将它们设置为null进行初始化。如果将一个方法应用于一个值为null的对象上,那么就会产生运行错误。
4.2.2.java类库中的LocalDate类
LocalDate.now()
会构造一个新对象
更改器方法和访问器方法:
a)一个类中对实例域进行修改的方法,更改器前面加set;
b)一个类中对实例域进行访问的方法,前缀get。
4.3用户自定义类
4.4静态域与静态方法
静态域(nextID):静态域杯称为类域。
静态常量:例PI=3.14
静态方法:可以省略关键字static,需要用Employee类对象的引用调用这个方法。
工厂方法、main方法。
4.5方法参数
4.6对象构造
a)String类在Java中比较特殊,String可以使用直接复制的方式,也可以通过构造方法进行实例化,前者指产生一个实例化对象,而且此实例化对象可以重用,后者将产生两个实例化对象,其中一个是垃圾空 间,在String中比较内容是用equals方法,而“==”比较的是两个字符串的地址值。字符串的内容一旦声明则不可改变。
b)使用static声明的属性和方法可以由类名称直接调用,static属性是所有对象共享的,对可以对其进行操作。
c)如果需要限制类对象的产生,则可以将构造方法私有化。
d)对象数组的使用要分为声明数组和为数组开辟空间两步。开辟空间后数组中的每个元素的内容都是null。
4.7包
包语句 package 包名
4.8类路径
1)引入类库中 的类
import java.util.*;//导入java.util包下的所有类
果不想引入包下的类,则直接带上包名使用 java.util.Date date=new java.util.Date();
2)引入自定义包中的类
import 包名.*;//导入该包下的所有类 .* 代表所有的类 .; 代表加载应用程序当前目录下的无名包类
九.文档注释
Java中主要有3种书写注释的方式
a)// 行注释,从开始到本行结尾。
b)/* ... */ 长篇注释
c)/** ... */ 可生成文档的注释。
第二部分:实验部分
实验名称:实验三 类与对象的定义及使用
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 zyj
*/
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单元(类)测试的技巧。
运行结果:
测试程序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);
l 结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
l 编辑、编译、调试运行程序4-6、4-7(教材135);
l 结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;
实验总结:
类和对象是面向对象编程思想中的核心和基础。类是作为对象的抽象而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。类就是对一类事物或者一类对象的一个归类或者说划分。我们甚至可以说,”类“只是一个形容词,而'对象'就是这个形容词所形容的其中一个”实体对象“。当然也有例外,比如我们都知道Java里面有一个关键字 'static',大家都知道被static所修饰的变量或者方法,在使用的时候是不需要实例化对象的.只需使用类名+变量名/方法名即可。static对象/方法归属于当前类,非static对象/方法归属于当前’对象’,对象是类的一份子,当然是可以使用static对象,反过来则不行。通过对这一单元知识点的学习以及实验的操作,对java代码的编程和理解上也有了更多的基础。
201871010134-周英杰《面向对象程序设计(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.学会如何编写一个类并运用到需要的程 ...
随机推荐
- Computer-Hunters——冲刺总结
Computer-Hunters--冲刺总结 一.作业相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺总结 团队名 ...
- Intellij IDEA使用一 创建javaweb项目并配置tomcat
一.新建Java web项目 参考:https://blog.csdn.net/chengtengfei352/article/details/79211619 1.点击创建新项目 2. 3.crea ...
- 为某金融企业开发团队分享DevOps Server流水线使用经验
http://www.cnblogs.com/danzhang/ DevOps MVP 张洪君
- 【MySQL】MariaDB10.3新特性--闪回查询
MariaDB10.3新特性--闪回查询 System-Versioned表特性的引入,可以对表进行闪回.完成类似于Oracle的闪回查询. 修改已有表为System-Versioned MariaD ...
- Ubuntu16 安装 wireshark
添加源 sudo apt-add-repository ppa:wireshark-dev/stable 更新 sudo apt-get update 安装 sudo apt-get install ...
- main 函数返回值
[1]main函数 [2]main() 经典的C风格函数头,如下: main() 在C语言中,省略返回类型相当于说函数的类型为int. 但是,需要明确,C++逐步淘汰了这种用法. 另外,在C语言中,让 ...
- 深入理解react-native
欢迎转载,请支持原创,保留原文链接:http://blog.ilibrary.me http://blog.ilibrary.me/2016/12/25/react-native-internal ( ...
- Linq分批次,每组1000条
/// <summary> /// 分组插入每次插入1000 /// </summary> /// <param name="data">< ...
- js获取页面所有搜索条件
<div class="search"> 产品简码:@Html.TextBox("ProCode", "") ...
- sql server 中取前n行字段最大值问题
例子 取前三行最大ID ID from Students)AS A 这样写得到的却是整个表的最大ID值,并不是我们需要的值 要在句中加入order by ID ID from Students ord ...