实验4面向对象基础.docx

上传人:b****5 文档编号:7218430 上传时间:2023-05-11 格式:DOCX 页数:22 大小:35.05KB
下载 相关 举报
实验4面向对象基础.docx_第1页
第1页 / 共22页
实验4面向对象基础.docx_第2页
第2页 / 共22页
实验4面向对象基础.docx_第3页
第3页 / 共22页
实验4面向对象基础.docx_第4页
第4页 / 共22页
实验4面向对象基础.docx_第5页
第5页 / 共22页
实验4面向对象基础.docx_第6页
第6页 / 共22页
实验4面向对象基础.docx_第7页
第7页 / 共22页
实验4面向对象基础.docx_第8页
第8页 / 共22页
实验4面向对象基础.docx_第9页
第9页 / 共22页
实验4面向对象基础.docx_第10页
第10页 / 共22页
实验4面向对象基础.docx_第11页
第11页 / 共22页
实验4面向对象基础.docx_第12页
第12页 / 共22页
实验4面向对象基础.docx_第13页
第13页 / 共22页
实验4面向对象基础.docx_第14页
第14页 / 共22页
实验4面向对象基础.docx_第15页
第15页 / 共22页
实验4面向对象基础.docx_第16页
第16页 / 共22页
实验4面向对象基础.docx_第17页
第17页 / 共22页
实验4面向对象基础.docx_第18页
第18页 / 共22页
实验4面向对象基础.docx_第19页
第19页 / 共22页
实验4面向对象基础.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验4面向对象基础.docx

《实验4面向对象基础.docx》由会员分享,可在线阅读,更多相关《实验4面向对象基础.docx(22页珍藏版)》请在冰点文库上搜索。

实验4面向对象基础.docx

实验4面向对象基础

xxxxx大学电脑与信息技术学院

实验报告

姓名

学号

专业班级

课程名称

Java实验

实验日期

成绩

指导教师

批改日期

实验名称

实验4面向对象基础

一.实验目的:

〔1〕掌握类的定义、类的实例化方法;

〔2〕掌握类中的静态变量和静态方法的使用;

〔3〕掌握使用类的构造方法对对象的数据域进行初始化;

〔4〕掌握getter和setter的使用;

二.实验内容

〔1〕现在要求设计一个表示学生的类,里面有学生的、学号、年龄,还要有三项成绩:

电脑成绩、数学成绩、英语成绩,要求可以求总分、平均分、最高、最低分,并且可以输出一个学生的完整信息,请设计此类。

提示:

程序开发步骤

根据需求定义出所要的类;

根据题目中的要求规划出类的属性;

所有的属性必须封装:

private;

所有的属性必须通过getter和setter访问;

如果需要增加构造方法,为属性赋初值,适当采用构造方法重载;

所有的信息不要类中直接输出,而是交给调用处输出,即在该类中尽量不出现System.out.println()语句。

例如在调用类中输出如下结果:

 

学生信息:

|-学号:

100

|-:

John

|-年龄:

20

 

程序代码:

packaget4;

importjava.util.*;

import;

publicclassLX4_1{

publicstaticvoidmain(String[]args){

Studentstudent1=newStudent();

Scannerinput=newScanner(System.in);

System.out.println("请输入学生:

");

student1.setName(input.next());

System.out.println("请输入学号:

");

student1.setStudentNumber(input.nextInt());

System.out.println("请输入年龄:

");

student1.setAge(input.nextInt());

System.out.println("请输入英语成绩:

");

student1.setEnglishGrade(input.nextDouble());

System.out.println("请输入电脑成绩:

");

student1.setComputerGrade(input.nextDouble());

System.out.println("请输入数学成绩:

");

student1.setMathGrade(input.nextDouble());

printInformations(student1);

}

publicstaticvoidprintInformations(Students1){

System.out.printf("总分:

%3.2f\n",Double.parseDouble(String.valueOf(s1.sumGrade())));

System.out.printf("平均分:

%3.2f\n",Double.parseDouble(String.valueOf(s1.avgGrade())));

System.out.println("最高分:

"+Double.parseDouble(String.valueOf(s1.maxGrade())));

System.out.println("最低分:

"+Double.parseDouble(String.valueOf(s1.minGrade())));

System.out.println("学生信息:

");

System.out.println("学号:

"+s1.getStudentNumber());

System.out.println(""+s1.getName());

System.out.println("年龄"+s1.getAge());

System.out.println("英语成绩:

"+s1.getEnglishGrade());

System.out.println("电脑成绩:

"+s1.getComputerGrade());

System.out.println("数学成绩:

"+s1.getMathGrade());

}

}

classStudent{

privateintstudentNumber;

privateStringname;

privateintage;

privatedoubleenglishGrade;

privatedoublecomputerGrade;

privatedoublemathGrade;

voidsetStudentNumber(intnumber){

studentNumber=number;

}

intgetStudentNumber(){

returnstudentNumber;

}

voidsetName(Stringnm){

name=nm;

}

StringgetName(){

returnname;

}

voidsetAge(intage1){

age=age1;

}

intgetAge(){

returnage;

}

voidsetEnglishGrade(doublegrade){

englishGrade=grade;

}

doublegetEnglishGrade(){

returnenglishGrade;

}

voidsetComputerGrade(doublegrade){

computerGrade=grade;

}

doublegetComputerGrade(){

returncomputerGrade;

}

voidsetMathGrade(doublegrade){

mathGrade=grade;

}

doublegetMathGrade(){

returnmathGrade;

}

doublemaxGrade(){

doublemax;

max=englishGrade;

if(max

max=computerGrade;

if(max

max=mathGrade;

returnmax;

}

doubleminGrade(){

doublemin;

min=englishGrade;

if(min>computerGrade)

min=computerGrade;

if(min>mathGrade)

min=mathGrade;

returnmin;

}

doublesumGrade(){

doublesum;

sum=englishGrade+computerGrade+mathGrade;

returnsum;

}

doubleavgGrade(){

doubleave;

ave=(sumGrade())/3;

returnave;

}

}

 

运行结果贴图:

 

(二)

1、设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改

程序功能:

设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。

程序源代码如下,补全横线上的程序代码。

packaget4;

publicclassCar{

privateStringownerName;//车主

privatefloatcurSpeed;//当前车速

privatefloatcurDirInDegree;//当前方向盘转向角度

publicCar(StringownerName){

this.ownerName=ownerName;

}

publicCar(StringownerName,floatspeed,floatdirInDegree){

this(ownerName);//调用上面那个构造函数为ownerName赋值

curSpeed=speed;

curDirInDegree=dirInDegree;

}

publicStringgetOwnerName(){//提供对车主的访问

returnownerName;

}

publicfloatgetCurDirInDegree(){//提供对当前方向盘转向角度的访问

returncurDirInDegree;

}

publicfloatgetCurSpeed(){//提供对当前车速的访问

returncurSpeed;

}

publicvoidchangeSpeed(floatcurSpeed){//提供改变当前的车速

this.curSpeed=curSpeed;

}

publicvoidstop(){//提供停车

curSpeed=0;

}

}

主方法:

packaget4;

importjava.util.*;

publicclassLX4_2{

publicstaticvoidmain(String[]args){

Scannerinput=newScanner(System.in);

System.out.println("请输入车主、车速和方向盘角度:

");

Carcar1=newCar(input.next(),input.nextFloat(),input.nextFloat());

//TODO自动生成的方法存根

System.out.println("车主:

"+car1.getOwnerName());

System.out.println("当前车速:

"+car1.getCurSpeed());

System.out.println("当前方向盘角度:

"+car1.getCurDirInDegree());

System.out.println("修改车速:

");

System.out.println("请输入新的车速:

");

car1.changeSpeed(input.nextFloat());

System.out.println("当前车速:

"+car1.getCurSpeed());

System.out.println("停车:

");

car1.stop();

System.out.println("当前车速:

"+car1.getCurSpeed());

}

}

编写一个主方法,编译并测试源程序。

2、创建类的对象,使用对象的方法〔类的非静态方法〕来访问或修改对象的变量〔类的非静态变量〕

创建类Car的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。

程序代码如下〔需要添加代码,要求运行结果如下列图所示。

packaget4;

publicclassLX4_3{

publicstaticvoidmain(String[]args){

Carcar=newCar("成龙",200f,25f);

System.out.println("车主:

"+car.getOwnerName());

System.out.println("当前车速:

"+car.getCurSpeed());

System.out.println("当前方向盘角度:

"+car.getCurDirInDegree());

System.out.printf("在调用changeSpeed(80)后,车速变为:

");

car.changeSpeed(80);

System.out.println(car.getCurSpeed());

System.out.printf("在调用stop()后,车速变为:

");

car.stop();

System.out.println(car.getCurSpeed());

}

}

编译并运行,结果如下图。

〔三〕〔账户类Account〕设计一个名为Account的类,它包括:

●一个名为id的int类型私有账户数据域〔默认值为0〕。

●一个名为balance的double类型私有账户数据域〔默认值为0〕。

●一个名为annualInterestRate的double类型私有数据域存储当前利率〔默认值为0〕。

假设所有的账户都有相同的利率。

●一个名为dateCreated的Date类型私有数据域存储账户的开户日期。

●一个能创建默认账户的无参构造方法。

●一个能创建带特定id和初始余额的账户的构造方法。

●id、balance和annualInterestRate的访问器和修改器。

●dateCreated的访问器。

●一个名为getMonthlyInterestRate〔〕的方法返回月利率。

●一个名为withDraw的方法从账户提取特定数额。

●一个名为deposit的方法向账户存储特定数额。

实现这个类。

编写一个测试程序,创建一个账户ID为1122、余额为20000美元、年利率为4.5%的Account对象。

使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额、月利率以及这个账户的开户日期。

程序代码:

packaget4;

import.*;

publicclassLX4_4{

publicstaticvoidmain(String[]args){

Accountaccount=newAccount(1122,20000);

account.setAnnualInterestRate(4.5);

account.withDraw(2500);

account.desposit(3000);

print(account);

}

publicstaticvoidprint(Accountac1){

System.out.println("余额为:

"+ac1.getBalance());

System.out.println("月利率:

"+ac1.getAnnualInterestRate()/12*100

+"%");

System.out.println("开户日期:

"+ac1.getDateCreat());

}

}

packaget4;

importjava.util.*;

publicclassAccount{

privateintid;

privatedoublebalance;

privatestaticdoubleannualInterestRate;

privateDatedateCreated;

Account(){

id=id+1;

this.balance=0;

dateCreated=newDate();

}

Account(intid,doublebalance){

this.id=id;

this.balance=balance;

dateCreated=newDate();

}

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicdoublegetBalance(){

returnbalance;

}

publicvoidsetBalance(doublebalance){

this.balance=balance;

}

publicdoublegetAnnualInterestRate(){

returnannualInterestRate;

}

publicvoidsetAnnualInterestRate(doublean){

annualInterestRate=an/100;

}

publicDategetDateCreat(){

returndateCreated;

}

publicdoublegetMonthlyInterestRate(){

returnannualInterestRate/12;

}

publicvoidwithDraw(doubledraw){

doublea=this.getBalance()-draw;

this.setBalance(a);

}

publicvoiddesposit(doubledep){

doublea=this.getBalance()+dep;

this.setBalance(a);

}

}

 

运行结果贴图:

 

〔三〕〔风扇类Fan〕设计一个名为Fan的类来表示一个风扇。

这个类包括:

●三个名为SLOW、MEDIUM、FAST而值是1、2和3的常量表示风扇的速度。

●一个名为speed的int类型私有数据域表示风扇的速度〔默认值为SLOW〕。

●一个名为on的boolean类型的私有数据域表示风扇是否打开〔默认值为false〕。

●一个名为radius的double类型的私有数据域表示风扇的半径〔默认值为5〕。

●一个名为color的String类型的数据域表示风扇的颜色〔默认值为blue〕。

●这四个数据域的访问器和修改器。

●一个创建默认风扇的无参构造方法。

●一个名为toString〔〕的方法返回描述风扇的字符串。

如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。

如果风扇没有打开,该方法就返回一个由“fanisoff”和风扇颜色及半径组合成的字符串。

实现这个类。

编写一个测试程序,创建两个fan对象。

将第一个对象设置为最大速度、半径为10、颜色为yellow、状态为打开。

将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。

通过调用它们的toString方法显示这些对象。

程序代码:

packaget4;

publicclassLX4_5{

publicstaticvoidmain(String[]args){

Fanfan1=newFan();

fan1.setSpeed(3);

fan1.setRadius(10);

fan1.setColor("yellow");

fan1.setOn(true);

Fanfan2=newFan();

fan2.setSpeed

(2);

fan2.setRadius(5);

fan2.setColor("blue");

fan2.setOn(false);

System.out.println(fan1.toString());

System.out.println(fan2.toString());

}

}

packaget4;

publicclassFan{

finalstaticintslow=1;

finalstaticintmedium=2;

finalstaticintfast=3;

privateintspeed=slow;

privatebooleanon=false;

privatedoubleradius=5;

privateStringcolor="blue";

publicintgetSpeed(){

returnspeed;

}

publicvoidsetSpeed(intsp){

speed=sp;

}

publicbooleangetOn(){

returnon;

}

publicvoidsetOn(booleanon1){

on=on1;

}

publicdoublegetRadius(){

returnradius;

}

publicvoidsetRadius(doubler){

radius=r;

}

publicStringgetColor(){

returncolor;

}

publicvoidsetColor(Stringa){

color=a;

}

Fan(){

}

publicStringtoString(){

if(this.getOn()==true){

return"风扇转速:

"+this.getSpeed()+"风扇颜色:

"+this.getColor()

+"半径:

"+this.getRadius();

}else

return"fanisoff"+"风扇颜色:

"+this.getColor()+"半径:

"

+this.getRadius();

}

}

 

运行结果贴图:

〔四〕〔几何方面:

正n边形〕在一个正n边形中,所有边的长度都相同,且所有角的度数都相同〔即这个多边形是等边等角的〕。

设计一个名为RegularPolygon的类,该类包括:

●一个名为n的int型私有数据域定义多边形的边数,默认值为3。

●一个名为side的double型私有数据域存储边的长度,默认值为1。

●一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值为0。

●一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值为0。

●一个创建带默认值的正多边形的无参构造方法。

●一个能创建带指定边数和边长度、中心在〔0,0〕的正多边形的构造方法。

●一个能创建带指定边数和边长度、中心在〔x,y〕的正多边形的构造方法。

●所有数据域的访问器和修改器。

●一个返回

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2