Java实践课程实验(2009岁末整理)
面向对象原理与Java
实践课程实验代码及报告
实验
1
:对象和类
实验内容:
1
、尝试两人合作编写程序,加深对方法的接口与实现的理解。其中一人负责编写方法
isPrime()
,用于判断一个给定的正整数是否素数,另一个人负责编写主方法
main()
,利用
isPrime()
验证著名的哥德巴赫猜想:任何比
2
大的偶数都可表示为两个素数之和。(提示:验证必须有上界,程序未调试成功之前应先选择一个较小的上界,调试成功后再换成较大的上界。上界可由用户输入,否则应定义为一个符号常量。)
2
、设计一个简单的日期类
Date
,然后编写一个主程序演示该类的用法。(提示:一个日期至少具有年、月、日等属性,其行为有初始化、修改日期、返回描述日期的字符串、返回该日期的年、月、日等。)
3
、试设计一个带有四则运算的复数类,并编写主程序演示其用法。(提示:一个复数
Complex
由两部分组成:实部
realPart
和虚部
imaginaryPart
,两个复数可进行加、减、乘、除四则运算。)
实验
2
:继承与接口
实验内容:
1
、假定要为某个公司编写雇员工资支付程序。这个公司有各种类型的雇员,不同类型的雇员按不同的方式支付工资:经理(
Manager
)每月获得一份固定的工资;销售人员(
Salesman
)在基本工资的基础上每月还有销售提成;一般工人(
Worker
)则按他每月工作的天数计算工资。
(提示:设计一个抽象类――雇员(
Employee
)描述雇员的共同特性,例如姓名(
name
)等。这个类还应提供一个计算工资的抽象方法
computeSalary()
,使得可以通过为个类计算所有雇员的工资。
设计经理(
Manager
)类、销售人员(
Salesman
)类、一般工人(
Worker
)类,再设计一个演示用的类。)
2
、在前面的基础上对雇员工资计算程序进行扩充,即将一般雇员再细分为计时雇员(
DailyWorker
)和计件雇员(
PieceWorker
)两类,计时雇员按天计算工资额,而计件雇员按其生产的产品件数计算工资额。(提示:设计这两个类,与前面的程序结合在一起,修改一下演示程序,演示这些类的用法。)
3
、在程序包
packageOne
中编写至少含一个方法的公有接口
InterfaceOne
。在程序包
packageTwo
中定义公有类
SuperClass
,该类含有一个受保护的内部类
InnerClass
,这个类实现接口
InterfaceOne
。在程序包
packageThree
中定义公有类
SubClass
继承
SuperClass
相关文档:
1、Timer介绍
建立任务:使用Timer调度的任务应该继承TimerTask抽象类,该类实现Runnable接口,因些具备多线程的能力,实现该接口的run方法,该方法是需要高度的任务执行体。
调度任务:调度任务通过Timer类完成,调度任务通过schedul方法完成,查一下java doc文档:
Java代码
void schedule(TimerTask task, Date tim ......
写了个简单的测试代码,测试了JAVA的时间更新单元,发现currentTimeMillis的更新周期大约是15或16ms,所以精度也就在15ms-16ms,低于15ms的时间是无法测量出来的。而nanoTime的更新周期大约在800-1200纳秒左右,因此低于 800ns的时间无法测量出来。代码如下:
public class JavaTimeWinTest
{
public static void main ......
......
......
2009年最后一博:关于 Java 中对象的复制
Java 中的赋值操作符与 C++ 中的不一样。在 C++ 中,这条语句:bc2 = bc1;将一个名为 bc1 的对象的所有数据都拷贝到名为 bc2 的对象中。也就是说这条语句执行后,程序中有两个含有相同数据的对象。然而在 Java 中,这条相同的赋值语句 ......