学习目标:
- 掌握类与对象的基础概念,理解类与对象的关系;
- 掌握对象与对象变量的关系;
- 掌握预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API;
- 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点)
- 掌握对象的构造方法、定义方法及使用要求;(重点)
- 理解重载概念及用法;
- 掌握包的概念及用法;
- 了解文档注释技术;
第一部分:理论知识学习部分
1.类:类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例;
2.对象:重点——①对象的行为②对象的状态③对象标识
3.类与对象的关系:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
4.使用预定义类:Math类(数学库函数),math类(大整数、大浮点数),String类,Scanner类
5.用户自定义类,实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数。
第二部分:实验四
1、实验目的与要求
(1) 理解用户自定义类的定义;
(2) 掌握对象的声明;
(3) 学会使用构造函数初始化对象;
(4) 使用类属性与方法的使用掌握使用;
(5) 掌握package和import语句的用途。
2、实验内容和步骤
实验1 测试以下程序,掌握文件输入输出程序设计技术
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:
public class EmployeeTest {
public static void main(String[] args)
{
// fill the staff array with three Employee objects
Employee[] 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 objects
for (Employee e : staff)
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
+ e.getHireDay());
}
}
import java.time.LocalDate;
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;
}
}
结果如下:
import java.util.Scanner;
public class StudentTest
{
public static void main(String[] args)
{
Students[] staff = new Students[3];
System.out.println("请输入学生信息:");
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
for(int i=0;i<staff.length;i++) {
staff[i]=new Students(in.next(),in.next(),in.next());
}
System.out.println("name"+" "+"sex"+" "+" "+"javascore");
for (Students e : staff)
System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore()+" ");
}
}
class Students
{
private String name;
private String sex;
private String javascore;
public Students(String n, String s, String j)
{
name = n;
sex = s;
javascore =j;
}
public String getName()
{
return name;
}
public String getSex()
{
return sex;
}
public String getJavaScore()
{
return javascore;
}
}
结果如下:
测试程序2:
测试程序3:
测试程序4:
测试程序5:
实验3
import java.util.*;
public class RectangleCircle {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner price=new Scanner (System.in);
System.out.println("输入矩形的长、宽:");
double x=price.nextInt();
double y=price.nextInt();
System.out.println("矩形周长="+(x+y)*2);
System.out.println("矩形面积="+(x*y));
System.out.println("输入圆的半径:");
double r=price.nextInt();
double π = 3.14;
System.out.println("圆周长="+(2*π*r));
System.out.println("圆面积="+(r*r*π));
System.out.println("周长和="+((x+y)*2+2*π*r));
System.out.println("面积和="+((x*y)+r*r*π));
}
}
结果如下:
总结:
通过本周的学习,我学习到了面向对象程序设计(OOP)的概论,之前总是听老师说Java是一门面向对象的语言,我也终于知道了什么是类,什么是对象,了解了对象的三个特征:对象的行为,对象的状态,对象标识。掌握了如何使用预定义类的基本,和构造并初始化对象。课上我学习到了Java类库中的LocalDate类,让我对类有了更深的认识。但是我对用户自定义类的内容了解的还不够,对于第四章我还需要更多的学习。