Java类和对象
一、实验目的
1、熟练掌握类、对象的的概念以及对事物的抽象。
2、熟练掌握成员、方法的概念以及构造方法的概念。
3、熟练掌握封装性,多态性的概念
4、理解面向对象的程序设计方法。
二、实验内容与要求
Java定义一个类实现银行帐户
1定义一个类实现银行帐户bankaccount的概念,包括的变量有accountID(帐号)和leftmoney (存款余额),包括的方法有savemoney(double money) (存款)、getmoney (double money) (取款)、getleftmoney ()(查询余额)和getAccountID()(显示帐号)。定义主类,创建帐户类的对象,并完成相应操作。
主类中的主方法主要代码有:
bankaccount ba=new bankaccount(888123,1000);
ba.savemoney(21000);
System.out.println("存入21000元后余额为:"+ba.getleftmoney());
ba.getmoney(11500);
System.out.println("11500元后余额为:"+ba.getleftmoney());
package 实践;
public class shijian31 {
@SuppressWarnings("unused")
private double accountID;
@SuppressWarnings("unused")
private double leftmoney;
public shijian31(double i, double j) {
accountID=i;
leftmoney=j;
}
public void savemoney(double money) {
leftmoney=leftmoney+money;
}
public void getmoney (double money) {
leftmoney=leftmoney-money;
}
public double getleftmoney () {
return leftmoney;
}
public double getAccountID() {
return accountID;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
shijian31 ba=new shijian31(888123,1000);
ba.savemoney(21000);
System.out.println("存入21000元后余额为:"+ba.getleftmoney());
ba.getmoney(11500);
System.out.println("11500元后余额为:"+ba.getleftmoney());
}
}
Java定义多边形类
2 实现以下类:
1)定义一个Point类,包括:
两个成员变量x, y,用于表示平面点坐标;
两个构造方法,一个带参数,一个不带参数;
一个计算平面两个点之间长度的方法double len(Point p)
2)定义Triangle类,包括:
三个Point类型的成员变量,用于表示三角形三个顶点;
一个成员变量表示周长double perimeter,一个成员变量表示面积double area;
两个构造方法,一个带参数,一个不带参数;
一个方法void setTri(Point p1,Point p2,Point p3),实现对三个点进行赋值;
一个求三角形周长的方法double getPerimeter();
一个求三角形面积的方法double geArea();
3)定义一个测试类Test,完成以下功能:
构建一个三角形对象;
输出每条边的长度;
输出三角形的周长;
输出三角形的面积;
//point类
package 实践;
public class Point {
double x;
double y;
public Point(){
x=0;
y=0;
}
public Point(double x1,double y1){
x=x1;
y=y1;
}
public double len(Point p) {
double length = 0;
length=Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
return length;
}
}
//Triangle类
package 实践;
public class Triangle {
Point a;
Point b;
Point c;
double perimeter;
double area;
public Triangle(){
}
public Triangle(Point a1,Point b1,Point c1){
a=a1;
b=b1;
c=c1;
}
public void setTri(Point p1,Point p2,Point p3) {
a=p1;
b=p2;
c=p3;
}
public double getPerimeter() {
perimeter=a.len(b)+b.len(c)+c.len(a);
return perimeter;
}
public double getArea() {
double p;
p=perimeter/2;
area=Math.sqrt((p-a.len(b))+(p-b.len(c))+(p-c.len(a)));
return area;
}
}
//Test类
package 实践;
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Point a=new Point(0,0);
Point b=new Point(0,3);
Point c=new Point(4,0);
Triangle tri1=new Triangle(a,b,c);
//tri1.setTri(a, b, c);
System.out.println("ab的长="+a.len(b));
System.out.println("bc的长="+b.len(c));
System.out.println("ca的长="+c.len(a));
System.out.println("周长="+tri1.getPerimeter());
System.out.println("面积="+tri1.getArea());
}
}
Java操作学生类Student
3 实现以下类:
1) 定义一个学生类Student,包括:
成员变量:no:学号
name:姓名
sex:性别
math:数学成绩
java:java成绩
english:英语成绩
mean:平均分数
成员方法:无参数构造方法 Student();
有参数构造方法Student(String no,String name,boolean sex,float math,float java,float english);
设置除mean外的其他成员变量的方法:setNo(String no);setSex(String sex);setMath(float math);setJave(float java);setEnglish(float english)
获取成员变量的方法:getNo(); getSex(); getMath(); getJave(); getEnglish(); getMean();
2)定义一个StuClass类,包括:
成员变量: Student[] stu: 学生数组;
int n:学生数组大小;
int num: 实际学生人数;
javaMean:Java平均分;
englishMean:英语平均分;
mathMean:数学平均分;
成员方法:构造方法:无参数构造方法:StuClass ():构造可以存放10个学生的对象;有参的构造方法:StuClass(int n):按照指定大小构造对照;
calMean();计算三科的平均分;
getJaveMean(),getEnglishMean (),getMathMean ():获取平均分
sortBy(int x): x1按java排序,x2按英语排序,x==3按数学排序,升序;
setStudentAt(int index, Student stu):设置位置index的学生的值;
Student getStudentAt(int index)获取位置index的学生;
int searchMaxJava():搜索java分数最高的学生,返回学生的序号;
addStudent(Student stu):在数组末尾添加一个学生对象
3)定义一个测试类Test,完成以下功能
完成构建一个包括8个学生对象的StuClass对象;
计算班级平均分,输出平均分;
分别按三个成绩排序,并按序输出所有学生;
输出java成绩最好的学生;
//Student类
package 实践;
public class Student {
String no;
String name;
boolean sex;
float math;
float java;
float english;
float mean;
public Student() {
}
public Student(String no,String name,boolean sex,float math,float java,float english) {
this.no=no;
this.name=name;
this.sex=sex;
this.math=math;
this.java=java;
this.english=english;
this.mean=(math+java+english)/3;
}
public void setNo(String no) {
this.no=no;
}
public void setSex(boolean sex) {
this.sex=sex;
}
public void setMath(float math){
this.math=math;
}
public void setJave(float java){
this.java=java;
}
public void setEnglish(float english){
this.english=english;
}
public String getNo(){
return this.no;
}
public boolean getSex(){
return this.sex;
}
public float getMath(){
return this.math;
}
public float getJave() {
return this.java;
}
public float getEnglish(){
return this.english;
}
public float getMean() {
return this.mean;
}
}
//StuClass类
package 实践;
public class StuClass {
int n=4;
Student stu[] =new Student[4];
float javaMean;
float englishMean;
float mathMean;
public StuClass() {
n=10;
}
public StuClass(int n1) {
n=n1;
}
public void calMean(){
System.out.println("");
int i;
float sumjava=0;
float sumenglish=0;
float summath=0;
for(i=0;i<n;i++) {
sumjava = stu[i].java+sumjava;
sumenglish = stu[i].english+sumenglish;
summath = stu[i].math+summath;
}
this.javaMean=sumjava/n;
this.englishMean=sumenglish/n;
this.mathMean=summath/n;
System.out.println("班级平均分为"+(this.mathMean+this.englishMean+this.javaMean)/3);
}
public float getJaveMean() { //获取平均分
System.out.println("");
return this.javaMean;
}
public float getEnglishMean () {
return this.englishMean;
}
public float getMathMean () {
return this.mathMean;
}
public void sortBy(int x) {// x==1按java排序,x==2按英语排序,x==3按数学排序,升序;
if(x!=1&&x!=2&&x!=3) {
System.out.println("选择错误 输入 1按java排序 输入 2按英语排序 输入3按数学排序 升序");
}
switch(x) {
case 1:
for(int i = 0;i<n-1;i++) {
int index=i;
for(int j = i+1;j<n;j++) {
if(stu[index].java>stu[j].java) {
float temp=stu[index].java;
stu[index].java=stu[j].java;
stu[j].java=temp;
}
}
}
//扩展代码串:输出Java成绩排序
System.out.println("按java排序学生的成绩:");
for(int i = 0;i<n;i++) {
System.out.println("第"+(i+1)+"个学生的成绩 "+"java="+stu[i].java+" "+"english="+stu[i].english+" "+"math="+stu[i].math);
}
break;
case 2:
for(int i = 0;i<n-1;i++) {
int index=i;
for(int j = i+1;j<n;j++) {
if(stu[index].english>stu[j].english) {
float temp=stu[index].english;
stu[index].english=stu[j].english;
stu[j].english=temp;
}
}
}
//扩展代码串:输出english成绩排序
System.out.println("按english排序学生的成绩:");
for(int i = 0;i<n;i++) {
System.out.println("第"+(i+1)+"个学生的成绩 "+"english="+stu[i].english+" "+"java="+stu[i].java+" "+"math="+stu[i].math);
}
break;
case 3:
for(int i = 0;i<n-1;i++) {
int index=i;
for(int j = i+1;j<n;j++) {
if(stu[index].math>stu[j].math) {
float temp=stu[index].math;
stu[index].math=stu[j].math;
stu[j].math=temp;
}
}
}
//扩展代码串:输出math成绩排序
System.out.println("按math排序学生的成绩:");
for(int i = 0;i<n;i++) {
System.out.println("第"+(i+1)+"个学生的成绩 "+"math="+stu[i].math+" "+"java="+stu[i].java+" "+"english="+stu[i].english);
}
break;
}
}
public void setStudentAt(int index, Student stu) {//设置位置index的学生的值;
this.stu[index].java=stu.java;
this.stu[index].english=stu.english;
this.stu[index].math=stu.math;
}
public Student getStudentAt(int index) {//获取位置index的学生;
return stu[index];
}
public int searchMaxJava() {//搜索java分数最高的学生,返回学生的序号;
int xuhao=0;
for(int i = 0;i<n-1;i++) {
int index=i;
for(int j = i+1;j<n;j++) {
if(stu[index].java<=stu[j].java) {
xuhao =j;
}
}
}
return xuhao+1;
}
public void addStudent(Student stu) {//在数组末尾添加一个学生对象
this.stu[n]=stu;
}
}
//Test类
package 实践;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
StuClass a=new StuClass(4);
a.stu[0]=new Student("1","a",true,80,90,99);
a.stu[1]=new Student("2","b",false,90,92,93);
a.stu[2]=new Student("3","c",false,85,95,89);
a.stu[3]=new Student("4","d",true,70,80,79);
a.calMean();
int xuehao;
System.out.println("Java的平均分为="+a.getJaveMean());
System.out.println("english的平均分为="+a.getEnglishMean());
System.out.println("math的平均分为="+a.getMathMean());
Scanner scan=new Scanner(System.in);
System.out.println("成绩查询选择序号 1 Java 2 English 3 math ");
int x=scan.nextInt();
a.sortBy(x);
xuehao=a.searchMaxJava();
System.out.println("java学习最好的学生学号为="+xuehao);
scan.close();
}
}

浙公网安备 33010602011771号