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代码的编程和理解上也有了更多的基础。

转载于:https://www.cnblogs.com/dlzyj/p/11566862.html

201871010134-周英杰《面向对象程序设计(Java)》第四周学习总结相关推荐

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

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

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

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

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

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

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

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

  5. 20165218 2017-2018-1 《Java程序设计》第四周学习总结

    20165218 2017-2018-1 <Java程序设计>第四周学习总结 教材学习内容总结 第五章 子类与继承 子类与父类 通过关键字extands定义子类 class 子类 exta ...

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

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

  7. 20155225 2006-2007-2 《Java程序设计》第四周学习总结

    20155225 2006-2007-2 <Java程序设计>第四周学习总结 教材学习内容总结 对"是一种"语法测试几次之后,总结一句:满足"是一种" ...

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

    # 20175126 2016-2017-2 <Java程序设计>第四周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲打教材代码和观看APP上的视频资源自学. - 学习内容 ...

  9. 20175227张雪莹 2018-2019-2 《Java程序设计》第四周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 一.子类和父类. 1.子类只继承父类中的protected和public访问权限的成员 ...

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

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

最新文章

  1. python操作mysql数据库实现增删改查
  2. Linux下用C获取当前系统时间
  3. 阿里云面向企业效率的云上产品全解析——云呼叫中心
  4. 《人类简史》作者:应对 AI 革命,要打造新的经济、社会和教育体系
  5. 南方电网两栖机器人_探访国内最大5G智能电网应用区:5G机器人已替代人工巡检...
  6. SpringBoot整合RabbitMQ测试
  7. python网络攻击代码_Python-python网络编程写arp攻击代码
  8. 如何在官网下载java JDK的历史版本
  9. 微软、小米争锋的物联网,会是下一个风口吗?
  10. 前端框架VUE的基础使用
  11. 手机工商银行怎么转账_手机银行如何转账?工行手机银行转账流程
  12. windows10自带的截图、录屏快捷键
  13. 工程项目成本费用明细表_这么简单?成本费用明细表这么填就对了
  14. 缓存 redis 缓存失效 分布式锁 Redisson SpringCache
  15. CodeForces 1000A Codehorses T-shirts
  16. [人工智能-深度学习-5]:神经网络基础 - 生物神经系统与神经元细胞简介
  17. 周杰伦新歌《彩虹》mp3 在线试听|下载|歌词 在线播放,周杰伦新歌《彩虹》MV
  18. stty的使用 和 RTSCTS问题
  19. Risk-V编程,实现快速排序
  20. 树的前序遍历和后序遍历

热门文章

  1. Golang后端开发学习之路
  2. 【民生】2011,骗子仍在行动
  3. 解决 PHP http_build_query() 预期得到 not 却得到 ¬ 的问题
  4. 中国石油大学计算机评估排名,中国石油大学华东学科评估结果及排名情况怎样...
  5. android自定义view(三)绘制表格和坐标系
  6. springboot整合jett导出数据(2)
  7. pthread_cond_destroy死锁卡住问题处理记录
  8. 旷视2020图像算法工程师机考题(15道选择题)
  9. 我是如何从电脑小白走上编程之路
  10. 一个人不自信有多可怕?