《面向对象设计(二)》由会员分享,可在线阅读,更多相关《面向对象设计(二)(8页珍藏版)》请在金锄头文库上搜索。
1、实验报告实验序号: 11 实验项目名称:面向对象设计(二)学 号 姓 名 专业、班实验地点 指导教师 实验时间一、实验目的理解并掌握接口的使用方法理解并掌握类中方法的定义二、实验条件硬件要求: CPU PII 以上, 64M 内存, 100M 硬盘空间。软件要求: Windows98/Me/XP/NT/2000 , IE 5 以上。开发环境: JDK1.6.0_10, NotePad 或者 EditPlus 。三、实验内容与步骤Using the Comparable Interface 1. 编写一个类, 名为 Compare3, 该类提供一个静态方法 largest。 该方法包含 3 个
2、Comparable类型的参数,返回其中的一个最大值(因此,该类的返回类型也应该是 Comparable) 。compareTo 方法属于 Comparable 接口,因此 largest 方法可以使用 compareTo 方法来对他们进行比较。2. 编写一个类,名为 Comparisons,该类的主方法用于测试你上面的 largest 方法。1) 首先提示用户读入三个字符串对象,使用 largest 方法返回三个字符串中的最大值,然后打印结果。 (可以直接将调用放入 largest 方法中,并打印) 。注意:由于 largest 是一个静态方法,你应该通过类名来调用,比如: Compare3
3、.largest(var1, var2,var3) 。2) 修改程序,提示用户输入 3 个整数,并使用 largest 方法找到其中的最大值 (Jdk1.5 以上版本提供了 autoboxing 机制,将 int 自动转换为 Integer 类型 ) 。(1)实验运行结果:Compare3程序代码:public class Compare3 public static Comparable largest(Comparable obj1,Comparable obj2,Comparable obj3) if(pareTo(obj2)0) obj1=obj2; if(pareTo(obj3)0)
4、 obj1=obj3; return obj1; 或:public class Compare3 implements Comparable private String compare = ; public Compare3(String com) pare = com; public static Comparable largest(Comparable obj1,Comparable obj2,Comparable obj3) if(pareTo(obj2)0) obj1=obj2; if(pareTo(obj3)0) obj1=obj3; return obj1; public in
5、t compareTo(Object obj) int num1 = .equals(compare)?0:Integer.parseInt(compare); int num2 = .equals(String)obj)?0:Integer.parseInt(String)obj); return num1 - num2; Comparisons程序代码:import java.util.Scanner; public class Comparisons public static void main(String args) Comparable obj1,obj2,obj3; Scann
6、er scan = new Scanner(System.in); System.out.println(please input three Strings:); obj1=scan.next(); obj2=scan.next(); obj3=scan.next(); System.out.println(The largest is: + Compare3.largest(obj1,obj2,obj3); ( 2)实验运行结果:修改后的 Comparisons代码:import java.util.Scanner; public class Comparisons public stat
7、ic void main(String args) Comparable obj1,obj2,obj3; Scanner scan = new Scanner(System.in); System.out.println(please input three Integer:); obj1=scan.nextInt(); obj2=scan.nextInt(); obj3=scan.nextInt(); System.out.println(The largest is: + Compare3.largest(obj1,obj2,obj3); A Modified MiniQuiz Class
8、 参考教材例 6.8-6.10 的 Question.java, Complexity.java 和 MiniQuiz.java ,这些类展示了Complexity 接口的使用方法;类 Question 实现了这个接口,然后类 MiniQuiz 创建两个Question 对象,并使用他们给用户提供简短的问卷。将这三个文件保存至本地磁盘路径下,仔细阅读。注意一旦创建 Question 对象,相同的代码会出现两次。 第一次询问问题并对第一题打分, 第二次再次提问并对第二题打分。 另外一种方法是,编写一个 askQuestion 方法,完成上述工作,比如提问,获取用户输入,确定用户输入是否正确。 你
9、只需要简单的调用两次这个方法, 第一次提问 q1, 第二次提问 q2。修改 MiniQuiz 类,添加 askQuestion 方法,替换 main 方法中的代码,将提问和打分替换为两个 askQuestions 方法。注意以下问题:1) askQuesiton 方法的定义要在类 MiniQuiz 之内,并在 main 方法之后。2) 由于 main 方法是静态类型, askQuestion 方法也应该是静态的, 要被声明为 private 类型。因此 askQuestion 方法的方法头为:private static void askQuestion(Question quesiton)
10、3) main 方法中的字符串 possible 要被声明在 askQuestion 方法中;4) Scanner对象要被变更为一个静态实例变量,以便于与 askQuestion 方法共享该变量。5) 不需要对 Question.java 和 Complexity.java 做任何改动。实验运行结果:Mini 程序代码 :/* / MiniQuiz.java / / Demonstrates the use of a class that inplments an interface /* import java.util.Scanner; public class MiniQuiz /- /
11、 Presents a short quiz. /- public static void main(String args) Question q1,q2,q3; q1= new Question(What is the capital of Jamaica?,Kingston); q1.setComplexity(4); q2= new Question(Which is worse,ignorance or apathy?, I dont konw and I dont care); q2.setComplexity(10); q3= new Question(Who are you?,
12、me); q3.setComplexity(1); askQuestion(q1); askQuestion(q2); askQuestion(q3); private static void askQuestion(Question question) String possible; Scanner scan = new Scanner(System.in); System.out.print(question.getQuestion(); System.out.println(Level: + question.getComplexity() + ); System.out.println(please input your answer:); possible = scan.nextLine(); if(question.answerCorrect(possible) System.out.println(Correct); else System.out.println(No,the answer is: +question.getAnswer(); 四、分析与讨论五、教师评语签名:日期:成绩