●基本要求:
(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);
}
}