scau JAVA实验5:圆环类的数据封装及使用

实验5:圆环类的数据封装及使用
题目类别: 实验

关键字: 类、对象、封装

内容要求:

一、实验目的

(1)理解和掌握可见性修饰符,使用访问器和修改器对数据域进行封装。


(2)理解和掌握对象作为方法的参数和返回值。


二、实验内容

随堂实验1中的程序能够正常运行了,但是其中的Ring类的定义不是一个好的形式,因为它允许直接对过对象引用访问和修改圆环类的数据域,这样做使类难于维护并且不易调试。

本实验首先通过访问修饰符对其的数据域和方法进行修饰,使其成为一个结构更好的类。

步骤1:
目前Ring类中包含3个数据域、2个构造方法和相应的计算方法。
在该类的基础上定义一个新圆环类GoodRing,文件名命名为:GoodRing.java。
回答下面的问题,并按照问题答案重新编写、编译GoodRing类。
(1)构造方法名应该改为什么?用哪个可见性修饰符修饰构造方法比较合理?
(2)3个数据域应该用哪个可见性修饰符修饰?编写对应的访问器和修改器并使用恰当的访问性修饰符。
(3)计算方法应该用哪个可见性修饰符修饰比较合理?

步骤2:
参照TestRing.java编写GoodRing类的测试类程序TestGoodRing.java,编译并运行。
main方法中完成如下工作:
(1)创建一个GoodRing类的对象。
(2)输出该对象的半径、颜色、面积和周长。
(3)修改该对象的半径,重新输出半径、颜色、面积和周长。
编译并运行。


步骤3:

编写一个GoodRingUtil类,其中按下面要求定义static方法:

(1) createGoodRings方法,

形式参数为int,表示创建GoodRing类对象的个数;

返回值为 GoodRing[],存放生成的多个GoodRing类对象;

随机生成各个GoodRing对象的内外半径。

(2) totalArea方法,

形式参数为 GoodRing[],表示传入的数组;

返回值为double, 表示数组中所有GoodRing对象的面积之和。

(3) sort方法,

形式参数为 GoodRing[],表示传入的数组;

返回值为void

将数组中的GoodRing对象按面积从大到小排序。

(4) outputGoodRings方法,

形式参数为 GoodRing[],表示传入的数组;

返回值为void

输出数组中所有的GoodRing对象,包括内外半径、颜色和面积。每行输出一个GoodRing对象。



步骤4:

main方法中添加代码,调用GoodRingUtil类中的static方法完成如下工作:

(1)从键盘输入要创建的GoodRing对象的个数n;
(2)创建n个GoodRing对象的数组;
(3)输出n个GoodRing对象的面积之和;

(4)输出所有GoodRing对象;

(5)对数组进行排序;

(6)输出所有GoodRing对象;

编译并运行。


提交:打包为可以执行的JAR文档,其中要包含源程序文件。


GoodRing .java

package extend01;

//构造方法名应改为GoodRing,用public修饰符修饰构造方法比较合理
//3个数据域应该用private修饰符修饰
//计算方法应该用public修饰符修饰比较合理
public class GoodRing {
    private double innerRadius;
    private double outerRadius;
    private String fillColor;

    public GoodRing(double iRadius, double oRadius, String color) {
        innerRadius = iRadius;
        outerRadius = oRadius;
        fillColor = color;
    }

    public GoodRing() {
        innerRadius = 1;
        outerRadius = 2;
        fillColor = "WHITE";
    }

    public double getOuterRadius() {
        return outerRadius;
    }

    public double getInnerRadius() {
        return innerRadius;
    }

    public String getFillColor() {
        return fillColor;
    }

    public void changeOuterRadius(double outerRadius) {
        this.outerRadius = outerRadius;
    }

    public void changeInnerRadius(double innerRadius) {
        this.innerRadius = innerRadius;
    }

    public void changeFillColor(String fillColor) {
        this.fillColor = fillColor;
    }

    public double getArea() {
        return (outerRadius * outerRadius - innerRadius * innerRadius) * Math.PI;
    }

    public double getInnerLength() {
        return (2 * innerRadius) * Math.PI;
    }

    public double getOuterLength() {
        return (2 * outerRadius) * Math.PI;
    }
}

GoodRingUtil .java

package extend01;

import java.util.Random;
public class GoodRingUtil {
    public static GoodRing[] createGoodRings(int number){
        GoodRing[] RingArray = new GoodRing[number];
        Random random=new Random();
        for(int i=0;i<number;i++){
                RingArray[i]=new GoodRing();
                double a= random.nextDouble();
                RingArray[i].changeInnerRadius(a);
                RingArray[i].changeOuterRadius(a+5);
        }
        return RingArray;
    }
    public static double totalArea(GoodRing[] RingArray){
        double AreaSum=0;
        int i;
        for(i=0;i<RingArray.length;i++){
            //System.out.println(AreaSum);
            AreaSum=AreaSum+RingArray[i].getArea();
        }
        return AreaSum;
    }
    public static void sort(GoodRing[] RingArray){
        for (int i = 0; i < RingArray.length; i++) {
            for (int j = i + 1; j < RingArray.length; j++) {
                if (RingArray[j].getArea() < RingArray[i].getArea()) {
                    GoodRing tmp = RingArray[i];
                    RingArray[i] = RingArray[j];
                    RingArray[j] = tmp;
                }
            }
        }
    }
    public static void outputGoodRings(GoodRing[] RingArray){
        for (GoodRing goodRing : RingArray) {
            System.out.print(" 内圆半径:" + goodRing.getInnerRadius());
            System.out.print(" 外圆半径:" + goodRing.getOuterRadius());
            System.out.print(" 填充颜色:" + goodRing.getFillColor());
            System.out.println(" 环的面积:" + goodRing.getArea());
        }
    }
}

TestGoodRing.java

package extend01;
import java.util.Scanner;

public class TestGoodRing {
    public static void main(String[] args){
        GoodRing ring = new GoodRing ();
        Scanner reader = new Scanner(System.in);
        System.out.println("内圆半径:"+ring.getInnerRadius());
        System.out.println("外圆半径:"+ring.getOuterRadius());
        System.out.println("填充颜色:"+ring.getFillColor());
        System.out.println("环的面积:"+ring.getArea());
        System.out.println("内圆周长:"+ring.getInnerLength());
        System.out.println("外圆周长:"+ring.getOuterLength());
        System.out.print("请输入修改内径为:");
        ring.changeInnerRadius(reader.nextDouble());
        System.out.print("请输入修改外径为:");
        ring.changeOuterRadius(reader.nextDouble());
        System.out.println("内圆半径:"+ring.getInnerRadius());
        System.out.println("外圆半径:"+ring.getOuterRadius());
        System.out.println("填充颜色:"+ring.getFillColor());
        System.out.println("环的面积:"+ring.getArea());
        System.out.println("内圆周长:"+ring.getInnerLength());
        System.out.println("外圆周长:"+ring.getOuterLength());
        int number=0;
        System.out.print("请输入创建的GoodRing对象的个数n:");
        number=reader.nextInt();
        GoodRing[] RingArray=GoodRingUtil.createGoodRings(number);
        System.out.println("面积和:"+GoodRingUtil.totalArea(RingArray));
        GoodRingUtil.outputGoodRings(RingArray);
        System.out.println("---------------------------------");
        GoodRingUtil.sort(RingArray);
        GoodRingUtil.outputGoodRings(RingArray);
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SCAU综合实验课程中的文件操作与字符处理是一门非常重要的课程,它教授了如何使用计算机来操作文件以及对文件中的字符进行处理。 文件操作是指使用计算机来创建、打开、读取、写入、修改和关闭文件的过程。在实验中,我们学习了如何使用C++编程语言来实现这些文件操作。通过实践,我们可以掌握文件的基本操作,比如创建文件、打开已存在的文件、从文件中读取数据、向文件中写入数据和关闭文件等等。这些操作对于日常的文件处理工作非常有用。 字符处理是指对文件中的字符进行操作和处理的过程。我们学习了如何使用C++语言中的字符串和字符数组来对字符进行处理。通过实验,我们可以掌握字符串的创建、拼接、截取、替换和转换等操作。这些操作可以帮助我们更好地处理文件中的文本数据,比如查找特定的字符、计算字符串的长度、在字符串中查找子字符串等等。 此外,我们还学习了一些常见的文件操作和字符处理的应用,比如统计一个文件中的字符数、单词数和行数,将一个文件中的大写字母转换为小写字母,将一个文件中的所有空格替换为换行符等等。这些应用可以帮助我们更好地理解文件操作和字符处理的实际应用场景,并提高我们的实际操作能力。 综上所述,SCAU综合实验中的文件操作与字符处理课程是非常实用和重要的一门课程,它教授了我们使用计算机来操作文件和处理字符的技能和知识。通过学习这门课程,我们可以提高我们的实际操作能力,为以后的工作做好准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值