实验3 封装性、继承性与包(Circle类的子类ColoredCircle类)

●基本要求:
(1) 创建项目“Java实验”,将实验一、实验二源代码分别复制到“实验1”、“实验2”包中,并合理设置实验2中的属性、方法的private、protected、public等访问权限修饰符;
(2) 在“实验3”包中编写颜色类“实验3.Color”,其实现要求包括:
l 包含三个颜色分量red、green和blue(取值范围为0-255);
l 构造方法Color()和Color(int r,int g,int b)
l 设置颜色值方法
void setRed(int v)
void setGreen(int v)
void setBlue(int v)
l 获取颜色值方法
int getRed()
int getGreen()
int getBlue()
(3) 编写“实验2.Circle”类的子类“实验3.ColoredCircle”类,该类的圆心、半径等属性均使用Circle中的定义。其余实现要求包括:
l 表示圆周颜色的Color类对象borderColor和圆心颜色对象centerColorl 至少定义如下几个ColoredCircle构造方法:
ColoredCirle():将半径赋为0,将圆心赋为(0,0)点,将两个颜色赋为Color(0,0,0)对象
ColoredCirle(Point center,int radius):半径为radius,圆心为center,颜色为(0,0,0)
ColoredCirle(Color centerColor,Color borderColor):半径为0,圆心为(0,0)点,颜色分别为centerColor和borderColor² ColoredCirle(Point center, int radius, Color centerColor,Color borderColor)l 设置颜色方法:
void setCenterColor(Color c)² void setBorderColor(Color c)
l 获取颜色方法:
Color getCenterColor()
Color getBorderColor()
l 重新定义的relation(Circle c)方法(方法覆盖)
(4) 在“实验3”包中编写测试ColoredCircle类的测试类Test,并在该类的main方法中调用ColoredCircle类的如下方法,输出返回值(如有必要),以验证其正确性:
l 所有构造方法l 计算周长的perimeter()方法
l 计算面积的area()方法
l 所有设置和获取颜色值的方法
l 判断两个ColoredCircle对象的关系的方法relation()

package Experiment3;

public class Color {
        private  int red,green,blue;
        public Color(){
            red = 0;
            green = 0;
            blue = 0;
        }
        public Color(int red,int green,int blue){
            this.red = red;
            this.green = green;
            this.blue = blue;
        }

    public void setRed(int red) {
        this.red = red;
    }

    public void setGreen(int green) {
        this.green = green;
    }

    public void setBlue(int blue) {
        this.blue = blue;
    }

    public int getRed() {
        return red;
    }

    public int getGreen() {
        return green;
    }

    public int getBlue() {
        return blue;
    }
}
package Experiment3;

public class ColorCircle extends Circle {

    public Color borderColor;
    public Color centerColor;

    public ColorCircle(){

        super();
        borderColor = new Color(1,1,1);
        centerColor = new Color(1,1,1);
    }
    public ColorCircle(Point center,int radius){
        this.radius = radius;
        this.center = center;
        borderColor = new Color(0,0,0);
        centerColor = new Color(0,0,0);
    }
    public ColorCircle(Color centerColor,Color borderColor){
        super();
        this.centerColor = centerColor;
        this.borderColor = borderColor;
    }
    public ColorCircle(Point center,int radius,Color centerColor,Color borderColor){
        this.center = center;
        this.radius = radius;
        this.centerColor = centerColor;
        this.borderColor = borderColor;
    }
    public void setCenterColor(Color centerColor){
        this.centerColor = centerColor;
    }

    public void setBorderColor(Color borderColor) {
        this.borderColor = borderColor;
    }

    public Color getCenterColor() {
        return centerColor;
    }

    public Color getBorderColor() {
        return borderColor;
    }
    public int relation(ColorCircle c){
        int i = super.relation(c);
        if(i == 0){
            if(this.borderColor.getRed() == c.borderColor.getRed() && this.borderColor.getGreen() == c.borderColor.getGreen() && this.borderColor.getBlue() == c.borderColor.getBlue() )
                return 0;
            else
                return 1;
        }
        else
            return 0;
    }
}
package Experiment3;

import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Point p1,p2;
        int r1,r2;
        System.out.println("请输入圆1的圆心及半径:");
        Scanner input = new Scanner(System.in);
        p1 = new Point();
        p1.setX(input.nextInt());
        p1.setY(input.nextInt());
        r1 = input.nextInt();
        System.out.println("请输入圆2的圆心及半径:");
        Scanner input1 = new Scanner(System.in);
        p2= new Point();
        p2.setX(input1.nextInt());
        p2.setY(input1.nextInt());
        r2 = input1.nextInt();
        System.out.println("("+p1.getX()+","+p1.getY()+")-->("+p2.getX()+","+p2.getY()+")="+p1.distance(p2));

        System.out.println("圆1的边框颜色:");
        Color bc1 = new Color(input.nextInt(),input.nextInt(),input.nextInt());
        System.out.println("圆1的圆心颜色:");
        Color cc1 = new Color(input.nextInt(),input.nextInt(),input.nextInt());
        ColorCircle c1 = new ColorCircle(p1,r1);
        c1.setBorderColor(bc1);
        c1.setCenterColor(cc1);
        System.out.println("圆1的周长:"+c1.perimeter());
        System.out.println("圆1的面积:"+c1.area());

        System.out.println("圆2的边框颜色:");
        Color bc2 = new Color(input.nextInt(),input.nextInt(),input.nextInt());
        System.out.println("圆2的圆心颜色:");
        Color cc2 = new Color(input.nextInt(),input.nextInt(),input.nextInt());
        ColorCircle c2 = new ColorCircle(p2,r2);
        c2.setBorderColor(bc2);
        c2.setCenterColor(cc2);
        System.out.println("圆2的周长:"+c2.perimeter());
        System.out.println("圆2的面积:"+c2.area());
        c1.relation(c2);
    }
}
  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值