实验4 面向对象基础Word下载.docx
《实验4 面向对象基础Word下载.docx》由会员分享,可在线阅读,更多相关《实验4 面向对象基础Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
![实验4 面向对象基础Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/d3b8b3ac-5e83-41fc-b737-2b188711a3b7/d3b8b3ac-5e83-41fc-b737-2b188711a3b71.gif)
89.23333333333335
最高分:
91.4
最低分:
87.3
学生信息:
|-学号:
100
|-姓名:
John
|-年龄:
20
|-英语:
89.0
|-计算机:
|-数学:
程序代码:
packageunit4;
publicclasstestStudent{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Studentstu=newStudent("
John"
"
100"
20,87.3,89,91.4);
System.out.println(stu.toString());
}
}
classStudent{
privateStringname;
privateStringid;
privateintage;
//姓名、学号、年龄
privatedoublecomputerGrade;
privatedoublemathGrade;
privatedoubleenglishGrade;
//计算机成绩、数学成绩、英语成绩
publicStudent(Stringname,Stringid,intage,doublecomputerGrade,
doublemathGrade,doubleenglishGrade){
this.name=name;
this.id=id;
this.age=age;
puterGrade=computerGrade;
this.mathGrade=mathGrade;
this.englishGrade=englishGrade;
voidsetId(Stringid){
publicStringgetId(){
returnid;
voidsetName(Stringname){
publicStringgetName(){
returnname;
voidsetAge(intage){
publicintgetAge(){
returnage;
voidsetEnglish(doubleenglishGrade){
publicdoublegetEnglish(){
returnenglishGrade;
voidsetComputer(doublecomputerGrade){
publicdoublegetComputer(){
returncomputerGrade;
voidsetMath(doublemathGrade){
publicdoublegetMath(){
returnmathGrade;
publicdoublegetSum(){
returngetComputer()+mathGrade+englishGrade;
publicdoublegetAvg(){
returngetSum()/3;
publicdoublegetMax(){
doublemax=computerGrade;
if(max<
mathGrade)
max=mathGrade;
elseif(max<
englishGrade)
max=englishGrade;
returnmax;
publicdoublegetMin(){
doublemin=computerGrade;
if(min>
mathGrade)
min=mathGrade;
elseif(min>
englishGrade)
min=englishGrade;
returnmin;
publicStringtoString(){
return"
"
+getSum()+"
\n"
+
"
+getAvg()+"
"
+getMax()+"
+getMin()+"
学生信息:
+"
+getId()+"
+getName()+"
+getAge()+"
+getEnglish()+"
|-计算机:
+getComputer()+"
;
运行结果贴图:
(二)
1、设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改
程序功能:
设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
程序源代码如下,补全横线上的程序代码。
importjava.util.*;
publicclasstestcar{
Scannerinput=newScanner(System.in);
System.out.println("
EnterownerNamecurSpeedcurDirInDegree:
);
Carcar=newCar(input.next(),input.nextFloat(),input.nextFloat());
ownerName:
+car.getOwnerName());
curSpeed:
+car.getCurSpeed());
curDirInDegree:
+car.getCurDirInDegree());
Enternewspeed:
car.changeSpeed(input.nextFloat());
newcurSpeed:
carisstopping:
car.stop();
stopcurSpeed:
classCar{
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;
执行结果:
编写一个主方法,编译并测试源程序。
2、创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)
创建类Car的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
程序代码如下(需要添加代码,要求运行结果如下图所示。
publicclassCar{
publicstaticvoidmain(String[]args){
EXP3_1car=newCar("
成龙"
200f,25f);
//在下面填写代码
编译并运行,结果如图所示。
(三)(账户类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美元,然后打印余额、月利息以及这个账户的开户日期。
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclasstestAccount{
Accountaccount=newAccount(1122,20000);
id:
+account.getid());
balance:
+account.getbalance());
account.setannualInterestRate(0.045);
annulIntereatRate:
+account.getannualInterestRate()*100+"
%"
System.out.println();
调用withDraw()函数"
+account.withDraw(2500));
+account.deposit(3000));
longcurrentTime=System.currentTimeMillis();
//当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
SimpleDateFormatformatter=newSimpleDateFormat("
yyyy年-MM月dd日-HH时mm分ss秒"
Datedate=newDate(currentTime);
开户日期"
+formatter.format(date));
classAccount{
privateintid=0;
//账户
privatedoublebalance;
//余额
privatedoubleannualInterestRate;
//当前利率,假设所有的账户都有相同的利率
privateDatedateCreated;
//开户日期
publicAccount(){
id=id+1;
}//默认账户的无参构造方法
publicAccount(intid,doublebalance){
this.balance=balance;
}//一个能创建带特定id和初始余额的账户的构造方法。
//id、balance和annualInterestRate的修改器
publicvoidsetid(intid){
publicvoidsetbalance(doublebalance){
publicvoidsetannualInterestRate(doubleannualInterestRate){
this.annualInterestRate=annualInterestRate;
//id、balance和annualInterestRate的访问器
publicintgetid(){
publicdoublegetbalance(){
returnbalance;
publicdoublegetannualInterestRate(){
returnannualInterestRate;
publicDategetdateCreated(){
returndateCreated;
}//dateCreated的访问器。
publicdoublegetMonthlyInterestRate(doubleMonthlyInterestRate){
returnMonthlyInterestRate;
}//返回月利率。
publicdoublewithDraw(doublebalance){
}//从账户提取特定数额。
publicdoubledeposit(doublebalance){
}//向账户存储特定数额。
(三)(风扇类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方法显示这些对象。
/*实现这个类。
*/
publicclasstestFan{
Fanfan1=newFan();
fan1.setSpeed(fan1.FAST);
fan1.setOn(true);
fan1.setRadius(10);
fan1.color="
yellow"
fan1.toString();
System.out.println(fan1.toString());
Fanfan2=newFan();
fan1.setSpeed(fan2.MEDIUM);
fan1.setOn(false);
fan1.setRadius(5);
//fan2.color="
blue"
System.out.println(fan2.toString());
classFan{//风扇
finalintSLOW=1;
finalintMEDIUM=2;
finalintFAST=3;
//常量表示风扇的速度
privateintspeed=SLOW;
//风扇的速度(默认值为SLOW)
privatebooleanon;
//默认值为false,风扇是否打开
privatedoubleradius=5;
//风扇的半径
Stringcolor="
//风扇的颜色(默认值为blue)
publicFan(){}
publicFan(intspeed,booleanon,doubleradius,Stringcolor){
this.speed=speed;
this.on=on;
this.radius=radius;
this.color=color;
//修改器
publicvoidsetSpeed(intspeed){
this.speed=speed;
publicvoidsetOn(booleanon){
this.on=on;
publicvoidsetRadius(doubleradius){
this.radius=radius;
//访问器
publicintgetSpeed(){
returnspeed;
publicbooleangetOn(){
returnon;
publicdoublegetRadius(){
returnradius;
if(on==true)
return"
speedis"
+getSpeed()+"
.Coloris"
+color+
"
.Radiusis"
+getRadius();
else
Fanisoff."
Coloris"
}/*一个名为toString()的方法返回描述风扇的字符串。
(四)(几何方面:
正n边形)在一个正n边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。
设计一个名为RegularPolygon的类,该类包括:
●一个名为n的int型私有数据域定义多边形的边数,默认值为3。
●一个名为side的double型私有数据域存储边的长度,默认值为1。
●一个名为x的double型私有数据域,它定义多边