西南大学2014年《面向对象程序设计》第六次作业及答案

更新时间:2023-11-22 23:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

请按下面的要求编写程序。

(1)定义一个接口Shapes,它至少包含一个可以计算面积的成员方法。 (2)编写实现该Shapes接口的两个类:正方形类和圆形类。 (3)编写一个具有泛型特点的类Map,要求该类可以在控制台窗口输出某种图形的面积,而且这个类的类型变量所对应的实际类型就是(2)编写的正方形类和圆形类。 (4)利用具有泛型特点的类Map在控制台窗口分别输出给定边长的正方形的面积和给定半径的圆的面积。 参考:

// 定义接口

inte**ce Shapes {

abstract double getArea(); }

// 定义Square类

class Square implements Shapes { public double edge;

public Square(double edge) { this.edge = edge; }

public double getArea() { return (edge * edge); } }

// 定义Circle类

class Circle implements Shapes { public double radius;

public Circle(double radius) { this.radius = radius; }

public double getArea() {

return (radius * radius * Math.PI); } }

class Map { // 使用泛型T,T应当是Shapes的子类 T t;

public Map(T t) { this.t = t; }

public double getArea() { return t.getArea(); } }

// 测试程序 class Test {

public static void main(String[] args) {

Map m1 = new Map(new Square(15.0));

System.out.println(\正方形的面积是: \ Map m2 = new Map(new Circle(15.0));

System.out.println(\圆形的面积是: \} }

问题:

编写一个简单的乘法器,界面如下图所示,在第一个文本框中输入第一个乘数;在第二个文本框中输入第二个乘数;当单击“=”按钮时,在第三个文本框中输出其乘积。 参考:

// import语句

import javax.swing.*; import java.awt.*;

import java.awt.event.*;

public class Multiply extends JFrame implements ActionListener{ // 组件声明及创建

private JButton operator = new JButton(\ private JTextField input1 = new JTextField(5); private JTextField input2 = new JTextField(5); private JButton equal = new JButton(\ private JTextField result = new JTextField(5);

// 添加组件

public Multiply () {

Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(input1); c.add(operator); c.add(input2); c.add(equal); c.add(result);

equal.addActionListener(this); }

// 处理按钮动作事件

public void actionPerformed(ActionEvent e) {

double operand1 = Double.valueOf(input1.getText()).doubleValue(); double operand2 = Double.valueOf(input2.getText()).doubleValue(); result.setText(String.valueOf(operand1*operand2)); }

// 设置框架属性

public static void main(String args[ ]) { Multiply f = new Multiply();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(320, 80); f.setVisible(true); } }

题目:

请设计一个软件包。要求该软件包至少拥有正方形类、圆类。要求每个类都具有构造方法、计算该图形的周长的成员方法和计算该图形的面积的成员方法。然后编写一个测试程序,分别创建这些类的实例对象,并输出这些实例对象的周长和面积。在创建这些实例对象时,构造方法的调用参数值分别是:

正方形:左上定点的坐标为(5,10),边长为15。 圆形:圆心的坐标为(0,0),圆心为15。

参考:

inte**ce Shapes { abstract double getArea(); abstract double getPerimeter(); }

// 定义接口

class Square implements Shapes { // 定义Square类 public int x, y;

public int width, height; public double getArea() {

return (width * height); }

public double getPerimeter() {

return (2 * width + 2 * height); }

public Square(int x, int y, int width, int height) { this.x = x; this.y = y;

this.width = width; this.height = height; } }

class Circle implements Shapes { // 定义Circle类 public int x, y;

public double radius; public double getArea() {

return (radius * radius * Math.PI); }

public double getPerimeter() {

return (2 * Math.PI * radius); }

public Circle(int x, int y, double r) { this.x = x; this.y = y; this.radius = r; } }

public class TestShape { // 测试程序 public static void main(String[] args) {

Shapes s1 = new Square(5, 10, 15, 15); Shapes s2 = new Circle(0, 0, 6.0);

System.out.println(\正方形的面积是: \

System.out.println(\正方形的周长是: \ System.out.println(\圆形的面积是: \

System.out.println(\圆形的周长是: \ } }

题目:

编写一个程序,要求随机生成61个学生的成绩(从0到100的整数),在将成绩排序(由高到低)后保存到文件“score.txt”中。 参考:

import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class TestSort {

public static int MAXSIZE = 61;

public static void sortInt(int[] arr) { // 采用选择法对一维数组进行排序 for (int i = 0; i < arr.length - 1; i++) { int k = i;

for (int j = i + 1; j < arr.length; j++) if (arr[j] < arr[k])

k = j; // 用k记录最小值的下标 if (k > i) { // 在外循环中实施交换 arr[i] = arr[i] + arr[k];

arr[k] = arr[i] - arr[k]; arr[i] = arr[i] - arr[k]; } } }

public static void main(String args[]) { int score[] = new int[MAXSIZE]; try {

for (int i = 0; i < MAXSIZE; i++)

score[i] = (int) (Math.random() * 100 + 0.5); sortInt(score);

DataOutputStream dout = new DataOutputStream( new FileOutputStream(\ for (int i = 0; i < MAXSIZE; i++) { dout.writeInt(score[i]);

System.out.println(score[i]); }

dout.close();

// 结果保存到文件 } catch (IOException e) {

System.err.println(\发生异常:\ e.printStackTrace(); }

// try-catch结构处理异常 } }

编程:在命令行中以树状结构展现给定的文件夹及其子文件(夹)中的文件。测试文件夹为C:\\Windows,层次用缩进4个空格表示。

答:

import java.io.*;

public class FileList {

public static void main(String[] args) {

File f = new File(\ listFiles(f,0); }

static void listFiles(File f, int level) { String preStr = \

for(int i=0; i

System.out.println(preStr + f.getName());

File[] files = f.listFiles(); 点

for (int i=0; i

System.out.println(preStr + \ }

if (files[i].isDirectory()) {

listFiles(files[i], level + 1); } } } }

// 先序遍历 // 取出所有儿子节 \

编程:在命令行中以树状结构展现给定的文件夹及其子文件(夹)中的文件。测试文件夹为C:\\Windows,层次用缩进4个空格表示。

答:

import java.io.*;

public class FileList {

public static void main(String[] args) {

File f = new File(\ listFiles(f,0); }

static void listFiles(File f, int level) { String preStr = \

for(int i=0; i

System.out.println(preStr + f.getName());

File[] files = f.listFiles(); 点

for (int i=0; i

System.out.println(preStr + \ }

if (files[i].isDirectory()) {

listFiles(files[i], level + 1); } } } }

// 先序遍历 // 取出所有儿子节 \

本文来源:https://www.bwwdw.com/article/nvgv.html

Top