王颖奇 201771010129《面向对象程序设计(java)》第四周学习总结
实验四 类与对象的定义及使用
实验时间 2018-9-20
1、目的与要求
学习目标
- 掌握类与对象的基础概念,理解类与对象的关系;
- 掌握对象与对象变量的关系;
- 掌握预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API;
- 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点)
- 掌握对象的构造方法、定义方法及使用要求;(重点)
- 理解重载概念及用法;
- 掌握包的概念及用法;
- 了解文档注释技术;
A. 理论学习部分目的与要求
(1)面向对象程序设计(OOP)的概论
a.类
类是构造对象的模板或蓝图;
b.对象
要想使用OOP,一定要清楚对象的三个特征:
①对象的行为②对象的状态③对象标识
c.识别类
d.类之间的关系
(2)使用预定义类
对象与对象标识;
Java类库中的LocalDate类;
更改器方法与访问器方法;
(3)用户自定义类;
(4)静态域与静态方法;
(5)方法参数
(6)对象构造
(7)包
(8)类路径
(9)文档注释
(10)类设计技巧
B. 实验学习部分目的与要求
(1) 理解用户自定义类的定义;
(2) 掌握对象的声明;
(3) 学会使用构造函数初始化对象;
(4) 使用类属性与方法的使用掌握使用;
(5) 掌握package和import语句的用途。
2、实验内容和步骤
实验1 测试以下程序,掌握文件输入输出程序设计技术(文件输入输出,教材61-62)。
|
import java.io.*; import java.util.*; public class FileWriteReadTest { public static void main(String[] args) throws IOException{ //写入文件演示 PrintWriter out = new PrintWriter("myfile.txt"); out.println("姓名 高数 Java 数据结构 平均成绩 总成绩"); out.println("张三 20 30 40 0 0"); out.println("李四 50 60 70 0 0"); out.close();//输出完毕,需要close //读入文件演示 Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in int number = 1;//行号 System.out.println(in.nextLine()); while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出 String line = in.nextLine();//读出myfile.txt的下一行 System.out.print("第"+(++number)+"行的内容: "); Scanner linescanner = new Scanner(line);//行内容建立扫描器 linescanner.useDelimiter(" ");//使用空格作为分隔符 String name = linescanner.next(); String math = linescanner.next(); String java = linescanner.next(); String ds = linescanner.next(); String avg = linescanner.next(); String total = linescanner.next(); System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total); } in.close();//读入完毕,最后需要对其进行close。 } } |
实验结果:

实验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成绩
改编的程序:
package shiyan2; import java.util.Scanner; /**
* This program tests the Student class.
* time 2018 9 20
* @author Wang yingqi
*/
public class shiyan1
{
public static void main(String[] args)
{
// 填入四个学生的信息
int x=;
Employee[] staff = new Employee[x];
System.out.println("请输入学生:");
Scanner in = new Scanner(System.in);
for(int i=;i<staff.length;i++) {
staff[i]=new Employee(in.next(),in.next(),in.nextInt());
}
System.out.println("name"+" "+"sex"+" "+" "+"javascore"); // 输出四个学生的信息
for (Employee e : staff)
System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore());
}
} class Employee
{
private String name;
private String sex;
private int javascore; public Employee(String n, String s, int m)
{
name = n;
sex = s;
javascore =m;
} public String getName()
{
return name;
} public String getSex()
{
return sex;
} public int getJavaScore()
{
return javascore;
} }
运行结果:

测试程序2:
l 编辑、编译、调试运行程序4-3(教材116);
l 结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
理解Java单元(类)测试的技巧。
实验结果:

测试程序3:
l 编辑、编译、调试运行程序4-4(教材121);
l 结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;
实验结果:

测试程序4:
l 编辑、编译、调试运行程序4-5(教材129);
l 结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
实验结果:

测试程序5:
l 编辑、编译、调试运行程序4-6、4-7(教材135);
l 结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;
包的放法:

实验结果:

实验3 编写长方形类Rectangle与圆形类Circle,其中Rectangle类设置私有属性:width,length;Circle类设置私有属性radius。编写Rectangle类的带参构造函数Rectangle(int width,int length), Circle类的带参构造函数Circle(int radius),编写两个类的toString方法(Eclipse可自动生成)。上述2个类均定义以下方法:
求周长的方法public int getPerimeter()
求面积的方法public int getArea()
在main方法中完成以下任务:
(1) 输入1行长与宽,创建一个Rectangle对象;
(2) 输入1行半径,创建一个Circle对象;
(3) 将两个对象的周长加总输出,将两个对象的面积加总输出。
创立Test类和tuxing类:

Test类的代码:
package tuxing; import java.math.BigDecimal;
import java.util.Scanner; class Test {
public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("请输入长方形的长:");
int length = sc.nextInt();
System.out.println("请输入长方形的宽:");
int width = sc.nextInt();
System.out.print("请输入圆的半径-->");
float radius=sc.nextFloat(); tuxing x = new tuxing(); x.setLength(length);
x.setWidth(width);
x.setRadius(radius); System.out.println("矩形的周长是:"+x.getPerimeter());
System.out.println("矩形的面积是:"+x.getArea());
System.out.println("圆的周长为-->"+x.getPerimeter(radius)+"\n"+"圆的面积为-->"+x.getArea(radius)); BigDecimal bd1 = new BigDecimal(x.getPerimeter(radius));
BigDecimal bd2 = new BigDecimal(x.getArea(radius));
BigDecimal bd3 = new BigDecimal(x.getPerimeter());
BigDecimal bd4 = new BigDecimal(x.getArea());
BigDecimal bd5 = bd1.add(bd3);
BigDecimal bd6 = bd2.add(bd4);
bd5= bd5.setScale(, BigDecimal.ROUND_HALF_UP);
bd6= bd6.setScale(, BigDecimal.ROUND_HALF_UP);
System.out.println("周长和:"+bd5+"\n"+"面积和"+bd6);
}
}
tuxing类的代码:
package tuxing; import java.util.Scanner;
import java.math.BigDecimal; class tuxing{
private int length;
private int width;
float radius; public tuxing(){} public void setLength(int length) {
this.length = length;
} public void setWidth(int width) {
this.width = width;
} public int getPerimeter() {
return (length + width) * ;
} public int getArea() {
return length * width;
} public void setRadius(float radius) {
BigDecimal bd = new BigDecimal(radius);
radius = bd.setScale(, BigDecimal.ROUND_HALF_UP).floatValue();
this.radius = radius;
} public float getPerimeter(float radius){
BigDecimal bd = new BigDecimal(radius);
radius = bd.setScale(, BigDecimal.ROUND_HALF_UP).floatValue();
return (float) (radius**3.14);
} public float getArea(float radius){
BigDecimal bd = new BigDecimal(radius);
radius = bd.setScale(, BigDecimal.ROUND_HALF_UP).floatValue();
return (float) (radius*radius*3.14);
}
}
运行结果:

注:为了解决float和double型的精确度问题(如图所示),需要使用BigDecimal的方法,使关于圆的周长和面积输出能够以正确的精度和数值输出。

总结:
通过这个周的学习,我明白了面向对象程序设计(OOP)的概论,认识了什么是类,什么是对象,并了解了对象的三个特征:对象的行为,对象的状态,对象标识;另外,我初步的掌握了如何使用预定义类,学会了如何构造并初始化对象。通过课上学习Java类库中的LocalDate类,以及CalendarTest的程序实验代码,加深了我对类的认识。在课下的学习中,我略微自学了用户自定义类的内容,并测试运行了示例程序,初步学习完了后面的内容。在学习过程中,我理解了学习Java必须要学会自己读懂程序,并在不断的练习中转化成自己的知识。
王颖奇 201771010129《面向对象程序设计(java)》第四周学习总结的更多相关文章
- 王颖奇 201771010129 《面向对象程序设计(java)》第二周学习总结
<面向对象程序设计(java)>第二周学习总结 王颖奇 201771010129 第一部分:实验目的与要求 ①理论部分目的与要求 (1)基本知识(2)数据类型(3)变量(4)运算符(5)类 ...
- 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但是由于没有注册学校邮箱,我没办法 ...
随机推荐
- redis集群搭建-3.0/4.0版本
1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第 ...
- Spring Boot 集成 Spring Security 入门案例教程
前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot&l ...
- 详解PHP反序列化中的字符逃逸
首发先知社区,https://xz.aliyun.com/t/6718/ PHP 反序列化字符逃逸 下述所有测试均在 php 7.1.13 nts 下完成 先说几个特性,PHP 在反序列化时,对类中不 ...
- 不使用tomcat,仅适用javaSE手写服务器--模拟登陆
1.搭建框架 我们只是简单模拟,框架简单分三个模块 a,服务器端server包 b,servlet,根据不同的请求url,利用反射生产对应的servlet c,IO工具包,用来关闭IO流 d,编写we ...
- 前端基础进阶(六)-大厂面试题问题:循环闭包与setTimeout
我在上一篇闭包的文章中留下了一个关于setTimeout与循环闭包的思考题. 利用闭包,修改下面的代码,让循环输出的结果依次为1, 2, 3, 4, 5 for (var i = 1; i <= ...
- 不是广告--如何学Java,我说点不太一样的学习方式
首先声明,这篇文章不是卖课程.介绍培训班的广告. 最近有不少读者通过微信问我:小白应该怎么学好 Java? 提问的人里有在校大学生.有刚参加工作的.有想转行做程序员的,还有一部分是最近找工作不顺的. ...
- 面向对象(OO)第二阶段学习总结
0.前言 此阶段总共进行三次大作业,其中第一次作业中的第一题,水文数据校验及处理中,遇到较大的难题,第一次接触正则表达式,编码过程中显得难度特别大.第二次作业同样也是对于一元多项式求导中对单项的正则校 ...
- mac OS 搭建PHP项目开发环境
系统 macOS Mojave 版本10.14.6 mac OS 自带Apache和PHP 非常便利 sudo apachectl -v //查看apache版本 php -v //查看php版本 启 ...
- js的同步与异步
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. JavaScript的单线程,与它的用途有关.作为 ...
- 从Webpack源码探究打包流程,萌新也能看懂~
简介 上一篇讲述了如何理解tapable这个钩子机制,因为这个是webpack程序的灵魂.虽然钩子机制很灵活,而然却变成了我们读懂webpack道路上的阻碍.每当webpack运行起来的时候,我的心态 ...