中南大学网络教育课程考试面向对象程序设计作业参考答案.docx
《中南大学网络教育课程考试面向对象程序设计作业参考答案.docx》由会员分享,可在线阅读,更多相关《中南大学网络教育课程考试面向对象程序设计作业参考答案.docx(15页珍藏版)》请在冰豆网上搜索。
![中南大学网络教育课程考试面向对象程序设计作业参考答案.docx](https://file1.bdocx.com/fileroot1/2022-10/29/f9ac8fc6-94d1-4f0d-be75-3888787a0a3a/f9ac8fc6-94d1-4f0d-be75-3888787a0a3a1.gif)
中南大学网络教育课程考试面向对象程序设计作业参考答案
《面向对象程序设计》作业及答案
作业一
1.类和对象的概念和关系是什么?
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象由一组属性和对这组属性进行操作的一组服务组成,类是具有相同属性和服务的一组对象的集合。
类是对象的模板,对象是类的实例。
2.用UML表示交通工具Vehicle类及名为car1,car2及car3的三个Vehicle对象
3.简述对象之间的消息传递机制是如何实现的?
当程序运行时,我们使用类和由类生成的对象来完成任务。
而要命令类或对象执行某项任务,就需要给它发送一条消息(message)。
为了能够处理所接收到的消息,类或对象必须拥有相应的方法(method)。
一个方法就是一个指令序列,也就是一段程序代码,类似于C语言中的函数。
为类定义的方法称为类方法(classmethod),为对象定义的方法称为实例方法(instancemethod)。
类方法可以通过类直接调用,实例方法则必须先创建类的实例才能够调用。
4.import语句的用途是什么?
Java程序是否总要包括import语句?
import保留字用于引入其他包中的类。
Java如果使用的都是同一包的类的话则不需要import保留字。
5.什么是Java的源文件?
什么是字节码文件?
Java的源文件是以.java结尾的文本文件,字节码文件是将Java源文件经过Java编译器编译后的文件,字节码文件不能直接运行,只能运行于Java虚拟机之上。
6.Java虚拟机是什么?
它有作用是什么?
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java语言的一个非常重要的特点就是与平台的无关性。
而使用Java虚拟机是实现这一特点的关键。
一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。
而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
7.描述对象声明和对象生成之间的区别。
使用内存状态图来说明这种区别
对象声明是为对象的引用创建一个空间,而对象生成则是创建一个类的实例,即为对象分配空间,如果需要的话,其还会将对象空间的地址赋给其应用。
如Testert1;
t1
t1=newTester();
t1
:
Tester
8.编写Java应用程序,用一个对话框显示当前时间
importjavax.swing.*;
importjava.util.*;
publicclassTest{
publicstaticvoidmain(String[]args){
Datetoday=newDate();
JOptionPane.showMessageDialog(null,today);
}
}
9.下面的代码段会有什么样的输出:
classQ2main{
publicstaticvoidmain(String[]args){
QuestionTwoq2;
q2=newQuestionTwo();
q2.init();
q2.increment();
q2.increment();
System.out.println(q2.getCount());
}
}
classQuestionTwo{
privateintcount;
publicvoidinit(){
count=1;
}
publicvoidincrement(){
count=count+1;
}
publicintgetCount(){
returncount;
}
}
输出结果:
3
10.编写可以根据用户的年龄和身高给出推荐的体重的程序,利用下面的公式计算出推荐的体重:
recommandedWeight=(height-100+age/10)*0.9
定义名为Height(身高)的公共服务类,他应该有可以根据身高得出推荐体重的方法
publicclassTest{
publicstaticvoidmain(String[]args){
Weightw1=newWeight();
System.out.println(w1.getRecommendedWeight(30,170));
}
}
classWeight{
publicdoublegetRecommendedWeight(intage,intheight){
return(height-100+age/10)*0.9;
}
}
作业二
1.假如x的值为10,y的值为20,z的值为30,求出下列布尔表达式的值:
a)x>y&&y>x:
false
b)(xtrue
c)!
(x(x+10<=20):
false
d)!
((x==y))&&(x!
=y)&&(xtrue
2.用switch语句重写下面的if语句。
selection=Inter.parseInt(JOptionPane.showInputDialog(null,”Enterselection:
”));
if(selection==0)
System.out.println(“YouselectedMagenta”);
elseif(selection==1)
System.out.println(“YouselectedRed”);
elseif(selection==2)
System.out.println(“YouselectedBlue”);
elseif(selection==3)
System.out.println(“YouselectedGreen”);
else
System.out.println(“Invalidselection”);
改写为:
selection=Inter.parseInt(JOptionPane.showInputDialog(null,”Enterselection:
”));
swith(selection){
case0:
System.out.println(“YouselectedMagenta”);
break;
case1:
System.out.println(“YouselectedRed”);
break;
case2:
System.out.println(“YouselectedBlue”);
break;
case3:
System.out.println(“YouselectedGreen”);
break;
default:
System.out.println(“Invalidselection”);
)
3.画出下面两个switch语句的控制流程图
a)switch(choice){
case1:
a=0;
break;
case2:
b=1;
break;
case3:
c=2;
break;
case4:
d=3:
break;
}
b)switch(choice){
case1:
a=0;
case2:
b=1;
case3:
c=2;
default:
d=3;
}
a)
b)
4.分别用for、do-while和while语句计算下面的累加和:
a)1+1/2+1/3+1/4+…+1/15
for循环:
intx;
doubleresult=0.0F;
for(doublei=1;i<=15;i++){
result+=1/i;
}
System.out.println(result);
do-while循环:
doublex=1;
doubleresult=0.0F;
do{
result+=1/x;
x++;
}while(x<=15);
System.out.println(result);
while循环:
doublex=1;
doubleresult=0.0F;
while(x<=15){
result+=1/x;
x++;
};
System.out.println(result);
5+10+15+…+50
for循环:
intx;
intresult=0;
for(inti=1;i<=10;i++){
result+=i*5;
}
System.out.println(result);
do-while循环:
intx=1;
intresult=0;
do{
result+=x*5;
x++;
}while(x<=10);
System.out.println(result);
while循环:
intx=1;
intresult=0;
while(x<=10){
result+=x*5;
x++;
};
System.out.println(result);
5.编写一个计算闰年的程序,要求用户输入一个年份,如果用户输入的年份不在0~3000年内则给予用户提示要求其重新输入,否则判断该年份是否为闰年并返回结果。
publicclassTest{
publicstaticvoidmain(String[]args){
LeapYearly=newLeapYear();
System.out.println(puteLeapYear(1998));
System.out.println(puteLeapYear(1900));
System.out.println(puteLeapYear(2000));
}
}
classLeapYear{
publicbooleancomputeLeapYear(intyear){
if(year%4==0&&year%100!
=0)returntrue;
if(year%100==0&&year%400==0)returntrue;
returnfalse;
}
}
6.下列哪一组重载方法是不合法的?
a)publicvoidcompute(intnum){…}
publicintcompute(intnum){…}
b)publicvoidmove(doublelength){…}
publicvoidmove(){…}
c)publicintadjust(doubleamount){…}
publicvoidadjust(doubleamount,doublecharge){…}
d)publicvoiddoWork(){…}
publicvoiddoWork(Stringname){…}
publicintdoWork(doublenum){…}
第a)组
7.完成下面这个类中的前四个构造方法。
其中每一构造方法都是用关键字this调用第五个构造方法:
classCat{
privatestaticfinal