高级程序设计JAVA离线作业_第1页
高级程序设计JAVA离线作业_第2页
高级程序设计JAVA离线作业_第3页
高级程序设计JAVA离线作业_第4页
高级程序设计JAVA离线作业_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学远程教育学院

《高级程序设计JAVA》课程作业(选做)

姓名:学号:

年级:学习中心:

第一章

1.简述面向过程问题求解和面向对象问题求解的异同。

答:两者都是运用计算机来解决一定问题而制作的软件程序。

D中心思想不同。前者是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的

解决过程。后者是以具体的解题过程为研究和实现的主体。

2)核心组成不同。数据结构、算法是面向过程问题求解的核心组成。对象、类与实体是对象

问题求解的核心组成。

3)解决方法不同。前者将现实世界的问题抽象成计算机可以理解和处理的数据结构,后者是

要让计算机逻辑来模拟现实世界的物理存在,让计算机世界向现实世界靠拢。

2.面向对象的程序设计方法有哪些优点?

答:优点:1)可重用性,一个软件项目中所开发的模块,能够不仅限于在这个项目中使用,

而且可以重复地使用在其他项目中,从而在多个不同的系统中发挥作用。

2)可扩展性,对现代应用软件提出的又一个重要要求,即要求应用软件能够很方便、容易

地进行扩充和修改,这种扩充和修改的范围不但涉及到软件的内容,也涉及到软件的形式和

工作机制。

3)可扩展性,使得面向对象程序设计法特别适合于在快速原型的软件开发方法中使用,也

体现它对模块化技术的更有效的支持。

4)可管理性,面向对象的开发方法采用内涵比过程和函数丰富、复杂得多的类作为构建系

统的部件,使整个项目的组织更加合理、方便。

第二章

1.编写一个JavaApplication,利用JDK软件包中的工具编译并运行这个程

w

序,在屏幕上输出"WelcometoJavaWorld!o

答:程序如下:

publicclassEx2_3

(

publicstaticvoidmain(String[Jargs)

(

System.out.println(nWelcomtojavavorld");

)

)

2.编写一个JavaApplet,使之能够在浏览器中显示“WelcometoJavaApplet

World!”的串信息。

答:程序如下:

importjava.applet.*;

publicclassEx2_4extendsApplet{//anapplet

publicvoidpaint(Graphicsg){

g.drawString("WelcometoJavaAppletWorld!*',20,20);

}

)

3.Java语言有哪些主要特点?

1)平台无关性。其独特的运行机制使得它具有良好的二进制级的可移植性,,利用Java,

开发人员可编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维护和管理的

开销。

2)面向对象。

3)安全稳定。特有的“沙箱”机制是其安全性的保障。

4)支持多线程。允许同一个程序有两个执行线索,满足一些复杂软件的需求。

5)简单易学。去除C++中不容易理解和掌握的部分,同时保证它的基本语法部分与C语言

几乎一模一样,降低学习难度。

第三章

习题:

1.编写程序输出用户指定数据的所有素数因子

答:程序如下:

publicclassEx3_15

(

publicstaticvoidmain(String[]args)

(

try(

BufferedReaderin=newBufferedReader(

newInputStreamReader(System.in));

System.out.print("请输入一个正整数:");

Strings=in.readLine();

inta=Integer.parselnt(s);

System.out.println(a+”的所有素因子包括:”);

for(inti=2;i<=a;i++){

if(a%i==0&&isPrime(i)){

System.out.println(i);

)

)

}catch(IOExceptione){}

)

publicstaticbooleanisPrime(inta)〃判断一个数是否是素数

(

if(a<=1)returnfalse;

for(inti=2;i<='H,p='M,style=umargin:Opx;padding:Opx;">

if(a%i==0)returnfalse;

returntrue;

2.编写一个Java程序,接受用户输入的一个1一一12之间的整数(如果输入

的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应

的月份的天数。

答:程序如下:

importjava.util.Scanner;

publicclassxxx{

/**

*@paramargs

*/

publicstaticvoidmain(String[Jargs){

Scannerscan=newScanner(System.in);

inti=scan.nextlnt();

if(i<l&&i>12){

System.out.println("请重新输入月份)

i=scan.nextlntQ;

switch(i)

case1:

System.out.printin("本月有31天”);

break;

case2:

System.out.println("本月有29天”);

break;

case3:

System.out.println("本月有31天”);

break;

case4:

Syste.out.println("本月有30天”);

break;

case5:

System.out.println("本月有31天”);

break;

case6:

System.out.println("本月有30天”);

break;

case7:

System.out.println("本月有31天”);

break;

case8:

System.out.printin("本月有31天”);

break;

case9:

System.out.println("本月有30天”);

break;

case10:

System.out.println("本月有31天”);

break;

case11:

System.out.println("本月有30天”);

break;

case12:

System.out.println("本月有31天”);

break;

)

}

)

3.Java对标识符命名有什么规定,下面这些标识符哪些是对的?哪些是错的,

错在哪里?

(1)MyGame(2)_isHers(3)2JavaProgram(4)

Java-Visual-Machine(5)_$abc

答:标识符可以由编程者自由指定,但是需要遵循一定的语法规定。标识符要满足如下的

规定:

(1)标识符可以由字母、数字和下划线(_)、美元符号($)组合而成。

(2)标识符必须以字母、下划线或美元符号开头,不能以数字开头。

(3)标识符中区分大小写字母。

(4)在实际应用标识符时,应该使标识符能一定程度上反映它所表示的变量、常量、对象

或类的意义,这样程序的可读性会更好。

题中的标识符中的(3)错误,不能以数字开头;(4)错误,标识符中不能使用符号

(I)(2)(5)正确。

第四章

1.有哪些访问控制符?哪些可以用于修饰类,哪些用来修饰域和方法,试述不

同访问控制符的作用。

访问控制符是指publi、private、protected等表示访问控制(AccessControl)的修饰

符,其作用是更好地控制类及其域、方法的存取权限,更好地实现信息的封装与隐藏。

方法的访问控制符包括private、protected、public和“默认访问控制符”。

•public:不同包之间可用public类;主类必须是public类。

•private:类中限定为private的成员(域或方法)只能被这个类本身访问,即私有

访问控制。

•类中的成员缺省访问控制符时,称为缺省访问控制。缺省访问控制的成员可以被这

个类本身和同一个包中的类所访问,即包访问控制。

•protected:类中限定为protected的成员可以被这个类本身,它的子类(包括同一

个包中以及不同包中的子类)以及同一个包中所有其他的类访问。类中限定为

public的成员可以被所有的类访问。

•privateproteced:Java中还有一种访问控制符为privateproteced,它限定能被

本类及其子类可以访问,而包中的其他非子类的类不能访问。

类的访问控制符或者为public,或者缺省(但内部类可以有private^protected

等访问控制符)。如果类用public修饰,则该类可以被其他类所访问;若类缺省访

问控制符,则该类只能被同包中的类访问。

2.改写本节例子UsePhoneCard成为图形界面的Applet程序,接受用户输入

的卡号,密码,金额和接入号码,创建PhoneCard类的对象并输出这张电话

卡的有关信息。

答:程序如下:

UsePhoneCard.java

程序源代码说明

importjava.io

publicclassUsePhoneCard

(

UsePhoneCard

publicstaticvoidmain(Stringargs[])

(

PhoneCardmyCard=newPhoneCard(12345678,1234,50.0,"300");〃创建对象并调用

构造函数

//PhoneCard(longcn,intpw,doubleb,

//Strings)

System.out.println(myCard.toStringO);

)

)

classPhoneCard

(

PhoneCard

longcardNumber;

privateintpassword;

doublebalance;

StringconnectNumber;

booleanconnected;

PhoneCard(longcn,intpw,doubleb,Strings)

(

cardNumber=cn;

password=pw;

if(b>0)

balance=b;

else

System.exit(l);

connectNumber=s;

connected=false;

)

booleanperformConnection(longcn,intpw)

(

if(cn==cardNumber&&pw=二password)

(

connected=true;

returntrue;

)

else

{

connected=false;

returnfalse;

)

}

doublegetBalance()

{

if(connected)

returnbalance;

else

return-1;

voidperformDial()

(

if(connected)

balance-=0.5;

)

publicStringtoStringO

(

Strings="ConnectedPhoneNumber:"+connectNumber+

"\nCardNumber:u+cardNumber+

"\nCardPassword:"+password+

"\nThebalance:"+balance;

if(connected)

retum(s+"\nThephoneisconnected");

else

retum(s+n\nThephoneisdisconnected");

)

)

第五章

习题:

1.什么是多态,多态有哪些方式?

答:多态性(Polymorphism来自希腊语,意思是多种形态)是指允许一个接口访问动作的通

用类的性质。一般地,多态性的概念常被解释为“一个接口,多种方法”。这意味着可以为

一组相关活动设计一个通用接口。多态性允许用相同接口规定一个通用类来减轻问题的复杂

度。选择适当的动作(方法)适应不同环境的工作则留给编译器去做。作为编程者,无需手工

去做这些事情,只需利用通用接口即可。

多态的特点大大提高了程序的抽象程度和简洁性,更重要的是,它最大限度地降低了类和程

序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以

很好地共同工作。这个优点对于程序的设计、开发和维护都有很大的好处.

2.什么是接口?

答:接口是用来组织应用中的各类并调用它们的相互关系的一种结构,是实现类间多重继承

功能的结构。

讲完成特定功能的若干属性组织成相对独立的属性集合,该属性集合就是接口,接口是用来

实现类间多重继承的功能的,接口定义的仅仅是实现某一定功能的一组供的对外接口和规

范,而并没有真正实现这个功能,真正实现在继承这个接口的各个类中完成,因而通常把接

口功能的继承成为“实现”。

3.根据下面的要求编程实现复数类ComplexNumber

(1)复数类ComplexNumber的属性

m_dRealPart:实部,代表复数的实数部分

m_dImaginPart:虚部,代表复数的虚数部分

(2)复数类ComplexNumber的方法

ComplexNumber()构造函数,将实部,虚部都置为0

ComplexNumber(doubler,doubleI)构造函数,创建复数对象的同时完成复

数的实部,虚部的初始化

GetRealPart()获取实部

GetImaginaryPart()获取虚部

SetRealPart(doubled)设置实部

SetImaginaryPart(doubled)设置虚部

ComplexAdd(ComplexNumberc)复数相加

ComplexAdd(doublec)复数相加

ComplexMinus(ComplexNumberc)复数相减

ComplexMinus(doublec)复数相减

ComplexMulti(ComplexNumberc)复数相乘

ComplexMulti(doublec)复数相乘

ToStringO把当前复数对象的实部,虚部组合成a+bi的字符串形式

答:publicclassTest

(

publicstaticvoidmain(Stringargs[])

(

ComplexNumbercNumber_l=

newComplexNumber©,-5);

ComplexNumber

cNumber_2=

newComplexNumber(2,2);

doubled=10.0;

System.out.prinlln(cNumber_l.toSlring()+"加1"

+cNumber_2.toString()+”

等于“

+cNumber_plexAdd(cNumber_2).toString());

System.out.println(cNumber_l.toString()+M力口”

+d+”等于n

+

cNumber_plexAdd(d).toString());

System.out.println();

System.out.println(cNumber_l.toString()+n减”

+cNumber_2.toString()+"

等于“

+cNumber_plexMinus(cNumber_2).toString());

System.out.println(cNumber_l.toString()+"减”

+d+”等于”

4-

cNumber_plexMinus(d).toString());

System.out.printlnO;

System.out.println(cNumber_l.toString()+"乘”

+cNumber_2.toString()+”

等于"

+cNumber_plexMulti(cNumber_2).toString());

System.out.println(cNumber_l.toString()+H乘”

+d+”等于”

+

cNumber_plexMulti(d).toString());

System.out.println();

System.out.println(cNumber_l.toString()+M除”

+cNumber_2.toString()+

“等于“

+cNumber_plexDivision(cNumber_2).toString());

System.out.println(cNumber_l.toString()+"除”

+d+”等于“

+

cNumber_plexDivision(d).toStringO);

)

)

class

ComplexNumber

(

〃域

privatedoublem_dRealPart;

privatedouble

m_dImaginPart;

〃构造方法

ComplexNumber()

(

m_dRealPart=0.0;

m_d!maginPart=0.0;

ComplexNumber(doublendoubiei)

m_dRealPart=r;

m_dImaginPart=i;

)

ComplexNumber(ComplexNumber

c)

(

m_dRealPart=c.getRealPart();

m_dImaginPart=

c.getImaginaryPart();

)

//get,set方法

doublegetRealPart()

(

returnm_dRealPart;

)

doublegetImaginaryPart()

(

return

m_dImaginPart;

)

voidsetRealPart(doubled)

(

m_dRealPart=

d;

)

voidsetImaginaryPart(doubled)

(

m_dImaginPart=

d;

)

〃复数运算方法

//加

ComplexNumbercomplexAdd(ComplexNumber

c)

(

returnnewComplexNumber(

this.m_dRealPart+

c.getRealPart(),

this.m_dImaginPart+

c.getImaginaryPart());

)

ComplexNumbercomplexAdd(doublec)

(

returnnewComplexNumber(

this.m_dRealPart+c,

this.m_dImaginPart);

)

〃减

ComplexNumbercomplexMinus(ComplexNumber

c)

(

returnnewComplexNumber(

this.m_dRealPart-

c.getRealPart(),

this.m_dImaginPart-

c.getImaginaryPart());

)

ComplexNumbercomplexMinus(doublec)

(

returnnewComplexNumber(

this.m_dRealPart-c,

this.m_dImaginPart);

)

〃乘

ComplexNumbercomplexMulti(ComplexNumber

c)

(

returnnewComplexNumber(

this.m_dRealPart*c.getRealPart()

-this.m_dImaginParl*c.getImaginaryPart(),

this.m_dRealPart*

c.getImaginaryPart()

+this.m_dImaginPart*

c.getRealPart());

)

ComplexNumbercomplexMulti(doub!ec)

(

return

newComplexNumber(

this.m_dRealPart*c,this.m_dImaginPart*

c);

)

//除

ComplexNumbercomplexDivision(ComplexNumberc){

return

newCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论