高级程序设计JAVA离线作业.docx

上传人:b****8 文档编号:11488749 上传时间:2023-03-01 格式:DOCX 页数:20 大小:20.88KB
下载 相关 举报
高级程序设计JAVA离线作业.docx_第1页
第1页 / 共20页
高级程序设计JAVA离线作业.docx_第2页
第2页 / 共20页
高级程序设计JAVA离线作业.docx_第3页
第3页 / 共20页
高级程序设计JAVA离线作业.docx_第4页
第4页 / 共20页
高级程序设计JAVA离线作业.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

高级程序设计JAVA离线作业.docx

《高级程序设计JAVA离线作业.docx》由会员分享,可在线阅读,更多相关《高级程序设计JAVA离线作业.docx(20页珍藏版)》请在冰豆网上搜索。

高级程序设计JAVA离线作业.docx

高级程序设计JAVA离线作业

浙江大学远程教育学院

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

姓名:

学号:

年级:

学习中心:

—————————————————————————————

第一章

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

答:

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

1)中心思想不同。

前者是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。

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

2)核心组成不同。

数据结构、算法是面向过程问题求解的核心组成。

对象、类与实体是对象问题求解的核心组成。

3)解决方法不同。

前者将现实世界的问题抽象成计算机可以理解和处理的数据结构,后者是要让计算机逻辑来模拟现实世界的物理存在,让计算机世界向现实世界靠拢。

 

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

答:

优点:

1)可重用性,一个软件项目中所开发的模块,能够不仅限于在这个项目中使用,而且可以重复地使用在其他项目中,从而在多个不同的系统中发挥作用。

2)可扩展性,对现代应用软件提出的又一个重要要求,即要求应用软件能够很方便、容易地进行扩充和修改,这种扩充和修改的范围不但涉及到软件的内容,也涉及到软件的形式和工作机制。

3)可扩展性,使得面向对象程序设计法特别适合于在快速原型的软件开发方法中使用,也体现它对模块化技术的更有效的支持。

4)可管理性,面向对象的开发方法采用内涵比过程和函数丰富、复杂得多的类作为构建系统的部件,使整个项目的组织更加合理、方便。

 

第二章

1.编写一个Java Application,利用JDK软件包中的工具编译并运行这个程序,在屏幕上输出“WelcometoJavaWorld!

”。

答:

程序如下:

publicclassEx2_3

{

publicstaticvoidmain(String[]args)

{

System.out.println("Welcomtojavavorld");

}

}

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

”的串信息。

答:

程序如下:

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.parseInt(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<=""p=""style="margin:

0px;padding:

0px;">

if(a%i==0)returnfalse;

returntrue;

}

}

 

2.编写一个Java程序,接受用户输入的一个1――12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应的月份的天数。

答:

程序如下:

importjava.util.Scanner;

publicclassxxx{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

Scannerscan=newScanner(System.in);

inti=scan.nextInt();

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

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

i=scan.nextInt();

}

switch(i)

{

case1:

System.out.println("本月有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.println("本月有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)错误,标识符中不能使用符号“-”。

(1)

(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.toString());

}

}

classPhoneCard

{

PhoneCard

longcardNumber;

privateintpassword;

doublebalance;

StringconnectNumber;

booleanconnected;

PhoneCard(longcn,intpw,doubleb,Strings)

{

cardNumber=cn;

password=pw;

if(b>0)

balance=b;

else

System.exit

(1);

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;

}

publicStringtoString()

{

Strings="ConnectedPhoneNumber:

"+connectNumber+

"\nCardNumber:

"+cardNumber+

"\nCardPassword:

"+password+

"\nThebalance:

"+balance;

if(connected)

return(s+"\nThephoneisconnected");

else

return(s+"\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) 复数相乘

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

答:

publicclassTest

{

publicstaticvoidmain(Stringargs[])

{

ComplexNumbercNumber_1=

newComplexNumber(3,-5);

ComplexNumber

cNumber_2=

newComplexNumber(2,2);

doubled=10.0;

System.out.println(cNumber_1.toString()+"加"

+cNumber_2.toString()+"

等于"

+cNumber_plexAdd(cNumber_2).toString());

System.out.println(cNumber_1.toString()+"加"

+d+"等于"

+

cNumber_plexAdd(d).toString());

System.out.println();

System.out.println(cNumber_1.toString()+"减"

+cNumber_2.toString()+"

等于"

+cNumber_plexMinus(cNumber_2).toString());

System.out.println(cNumber_1.toString()+"减"

+d+"等于"

+

cNumber_plexMinus(d).toString());

System.out.println();

System.out.println(cNumber_1.toString()+"乘"

+cNumber_2.toString()+"

等于"

+cNumber_plexMulti(cNumber_2).toString());

System.out.println(cNumber_1.toString()+"乘"

+d+"等于"

+

cNumber_plexMulti(d).toString());

System.out.println();

System.out.println(cNumber_1.toString()+"除"

+cNumber_2.toString()+

"等于"

+cNumber_plexDivision(cNumber_2).toString());

System.out.println(cNumber_1.toString()+"除"

+d+"等于"

+

cNumber_plexDivision(d).toString());

}

}

class

ComplexNumber

{

//域

privatedoublem_dRealPart;

privatedouble

m_dImaginPart;

//构造方法

ComplexNumber()

{

m_dRealPart=0.0;

m_dImaginPart=0.0;

}

ComplexNumber(doubler,doublei)

{

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_dImaginPart*c.getImaginaryPart(),

this.m_dRealPart*

c.getImaginaryPart()

+this.m_dImaginPart*

c.getRealPart());

}

ComplexNumbercomplexMulti(doublec)

{

return

newComplexNumber(

this.m_dRealPart*c,this.m_dImaginPart*

c);

}

//除

ComplexNumbercomplexDivision(ComplexNumberc){

return

newComplexNumber((this.m_dRealPart*c.getRealPart()

+this.m_dImaginPart*c.getImaginaryPart())

/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart()),

(this.m_dImaginPart*c.getRealPart()

-this.m_dRealPart*c.getImaginaryPart())

/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart()));

}

ComplexNumbercomplexDivision(doublec){

returnnew

ComplexNumber(this.m_dRealPart/c,this.m_dImaginPart/c);

}

//toString()

public

StringtoString()

{

return"("+m_dRealPart+"+"

+

m_dImaginPart+"i"+")";

}

}

第六章

1.编写一个程序,要求能完成排序和查找,分别使用链表,数组和二叉树等数

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

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1