201871010105-曹玉中《面向对象程序设计(java)》第四周学习总结

项目 内容
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/
这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11435127.html
作业学习目标
  1. 掌握类与对象的基础概念,理解类与对象的关系;
  2. 掌握对象与对象变量的关系;
  3. 掌握预定义类Date、LocalDate类的常用API;
  4. 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点)
  5. 掌握对象的构造方法、定义方法及使用要求;(重点);
  6. 理解重载概念及用法;
  7. 掌握包的概念及用法;
     

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

第四章:对象与类

4.1:类与对象的概念。

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

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

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

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

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

4.2:类之间的关系。

常见关系有:依赖、聚合、继承。

4.3:使用预定义类。

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

1)对象与对象变量。

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

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

Data deadline;该语句错误。

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

4.4:更改器与访问器。

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

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

第二部分:实验部分。

1、实验目的与要求

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

(2) 掌握对象的声明;

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

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

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

2、实验内容和步骤

实验1 采用个人账号登录https://pintia.cn/,使用绑定码620781加入PTA平台NWNU-2019CST1教学班(西北师范大学 计算机科学与工程学院 2018级计算机科学与技术),

完成《2019秋季西北师范大学面向对象程序设计程序设计能力测试1》,测试时间50分钟。

任务一

代码如下:

package shiyansan;
import java.util.Scanner;
public class identify{public static void main(String[] args) {Scanner s=new Scanner(System.in);System.out.println(" ");String id=s.nextLine();String year=id.substring(6,10);String month=id.substring(10,12);String day=id.substring(12,14);System.out.println( " "+year+"-"+month+"-"+day);}}

  运行如下:

任务二

代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;public class Main1 {// private static Student students[];private static ArrayList<Student> list;public static void main(String[] args) {list = new ArrayList<>();Scanner in = new Scanner(System.in);try {readFile("studentfile.txt");System.out.println("请选择操作,1按姓名,2按学号,3退出");int i;while ((i = in.nextInt()) != 3) {switch (i) {case 1:System.out.println("请输入姓名");String name = in.next();Student student = findStudentByName(name);if (student == null) {System.out.println("没找到");} else {System.out.println(student.toString());}System.out.println("请选择操作,1按姓名,2按学号,3退出");break;case 2:System.out.println("请输入学号");String id = in.next();Student student1 = findStudentById(id);if (student1 == null) {System.out.println("没找到");} else {System.out.println(student1.toString());}System.out.println("请选择操作,1按姓名,2按学号,3退出");break;default:System.out.println("输入有误");System.out.println("请选择操作,1按姓名,2按学号,3退出");break;}}} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}finally {in.close();}}public static void readFile(String path) throws IOException {FileReader reader = new FileReader(path);BufferedReader br = new BufferedReader(reader);String result;while ((result = br.readLine()) != null) {Student student = new Student();student.setName(result.substring(13));student.setID(result.substring(0,12));list.add(student);}br.close();}public static Student findStudentByName(String name) {for (Student student : list) {if (student.getName().equals(name)) {return student;}}return null;}public static Student findStudentById(String Id) {for (Student student : list) {if (student.getID().equals(Id)) {return student;}}return null;}
}class Student {private String name;private String ID;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getID() {return ID;}public void setID(String iD) {ID = iD;}@Overridepublic String toString() {// TODO 自动生成的方法存根return "姓名是:" + name + "学号是:" + ID;}
}

  运行如下:

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

测试程序1:

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

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

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

代码如下:

import java.time.*;/*** This program tests the Employee class.* @version 1.13 2018-04-10* @author Cay Horstmann*/
public class EmployeeTest
{public static void main(String[] args){// fill the staff array with three Employee objectsEmployee[] staff = new Employee[3];staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);// raise everyone's salary by 5%for (Employee e : staff)e.raiseSalary(5);// print out information about all Employee objectsfor (Employee e : staff)System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay=" + e.getHireDay());}
}class Employee
{private String name;private double salary;private LocalDate hireDay;public Employee(String n, double s, int year, int month, int day){name = n;salary = s;hireDay = LocalDate.of(year, month, day);}public String getName(){return name;}public double getSalary(){return salary;}public LocalDate getHireDay(){return hireDay;}public void raiseSalary(double byPercent){double raise = salary * byPercent / 100;salary += raise;}
}

  

运行如下:

(2)Employee.java

/*** @version 1.10 1999-11-13* @author Cay Horstmann*/public class Employee
{private String name;private double salary;public native void raiseSalary(double byPercent);public Employee(String n, double s){name = n;salary = s;}public void print(){System.out.println(name + " " + salary);}static{System.loadLibrary("Employee");}
}

  

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

并按以下表头输出学生信息表:

姓名    性别 java成绩

代码如下:

import java.util.Scanner;/*** This program tests the Employee class.* @version 1.13 2018-04-10* @author Cay Horstmann*/
public class EmployeeTest
{public static void main(String[] args){// fill the staff array with three Employee objectsStudent[] staff = new Student[4];System.out.println("请输入学生姓名、性别、Java成绩");Scanner in = new Scanner(System.in); for(int i=0;i<staff.length;i++) {staff[i]=new Student(in.next(),in.next(),in.nextInt());}System.out.println("name"+"sex"+"javascore");for (Student e: staff)System.out.println(e.getName()+e.getSex()+e.getjavaScore());}}class Student{private String name;private String sex;private int javascore;public Student(String n, String s, int j){name = n;sex = s;javascore =j;}public String getName(){return name;}public String getSex(){return sex;}public int getjavaScore(){return javascore;}}

  运行结果:

测试程序2:

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

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

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

代码如下:

/**/*** This program demonstrates static methods.* @version 1.02 2008-04-10* @author Cay Horstmann*/public class StaticTest{public static void main(String[] args){//用三个Employee对象填充staff数组Employee[] staff = new Employee[3];staff[0] = new Employee("Tom", 40000);staff[1] = new Employee("Dick", 60000);staff[2] = new Employee("Harry", 65000);//打印出员工反对的信息for (Employee e : staff){e.setId();System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary="+ e.getSalary());}int n = Employee.getNextId(); // calls static methodSystem.out.println("Next available id=" + n);}}class Employee{private static int nextId = 1;private String name;private double salary;private int id;public Employee(String n, double s){name = n;salary = s;id = 0;}public String getName(){return name;}public double getSalary(){return salary;}public int getId(){return id;}public void setId(){id = nextId; //将此ID设置为下一个可用IDnextId++;}public static int getNextId(){return nextId; //返回static域}public static void main(String[] args) // unit test{Employee e = new Employee("Harry", 50000);System.out.println(e.getName() + " " + e.getSalary());}}

  运行结果:

测试程序3:

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

结合程序运行结果,理解程序代码,掌握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:");Employee 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:");Employee a = new Employee("Alice", 70000);Employee 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 {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用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。

代码如下:

import java.util.*;/*** This program demonstrates object construction.*@version 1.02 2018-04-10* @author Cay Horstmann*/
public class ConstructorTest
{public static void main(String[] args){//用单个Employee对象填充staff数组Employee[] staff = new Employee[3];staff[0] = new Employee("Harry", 40000);staff[1] = new Employee(60000);staff[2] = new Employee();//打印出员工反对信息for (Employee e : staff)System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary="+ e.getSalary());}
}class Employee
{private static int nextId;private int id;private String name = ""; //实例字段初始化private double salary;// static initialization blockstatic{Random generator = new Random();//从0-9999随机分配下一ID的地址nextId = generator.nextInt(10000);}{id = nextId;nextId++;}public Employee(String n, double s){name = n;salary = s;}public Employee(double s){//调用雇员构造函数this("Employee #" + nextId, s);}//默认构造函数public Employee(){// salary not explicitly set--initialized to 0// id initialized in initialization block}public String getName(){return name;}public double getSalary(){return salary;}public int getId(){return id;}
}

  运行如下:

测试程序5:

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

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

4-6

代码如下:

import com.horstmann.corejava.*;
// the Employee class is defined in that packageimport static java.lang.System.*;/*** This program demonstrates the use of packages.* @version 1.11 2004-02-19* @author Cay Horstmann*/
public class PackageTest
{public static void main(String[] args){// because of the import statement, we don't have to use // com.horstmann.corejava.Employee herevar harry = new Employee("Harry Hacker", 50000, 1989, 10, 1);harry.raiseSalary(5);// because of the static import statement, we don't have to use System.out hereout.println("name=" + harry.getName() + ",salary=" + harry.getSalary());}
}

  运行如下:

4-7

代码如下:

package com.horstmann.corejava;//这个文件中的类是这个包的一部分import java.time.*;//导入语句位于PACKAGE语句之后/***@version 1.11 2015-05-08* @author Cay Horstmann*/public class Employee{private String name;private double salary;private LocalDate hireDay;public Employee(String name, double salary, int year, int month, int day){this.name = name;this.salary = salary;hireDay = LocalDate.of(year, month, day);}public String getName(){return name;}public double getSalary(){return salary;}public LocalDate getHireDay(){return hireDay;}public void raiseSalary(double byPercent){double raise = salary * byPercent / 100;salary += raise;}}

  运行如下:

第三部分:实验总结

本次实验首先是编译运行程序了解文件的输入输出,在实验三的基础上,进一步使用student类编写了一个Java程序。通过本次实验,我进一步了解到对象与类的定义以及各自的特点。

在之前的学习中,已经了解了几种预定义类,在这周的学习中,掌握了预定义类的使用。在实验过程中,还是遇到了很多问题,比如误将float型相加,而float型加在一起要用强制转换

类型,这是因为基础知识学习不够的原因。而对于新学习的知识,有很多地方还是不明白,做实验时,也是在同学和学长的帮助下,最终才完成了实验。在以后的学习过程中,自己一

一定要多练习写代码,提高自己的学习能力。

转载于:https://www.cnblogs.com/nwnucyz/p/11565639.html

201871010105-曹玉中《面向对象程序设计(java)》第四周学习总结相关推荐

  1. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  2. 【Java】《面向对象程序设计——Java语言》Castle代码修改整理

    前言 最近闲来无事刷刷MOOC,找到以前看的浙大翁凯老师的<面向对象程序设计--Java语言>课程,重新过一遍仍觉受益颇深. 其中有一个Castle的例子,思路很Nice但代码很烂,翁凯老 ...

  3. 计算机JAVA相关说课稿_面向对象程序设计-java说课稿

    面向对象程序设计-java说课稿 面向对象程序设计-JAVA说课稿,计算机系 毕景霞,目录,一.说教材 二.说教学目标 三.说重点难点 四.说教学方法 五.说教学内容 六.教学效果及总结,(一)教材的 ...

  4. java面向对象期末考试试题_《面向对象程序设计——java》期末考试试题2008a卷.doc...

    <面向对象程序设计--java>期末考试试题2008a卷.doc 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 第 7 页 共 ...

  5. 面向对象程序设计——Java语言 第3周编程题 查找里程(10分)

    面向对象程序设计--Java语言 第3周编程题 查找里程(10分) 题目内容 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. ...

  6. java程序设计清考_面向对象程序设计(Java)-题库

    <面向对象程序设计(Java)-题库>由会员分享,可在线阅读,更多相关<面向对象程序设计(Java)-题库(33页珍藏版)>请在金锄头文库上搜索. 1.面向对象程序设计 (ja ...

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

    20155334 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章:继承与多态 继承:面对对象中,子类继承父类,避免重复的行为定义 extends表示会 ...

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

    20155303 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承避免多个类间重复定义共同行为,使用关键字exten ...

  9. 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为. 面向对象中,子类继承父类,就是把程序中相同的代 ...

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

    Week04<Java程序设计>第四周学习总结 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:static关键字,final关键字,静态初始块,抽象类,继承, ...

最新文章

  1. Ivanti 洞察职场新趋势:71% 的员工宁愿放弃升职也要选择随处工作
  2. 【Azure Services Platform Step by Step-第14篇】使用Azure版的ASP.NET Application Providers
  3. vue骨架屏、时间选择器、轮播图。。你想要的这里全都有
  4. LeetCode 1167. 连接棒材的最低费用(优先队列+贪心)
  5. 记录执行hivesql时报org.apache.hadoop.hdfs.BlockMissingException:Could not obtain block错误
  6. 树莓派、debian 下安装 phantomjs casperjs
  7. ArcGIS Maritime 发布海图切片服务详解
  8. Java如何替换switch顺序执行_java 多重switch中break的用法以及switch的查找顺序
  9. linux 查看网卡以及开启网卡
  10. win10 保护计算机 密码,在win10中这样设置用户密码过期时间,可以保证电脑安全...
  11. TwinCAT 3 轴程序
  12. Unity3D启动报错的解决方案
  13. Extraneous non-emits event listeners (xxxXxx) were passed to component but could not be automaticall
  14. ppt画图画不下——调整ppt页面的大小
  15. 常用jquery方法 总结
  16. BZOJ 1127: [POI2008]KUP 最大子矩阵
  17. APP设计之启动页和广告页
  18. ORACLE 考试的流程
  19. php聊天室发送表情,聊天室之表情发送
  20. 关于Field Exit 整理的一点资料

热门文章

  1. JUnit version 3.8 or later expected
  2. 一个查询错误:A query was run and no Result Maps were found for the Mapped Statement ‘com.kuang.dao.BookMap
  3. 1T和12T单片机的区别
  4. 1602液晶显示摄氏度
  5. 采购年度计划书应该怎么写?(范文)
  6. oracle启用amm,使用ASMM和AMM时设置shared_pool
  7. matlab 图像去白边,Matlab生成的图片如何去掉白边?
  8. 妻子决定你未来事业的高度
  9. 各个级别的教师资格证分别可以教什么阶段
  10. 无监督学习的简单统一