(一)理论知识:
了解类和对象前,简单提及面向对象程序设计。面向对象程序设计就是通过对象来进行程序设计,对象表示一个可以明确标识的实体。例如:一个人、一本书、一个学校或一台电脑等等。每个对象都有自己独特的标识、状态和行为。
对象的状态(特征或属性,即实例变量),由该对象的数据域来表示。 例如:一个人可以具有名字、年龄、身高、体重、家庭地址等等属性,这些就是“人这个对象的数据域”。
对象的行为(对象执行的动作,即功能),由方法来定义。例如:定义getName()来获取姓名, getHeight()获取身高,setAddress(String addr)修改地址。
类和对象的关系
类是一种抽象的概念集合,是最基础的组织单位,作为对象的模板、合约或蓝图。
类是对象的类型,使用一个通用类可以定义同一类型的对象,类中定义对象的数据域是什么以及方法是做什么的。 对象是类的实例,一个类可以拥有多个实例,创建实例的过程叫做实例化。
拥有main()方法的类称为主类,是执行程序的入口,类中没有main()方法,无法运行。
构造方法
构造方法在使用new操作符创建对象时被调用,作用就是用于初始化对象数据域。
构造方法相比于普通方法比较特殊的地方: 构造方法名和所在类的类名一致;无返回值(即void也没有);只有创建对象时才会被调用。 构造方法和普通方法一样,也可以重载,根据不同的初始参数,来构造对象。
(二)实验目的与要求
(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 结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;
I 尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。
l 参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:
姓名 性别 java成绩
代码:
1 package 王志成; 2 import java.util.Scanner; 3 public class Student { 4 public static void main(String[] args) { 5 int x=3; 6 Employee[] message = new Employee[x]; 7 System.out.println("请输入信息:"); 8 Scanner in = new Scanner(System.in); 9 for(int i=0;i<message.length;i++) { 10 message[i]=new Employee(in.next(),in.next(),in.nextInt()); 11 } 12 System.out.println("name"+" "+"sex"+" "+" "+"javascore"); 13 14 for (Employee e : message) 15 System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore()); 16 } 17 } 18 19 class Employee 20 { 21 private String name; 22 private String sex; 23 private int javascore; 24 25 public Employee(String Q, String W, int E ) 26 { 27 name = Q; 28 sex = W; 29 javascore =E; 30 } 31 32 public String getName() 33 { 34 return name; 35 } 36 37 public String getSex() 38 { 39 return sex; 40 } 41 42 public int getJavaScore() 43 { 44 return javascore; 45 } 46 }
测试程序2:
l 编辑、编译、调试运行程序4-3(教材116);
l 结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;
理解Java单元(类)测试的技巧。
测试程序3:
l 编辑、编译、调试运行程序4-4(教材121);
l 结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;
测试程序4:
l 编辑、编译、调试运行程序4-5(教材129);
结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。
测试程序5:
l 编辑、编译、调试运行程序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)将两个对象的周长加总输出,将两个对象的面积加总输出
建立的类名
package practice4; import java.util.Scanner; public class Calculate { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入长方形的宽:"); double width = sc.nextDouble(); System.out.print("请输入长方形的长:"); double height = sc.nextDouble(); System.out.print("请输入圆的半径:"); double radius = sc.nextDouble(); sc.close(); Rectangle rectangle = new Rectangle(width, height); Circle circle = new Circle(radius); System.out.print("圆的周长为:"); System.out.println(circle.CalculateciGrith(radius)); System.out.print("长方形的周长:"); System.out.println(rectangle.CalculatereGrith(height,width)); System.out.print("圆的面积:"); System.out.println(circle.CalculateciArea(radius)); System.out.print("长方形的面积:"); System.out.println(rectangle.CalculatereArea(height,width)); System.out.print("周长的和:"); System.out.println(circle.CalculateciGrith(radius)+rectangle.CalculatereGrith(height, width)); System.out.print("面积的和:"); System.out.println(circle.CalculateciArea(radius)+rectangle.CalculatereArea(height, width)); } }
package practice4; public class Circle { double radius; public Circle() { //定义一个无属性圆 super(); } public Circle(double radius) { super(); this.radius = radius; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } @Override public String toString() { return "Circle [radius=" + radius + "]"; } public double CalculateciGrith(double radius) { return radius*2*Math.PI; } public double CalculateciArea(double radius) { return radius*radius*Math.PI; } }
package practice4; public class Rectangle { double width; double height; public Rectangle() { //定义一个无属性的长方形 super(); } public Rectangle(double width, double height) { super(); this.width = width; this.height = height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } @Override public String toString() { return "Rectangle [width=" + width + ", height=" + height + "]"; } public double CalculatereGrith(double height, double width) { return (height+width)*2; } public double CalculatereArea(double height, double width) { return height*width; } }
实验总结:这周我通过在课堂上的学习大致掌握了面向对象程序设计的概述(简称oop),明白了类和对象的概念,学习使用了预定义类,又通过实验课了解了用户自定义类的方法,在课后的自学第四章的过程中也加深了对以上知识的理解,并在课后作业中也充分使用了以上的知识,才使得作业圆满完成,但这次作业的完成也花费了大量的时间,说明对知识的掌握还够,还需要不断看课本,查阅相关语法知识。一切的一切都只能说明学习还不到位,还需要多加练习,勤加思考,才能更好的学习和掌握java这门语言。