第一部分 第四章部分理论知识
1.面向对象程序设计概述:java是完全面向对象的,必须熟悉OOP才能编写java程序。
类:由类构造对象的过程称为创建类的实例。
封装:封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。对于每个特定的类实例(对象)都有一组特定的实例值域。这些值的集合就是这个对象的当前状态。
对象:对象状态的改变必须通过调用方法实现。
识别类:识别类的简单规则是在分析问题的过程中寻找名词,而方法对应着动词。
类之间的关系:依赖,聚合,继承。
2.使用预定义类:在OOP中,要想使用对象,需先构造对象,并初始化对象,然后通过对象调用类中的方法。
构造器是类中一个特殊的方法,该方法名与类名相同。
java类库中的LocalDate类:LocalDate类用来表示日历表示法。不要使用构造器来构造LocalDate类对象。应该使用静态工厂方法代表你调用构造器。
更改器与访问器方法:set与get。
第二部分 实验部分
1、实验目的与要求
(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:
---编辑、编译、调试运行程序4-2(教材104页);
---结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;
---尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。
---参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:
姓名 性别 java成绩
源码:
import java.time.LocalDate;
import java.util.Scanner;
public class StudentTest
{
public static void main(String[] args)
{
Student[] staff = new Student[3];
Scanner in=new Scanner(System.in);
System.out.println("请输入学生信息:");
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 m)
{
name=n;
sex=s;
javascore=m;
} public String getName()
{
return name;
} public String getSex()
{
return sex;
} public int getJavaScore()
{
return javascore;
}
}
结果:
测试程序2:
---编辑、编译、调试运行程序4-3(教材116);
---结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
---理解Java单元(类)测试的技巧。
测试程序3:
---编辑、编译、调试运行程序4-4(教材121);
---结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;
测试程序4:
---编辑、编译、调试运行程序4-5(教材129);
---结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
---编辑、编译、调试运行程序4-6、4-7(教材135);
---结合程序运行结果,理解程序代码,掌握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) 将两个对象的周长加总输出,将两个对象的面积加总输出。
实验总结:
通过这次实验,我初步了解了java中OOP的概念,学习了如何自定义类去编程,加深了对java面向对象的特点的理解。