java上机实验二 初步的面向对象的程序设计练习.doc
信息科学与工程学院 Java程序设计 上机实验报告专业班级 姓 名 学 号 实验时间 指导教师 成 绩 实验名称实验二 初步的面向对象的程序设计练习实验目的1) 掌握类和构造方法的定义。2) 掌握创建类实例的方法。3) 初步掌握面向对象的编程思想主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)实验步骤:一、编写程序实现如下功能:已知学生类有域变量(学号、班号、姓名、性别、年龄)和方法(构造方法、获得学号、获得班号、获得性别、获得年龄、修改年龄,显示基本信息),定义一组学生对象,并初始化他们的基本信息,然后依次输出。步骤(1):定义类Stduent,并添加如下域变量: String sno; String classno; String name; char sex; int age;步骤(2):在类Student中添加如下方法,并编写代码实现具体方法的功能: Student(String sno,String classno,String name,char sex,int age) String getSno() String getClassno() String getSex() int getAge() void updateAge(int age) void print() 步骤(3):定义一个包含main方法的Application程序类TestStudent,初始化一个学 生类对象数组,并利用循环语句显示所有学生的基本信息。步骤(4): 保存文件名为TestStudent.java, 然后编译、调试和运行程序。 源程序:class Student String sno;String classno; String name; char sex; int age;Student(String sno,String classno,String name,char sex,int age) this.sno=sno;主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)this.classno=classno; this.name=name; this.sex=sex; this.age=age; String getSno()return sno; String getClassno()return classno; String getName()return name; char getSex()return sex; int getAge()return age; void updateAge(int age)this.age=age; void print()System.out.println("Student Number:"+sno+" Class Number:"+classno+" Name:"+name+" Sex:"+sex+" Age:"+age); public class TestStudent public static void main(String args) int i; Student a=new Student4; a0=new Student("4","1104","guoxiaoxi",'F',20); a1=new Student("2","1104","chenxiaoxuan",'F',21); a2=new Student("5","1104","tangxiuhui",'F',20); a3=new Student("0","1103","ruanshanshan",'F',20); for(i=0;i<=3;i+) ai.print(); 运行结果:主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)二、编写程序实现如下功能:已知学生类有域变量(姓名、考号、综合成绩、体育成绩)和方法( 取综合成绩、获取体育成绩、显示基本信息),学校类有静态变量(录取分数线)和方法(设置录取分数、获取录取分数线),录取类有方法(获取学生是否符合录取条件,其中录取条件为综合成绩在录取分数线之上,或体育成绩在96分以上并且综合成绩大于300分)。现要求编写程序输出一组学生对象中被某学校录取的学生基本信息。步骤(1):定义类Stduent,并添加如下域变量: String name; String id; float comScore; float score ;步骤(2):在类Student中添加如下方法,并编写代码实现具体方法的功能: Student(String name,String id, float comScore, float score) float getcomScore() float getscore() void print() 步骤(3)定义类School,并添加静态变量 static float scoreLine; 添加静态方法 static float getScoreLine() static void setScoreLine(float score)步骤(4)定义一个Application程序类Enroll并添加方法: public static void main(String args) static boolean isEnroll(Student s)步骤(5)保存文件名为Enroll.java, 然后编译、调试和运行程序。 源程序:class Student String name;String id;float comScore;float score; Student(String name,String id,float comScore,float score) this.name=name; this.id=id; Score=comScore; this.score=score; float getcomScore()主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等) return comScore; float getscore()return score; void print()System.out.println("姓名:"+name+ "学号:"+id+ "综合成绩:"+comScore+ "体育成绩:"+score); class School static float scoreLine; static void setScoreLine(float score) scoreLine=score; static float getScoreLine() return scoreLine; public class Enroll static boolean isEnroll(Student s) if(s.getcomScore()>=School.getScoreLine()|(s.getscore()>96&s.getcomScore()>300) return true; else return false; public static void main(String args) School.setScoreLine(500); Student a=new Student3; a0=new Student("guoxiaoxi","4",511,92); a1=new Student("chenxiaoxuan","2",326,98); a2=new Student("tangxiuhui","5",498,88); for(int i=0;i<3;i+) ai.print(); if(isEnroll(ai) System.out.println(ai.name+" is enrolled."); else System.out.println(ai.name+" is not enrolled."); 运行结果:主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)思考题:编写一个三角形类,能根据3个实数(即三角形的三边)构造三角形对象,如果3个实数不满足三角形的条件,则自动构造以最小值为边的等边三角形,另外已知这三个实数,也能求出三角形的面积。现任意定义几个三角形对象,并分别求它们的面积。 源程序:public class TestTriangle public static void main(String args) class Triangle private double a,b,c; Triangle(double a,double b,double c) double min; if(a+b<=c|(a+b)<=b|(b+c)<=a) min=a<b?a:b; min=min<c?min:c; a=min; b=min; c=min; this.a=a; this.b=b; this.c=c; double area() double s; s=(a+b+c)/2.0; System.out.println("周长为:"+2*s); System.out.println("三边依次为:"+a+","+b+","+c+","); return(Math.sqrt(s*(s-a)*(s-b)*(s-c); Triangle t=new Triangle(3,5,10); System.out.println("面积为:"+t.area(); 运行结果:主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)实验小结:本次上机做的是初步的面向对象的程序设计练习,通过两个具体的实例让我基本掌握了类和构造方法的定义,创建类实例的方法以及初步掌握面向对象的编程思想。更加清楚的了解了类、域和方法之间的关系。在做第一道题的时候因为忽略了符号的问题,导致结果总是出错,经过仔细的检查才发现是字符串类型用双引号,字符型用单引号,改正过后就能正确运行了。在做第二道题的时候,也就特别注意,没有再出现类似的状况。通过上机让我对书本上的知识有了更深的理解,所谓实践出真知就是这样吧。