1、郑州大学现代远程教育《JAVA程序设计》 课程考核要求 说明:本课程考核形式为提交作业,完成后请保存为WORD 2003格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。 一. 作业要求 1.请独立自主完成作业。 二. 作业内容 1. 简答题 1) 描述面向对象的三个重要特性(封装性、继承性、多态性)。 答: 1.封装性:封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用
2、程序修改带来的影响减少到最低限度。 2.继承性:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。继承性很好的解决了软件的可重用性问题。 3. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
3、2) 描述java的流的分类以及相应的基类。 答: 1.根据数据流动的方向,可分为输入流和输出流。 输入流:只能从中读取数据,而不能向其写出数据 输出流:只能向其写出数据,而不能从中读取数据 2.根据处理数据的单位划分,可分为字符流和字节流 字节流:以字节为单位进行数据传输,每次传送一个或多个字节 字符流:以Unicode字符为单位进行数据传输,每次传送一个或多个字符 3.根据数据流所关联的是数据源还是其他数据流,可分为节点流和处理流。节点流:直接从指定的位置(如磁盘文件或内存区域)读或写;处理流:对一个巳存在的流的连接和封装,通过对所封装的流的功能调用实现数据的读/写功能,处
4、理流并不直接连接到数据流。 java 中所有的I/O流都基于四个基类: 输入流:InputStream ,Reader 输出流: OutputStream,Writer InputStream 和 OutputStream是面向字节的,Reader和Writer是面向Unicode字符的。 从字节流到字符流的转换: 例如:InputStream istream = new FileInputStream("C:/temp.txt"); InputStreamReader isr = new InputStreamReader(istream)
5、 同理,从字符流到字节流的转换: 从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[]。 3) 举例说明监听器方式的事件处理机制。 答: Java事件处理机制- 事件监听器的四种实现方式 : 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: Java代码 复制代码 收藏代码 import javax.swing.*; import java.awt.*; import java.awt.ev
6、ent.*; /** *Java事件处理机制:自身类作为事件监听器 *@author) *@version 2008-12-3 */ class ThisClassEvent extends JFrame implements ActionListener{ JButton btn; public ThisClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout());
7、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /*********************************
8、/ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } /**************************************/ public static void main(String args[]){ new ThisClassEvent(); } }
9、 import javax.swing.*; import java.awt.*; import java.awt.event.*; /** *Java事件处理机制:自身类作为事件监听器 *@author) *@version 2008-12-3 */ class ThisClassEvent extends JFrame implements ActionListener{ JButton btn; public ThisClassEvent(){ super("Java事件监听机制");
10、 setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /************************
11、/ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } /**************************************/ public static void main(String args[]){ new ThisClassEvent(); } } 外部类作为事件监听器:
12、 Java代码 复制代码 收藏代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; /** *Java事件处理机制:外部类作为事件监听器 *@author) *@version 2008-12-3 */ class OuterClassEvent extends JFrame{ JButton btn; public OuterClassEvent(){ super
13、"Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(new OuterClass(this)); getContentPane().add(btn); setBounds(200,200,300,160);
14、 setVisible(true); } public static void main(String args[]){ new OuterClassEvent(); } } /*外部类*********************************/ class OuterClass implements ActionListener{ OuterClassEvent oce; public OuterClass(OuterC
15、lassEvent oce){ this.oce = oce; } public void actionPerformed(ActionEvent e){ Container c=oce.getContentPane(); c.setBackground(Color.red); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; /** *Java事
16、件处理机制:外部类作为事件监听器 *@author) *@version 2008-12-3 */ class OuterClassEvent extends JFrame{ JButton btn; public OuterClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton(
17、"点击"); btn.addActionListener(new OuterClass(this)); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } public static void main(String args[]){ new OuterClassEvent(); } } /*外部类********************************
18、/ class OuterClass implements ActionListener{ OuterClassEvent oce; public OuterClass(OuterClassEvent oce){ this.oce = oce; } public void actionPerformed(ActionEvent e){ Container c=oce.getContentPane(); c.setBackground(Color.red); } } 匿
19、名内部类作为事件监听器: Java代码 复制代码 收藏代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; /** *Java事件处理机制:匿名内部类作为事件监听器 *@author) *@version 2008-12-3 */ class AnonymousEvent extends JFrame{ JButton btn; public AnonymousEvent(){
20、 super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); /*匿名内部类******************************/ btn.addActionListener( new ActionListener(){
21、 public void actionPerformed(ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } } ); /***************************************/ getContentPane().ad
22、d(btn); setBounds(200,200,300,160); setVisible(true); } public static void main(String args[]){ new AnonymousEvent(); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; /** *Java事件处理机制:匿名内部类作为事件监听
23、器 *@author) *@version 2008-12-3 */ class AnonymousEvent extends JFrame{ JButton btn; public AnonymousEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); /
24、匿名内部类******************************/ btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } }
25、 ); /***************************************/ getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } public static void main(String args[]){ new AnonymousEvent(); } } 内部类作为事件监听器: Java代码 复制代码 收藏代码 im
26、port java.awt.*; import java.awt.event.*; import javax.swing.*; /** *Java事件处理机制:内部类作为事件监听器 *@author) *@version 2008-12-3 */ class InnerClassEvent extends JFrame{ JButton btn; public InnerClassEvent(){ super("Java事件监听机制");
27、 setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(new InnerClass()); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true);
28、 } /*内部类*********************************/ class InnerClass implements ActionListener{ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } } /**********
29、/ public static void main(String args[]){ new InnerClassEvent(); } } 2. 读程序题 1) 程序Person,要求注释带标号1,2,3,4等的句子 ,并给出程序的运行结果。 class Person{//1. 定义Person 类 int age; public Person(){ } //2. 空的构造方法 public Person(int age){ t
30、his.age = age //3. 实例化对象,当创建出来一个对象,那么这个对象age属性就等于形参age } void shout(){ //4. Shout是类的才成员方法 System.out.println(“oh,my god! I am “ + age); } } 答:由于this.age = age后面没有分号,所以此程序运行的结果是: 编译出错 2) 读下面程序,并分析出程序运行结果。 public class String1 { public static void main(String[] args) { cha
31、r aChar = 't'; // 声明一个char类型变量,变量名为aChar,并对其赋值't' if (Character.isUpperCase(aChar)){ //判断aChar是否为大写字母 System.out.println ("The character "+ aChar+ "is upper case.");// 如果是大写字母,输出此字符串 }else{ System.out.println ("The character" + aChar+ "is lower case."); // 如果不是大写字母,输出此字符串
32、 } } } 答:运行结果:因为t是个小写字母,所以输出结果为: The characteris lower case. 3) 读下面程序,写出程序的主要功能。 import java.io.*; public class StandardIO{ public static void main(String[] args){ String s; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Pleas
33、e input : "); try{ s = in.readLine(); while(!s.equals("exit")){ System.out.println(" read: "+s); s = in.readLine(); } System.out.println("End of Inputing."); in.close(); }catch(IOException e){ e.printStackTrace(); } } } 答: 用BufferedReader将
34、数据嵌套在输入流中,然后从用户标端(标准输入端)进行读入,读完后,将读入的内容逐步读出,再进行判断,并显示在屏幕上。 3.程序设计题目(要求适当加上程序注释。) 1) 用while预计复制字符串copyFromMe到字符串copyToMe中。 答: public class String3 { public static void main(String[] args) { String copyFromMe = “Copy this string until you encounter StringBuffer copyToMe = new StringBuffer();
35、 int i = 0; char c = copyFromMe.charAt(i); while (c != ‘g’) { copyToMe.append(c); c = copyFromMe.charAt(++i); } System.out.println(copyToMe) } } 2) 编写程序片段,定义表示课程的类Course。课程的属性包括课名、编号、先修课号;方法包括设置课程名、设置编号以及获取课程名、获取编号。创建Course类的对象,设置并打印输出该对象的课程名、编号。(要求:写3个重载的构造方法)。 答: public class
36、course { public String Classname;// 课程名 public int num;// 编号 public String FirstClass;// 先修课程名 public int Fnum;// 先修课程编号 public String getClassname() { return Classname; } public void setClassname(String classname) { Classname = classname; } public int getNum() { return num; } publi
37、c void setNum(int num) { this.num = num; } public String getFirstClass() { return FirstClass; } public void setFirstClass(String firstClass) { FirstClass = firstClass; } public int getFnum() { return Fnum; } public void setFnum(int fnum) { Fnum = fnum; } } public class Cource {
38、protected String cNumber;
protected String cName;
protected int cUnit;
public Cource(String cNumber,String cName,int cUnit)
{ this.cName=cName;
this.cNumber=cNumber;
this.cUnit=cUnit; }
public void setNumber(String number)
{cNumber=number;
}
public void setName(String name)
{cNa
39、me=name; } public void setUnit(int unit) { cUnit=unit; } public String getNumber() {return cNumber; } public String getName() {return cName;} public int getUnit() {return cUnit;} public void printCourceInfo() { System.out.println("学科编号:"+cNumber); System.out.println("学科名称:"+cName); System.out.printl
40、n("学科学分:"+cUnit); } } package javaapplication4; public class Main { public static void main(String[] args) { Cource java=new Cource("070401","java程序设计",4); java.printCourceInfo(); } } 3) 编写Applet,在坐标(25,25)处显示一个字符串“我是一个Applet程序”。 答: import java.awt.*; import java.applet.*; public class HelloEducationApplet extends Applet{ //给这个类取名为HelloEducation public void paint(Graphics g){ //paint( )方法是类Applet的一个成员方法 g.drawString(“我是一个Applet程序”,25,25); //在坐标为(25,25)的位置显示字符串“我是一个Applet程序” } }






